Retriever

This module contains functionality related to the the retriever module for augmentation.components.retrievers.basic.

Retriever

BasicRetrieverFactory

Bases: Factory

Factory class for creating VectorIndexRetriever instances.

This factory implements the Factory design pattern to create a basic retriever component that uses vector similarity search to retrieve relevant context from a vector store.

Source code in src/augmentation/components/retrievers/basic/retriever.py
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
class BasicRetrieverFactory(Factory):
    """
    Factory class for creating VectorIndexRetriever instances.

    This factory implements the Factory design pattern to create a basic retriever
    component that uses vector similarity search to retrieve relevant context
    from a vector store.
    """

    _configuration_class: Type = AugmentationConfiguration

    @classmethod
    def _create_instance(
        cls, configuration: AugmentationConfiguration
    ) -> VectorIndexRetriever:
        """
        Creates a VectorIndexRetriever instance based on the provided configuration.

        This method:
        1. Initializes the vector store from configuration
        2. Creates the embedding model
        3. Sets up the vector store index
        4. Configures and returns the retriever with specified parameters

        Args:
            configuration: An AugmentationConfiguration object containing
                           settings for the vector store, embedding model,
                           and retriever parameters.

        Returns:
            VectorIndexRetriever: Configured retriever instance ready for similarity searches.
        """
        vector_store_configuration = configuration.embedding.vector_store
        vector_store = VectorStoreRegistry.get(
            vector_store_configuration.name
        ).create(vector_store_configuration)
        embedding_model_config = configuration.embedding.embedding_model
        embedding_model = EmbeddingModelRegistry.get(
            embedding_model_config.provider
        ).create(embedding_model_config)
        index = VectorStoreIndex.from_vector_store(
            vector_store=vector_store,
            embed_model=embedding_model,
        )

        retriever_configuration = (
            configuration.augmentation.chat_engine.retriever
        )
        return VectorIndexRetriever(
            index=index,
            similarity_top_k=retriever_configuration.similarity_top_k,
        )