Copyright | (c) 2025 Tushar Adhatrao |
---|---|
License | MIT |
Maintainer | Tushar Adhatrao <[email protected]> |
Stability | experimental |
Safe Haskell | None |
Language | Haskell2010 |
Langchain.Retriever.MultiQueryRetriever
Description
Advanced retriever implementation that generates multiple queries from a single input to improve document retrieval. Integrates with LLMs for query expansion and vector stores for document retrieval
Example usage:
-- Create components ollamaLLM = Ollama "llama3" [] vs = VectorStoreRetriever (createVectorStore ...) -- Create retriever with default config mqRetriever = newMultiQueryRetriever vs ollamaLLM -- Retrieve documents docs <- _get_relevant_documents mqRetriever "Haskell features" -- Returns combined results from multiple generated queries
Synopsis
- data (Retriever a, LLM m) => MultiQueryRetriever a m = MultiQueryRetriever {}
- newtype QueryGenerationPrompt = QueryGenerationPrompt PromptTemplate
- newMultiQueryRetriever :: (Retriever a, LLM m) => a -> m -> MultiQueryRetriever a m
- defaultQueryGenerationPrompt :: QueryGenerationPrompt
- newMultiQueryRetrieverWithConfig :: (Retriever a, LLM m) => a -> m -> MultiQueryRetrieverConfig -> MultiQueryRetriever a m
- defaultMultiQueryRetrieverConfig :: MultiQueryRetrieverConfig
- generateQueries :: LLM m => m -> QueryGenerationPrompt -> Text -> Int -> Bool -> IO (Either String [Text])
Documentation
data (Retriever a, LLM m) => MultiQueryRetriever a m Source #
Multi-query retriever implementation Generates multiple queries using an LLM, retrieves documents for each query, and combines results. Improves recall by exploring different query formulations.
Example instance:
mqRetriever = MultiQueryRetriever { retriever = vectorStoreRetriever , llm = ollamaLLM , config = defaultMultiQueryRetrieverConfig }
Constructors
MultiQueryRetriever | |
Instances
newtype QueryGenerationPrompt Source #
Query generation prompt template Controls how the LLM generates multiple query variants from the original query.
Example prompt structure:
"You are an AI assistant... Original query: {query}... Generate {num_queries} versions..."
Constructors
QueryGenerationPrompt PromptTemplate |
Instances
Show QueryGenerationPrompt Source # | |
Defined in Langchain.Retriever.MultiQueryRetriever Methods showsPrec :: Int -> QueryGenerationPrompt -> ShowS # show :: QueryGenerationPrompt -> String # showList :: [QueryGenerationPrompt] -> ShowS # | |
Eq QueryGenerationPrompt Source # | |
Defined in Langchain.Retriever.MultiQueryRetriever Methods (==) :: QueryGenerationPrompt -> QueryGenerationPrompt -> Bool # (/=) :: QueryGenerationPrompt -> QueryGenerationPrompt -> Bool # |
newMultiQueryRetriever :: (Retriever a, LLM m) => a -> m -> MultiQueryRetriever a m Source #
Create retriever with default settings Example:
>>>
newMultiQueryRetriever vsRetriever ollamaLLM
MultiQueryRetriever {numQueries = 3, ...}
defaultQueryGenerationPrompt :: QueryGenerationPrompt Source #
Default query generation prompt Generates 3 query variants in numbered list format. Includes instructions for query diversity and formatting.
newMultiQueryRetrieverWithConfig :: (Retriever a, LLM m) => a -> m -> MultiQueryRetrieverConfig -> MultiQueryRetriever a m Source #
Create retriever with custom configuration Example:
>>>
let customCfg = defaultMultiQueryRetrieverConfig { numQueries = 5 }
>>>
newMultiQueryRetrieverWithConfig vsRetriever ollamaLLM customCfg
MultiQueryRetriever {numQueries = 5, ...}
defaultMultiQueryRetrieverConfig :: MultiQueryRetrieverConfig Source #
Default configuration - 3 generated queries - Includes original query results - Uses default query generation prompt