generative_ai.information_retrieval.step_2_retrieval module#

Define functionalities to fetch and use relevant information from database.

create_database_retriever(embedding_database: Chroma, search_type: RetrievalType, number_of_documents: int, initial_number_of_documents: int, diversity_level: float) VectorStoreRetriever#

Prepare a vector store retriever for the retrieval database.

Parameters:
  • embedding_database (Chroma) -- vector store

  • search_type (RetrievalType) -- kind of retrieval algorithm for searching vector store

  • number_of_documents (int) -- number of documents to retrieve

  • initial_number_of_documents (int) -- initial number of documents to consider

  • diversity_level (float) -- similarity between retrieved documents

Returns:

vector store retriever

Return type:

VectorStoreRetriever

Raises:

ValueError -- if retrieval type is not supported

Notes

  • If search_type is similarity, only number_of_documents is used.

  • For maximal marginal relevance (MMR), diversity_level must be in [0, 1].

    • 0 means minimum diversity.

    • 1 means maximum diversity.

create_llm(language_model: QuantisedModel | StandardModel) CTransformers | HuggingFacePipeline#

Prepare a large language model.

Parameters:

language_model (LanguageModel) -- details of large language model

Returns:

loaded large language model

Return type:

CTransformers | HuggingFacePipeline

Raises:

ValueError -- if language model type is not supported

Notes

  • At most 256 new tokens will be generated.

  • Deterministic behaviour is ensured for both types of large language models.

    • For transformers compatible models, top_k is set to 1.

    • For ctransformers compatible models, temperature is set to 0.

generate_retrieval_chain(database_retriever: VectorStoreRetriever, llm: CTransformers | HuggingFacePipeline) BaseRetrievalQA#

Prepare a retrieval chain for question answering.

Parameters:
  • database_retriever (VectorStoreRetriever) -- vector store retriever

  • llm (CTransformers | HuggingFacePipeline) -- large language model

Returns:

retrieval chain

Return type:

BaseRetrievalQA

Notes

  • The prompt template instructs the model to not answer if it is missing in the context.

  • It also instructs the model to keep the answer as concise as possible.