| Copyright | (c) 2025 Tushar Adhatrao |
|---|---|
| License | MIT |
| Maintainer | Tushar Adhatrao <tusharadhatrao@gmail.com> |
| Stability | experimental |
| Safe Haskell | Safe-Inferred |
| 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 ollamaLLMMultiQueryRetriever {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 customCfgMultiQueryRetriever {numQueries = 5, ...}
defaultMultiQueryRetrieverConfig :: MultiQueryRetrieverConfig Source #
Default configuration - 3 generated queries - Includes original query results - Uses default query generation prompt