rag.search
- class CrossEncoderReranker(model_name='cross-encoder/ms-marco-MiniLM-L-6-v2', max_length=512, fastembed_model_name=None)[source]
Bases:
RerankerBaseRe-ranker using cross-encoder models.
Tries sentence-transformers first, then falls back to fastembed (ONNX-based). Requires at least one of:
pip install sentence-transformers pip install fastembed
- Parameters:
- class DiversityReranker(lambda_param=0.7)[source]
Bases:
RerankerBaseRe-ranker that promotes result diversity.
Re-orders results to maximize diversity based on content similarity. Uses MMR (Maximal Marginal Relevance) style selection.
- Parameters:
lambda_param (float) – Balance between relevance and diversity (0-1). Higher = more relevance, lower = more diversity.
- class HybridSearch(vector_search_fn=None, bm25_search_fn=None, alpha=0.6, rrf_k=60)[source]
Bases:
objectHybrid search combining vector similarity and BM25 keyword matching.
Uses reciprocal rank fusion (RRF) to combine results from multiple retrieval methods.
- Parameters:
vector_search_fn (Callable[[str, int], list[dict[str, Any]]] | None) – Function that takes (query, n_results) and returns vector results.
bm25_search_fn (Callable[[str, int], list[dict[str, Any]]] | None) – Function that takes (query, n_results) and returns BM25 results.
alpha (float) – Weight for vector search (1-alpha for BM25). Default 0.6.
rrf_k (int) – RRF constant for rank fusion. Default 60.
- set_alpha(alpha)[source]
Set the alpha parameter (vector weight).
- Parameters:
alpha (float) – Weight for vector search (0.0 to 1.0).
- Return type:
None
- class NoopReranker[source]
Bases:
RerankerBasePass-through re-ranker that does nothing.
Used when re-ranking is disabled but a reranker interface is expected.
- class QueryExpander(llm_generate_fn=None, n_variations=3, include_original=True)[source]
Bases:
objectExpand queries using LLM for multi-query retrieval.
Generates multiple reformulations of a search query to improve recall by catching different phrasings and aspects of the topic.
- Parameters:
Example
>>> def mock_llm(prompt): return "1. What is auth?\n2. How to authenticate?" >>> expander = QueryExpander(llm_generate_fn=mock_llm, n_variations=2) >>> queries = expander.expand("authentication methods") >>> # Returns: ["authentication methods", "What is auth?", "How to authenticate?"]
- class RerankerBase[source]
Bases:
objectBase class for re-rankers.
- fuse_search_results(result_lists, n_results=5, dedupe_by='id')[source]
Fuse results from multiple searches with deduplication.
Combines results from multiple query variations, removing duplicates while preserving relevance ordering.
- Parameters:
- Returns:
Fused and deduplicated list of results.
- Return type:
- get_reranker(reranker_type='none', **kwargs)[source]
Get a reranker by type name.
- Parameters:
- Returns:
Configured reranker instance.
- Return type:
- reciprocal_rank_fusion(result_lists, k=60, weights=None)[source]
Combine multiple result lists using reciprocal rank fusion.
Classes
- class CrossEncoderReranker(model_name='cross-encoder/ms-marco-MiniLM-L-6-v2', max_length=512, fastembed_model_name=None)[source]
Bases:
RerankerBaseRe-ranker using cross-encoder models.
Tries sentence-transformers first, then falls back to fastembed (ONNX-based). Requires at least one of:
pip install sentence-transformers pip install fastembed
- Parameters:
- class DiversityReranker(lambda_param=0.7)[source]
Bases:
RerankerBaseRe-ranker that promotes result diversity.
Re-orders results to maximize diversity based on content similarity. Uses MMR (Maximal Marginal Relevance) style selection.
- Parameters:
lambda_param (float) – Balance between relevance and diversity (0-1). Higher = more relevance, lower = more diversity.
- class HybridSearch(vector_search_fn=None, bm25_search_fn=None, alpha=0.6, rrf_k=60)[source]
Bases:
objectHybrid search combining vector similarity and BM25 keyword matching.
Uses reciprocal rank fusion (RRF) to combine results from multiple retrieval methods.
- Parameters:
vector_search_fn (Callable[[str, int], list[dict[str, Any]]] | None) – Function that takes (query, n_results) and returns vector results.
bm25_search_fn (Callable[[str, int], list[dict[str, Any]]] | None) – Function that takes (query, n_results) and returns BM25 results.
alpha (float) – Weight for vector search (1-alpha for BM25). Default 0.6.
rrf_k (int) – RRF constant for rank fusion. Default 60.
- set_alpha(alpha)[source]
Set the alpha parameter (vector weight).
- Parameters:
alpha (float) – Weight for vector search (0.0 to 1.0).
- Return type:
None
- class NoopReranker[source]
Bases:
RerankerBasePass-through re-ranker that does nothing.
Used when re-ranking is disabled but a reranker interface is expected.
- class QueryExpander(llm_generate_fn=None, n_variations=3, include_original=True)[source]
Bases:
objectExpand queries using LLM for multi-query retrieval.
Generates multiple reformulations of a search query to improve recall by catching different phrasings and aspects of the topic.
- Parameters:
Example
>>> def mock_llm(prompt): return "1. What is auth?\n2. How to authenticate?" >>> expander = QueryExpander(llm_generate_fn=mock_llm, n_variations=2) >>> queries = expander.expand("authentication methods") >>> # Returns: ["authentication methods", "What is auth?", "How to authenticate?"]
Functions
- fuse_search_results(result_lists, n_results=5, dedupe_by='id')[source]
Fuse results from multiple searches with deduplication.
Combines results from multiple query variations, removing duplicates while preserving relevance ordering.
- Parameters:
- Returns:
Fused and deduplicated list of results.
- Return type:
- get_reranker(reranker_type='none', **kwargs)[source]
Get a reranker by type name.
- Parameters:
- Returns:
Configured reranker instance.
- Return type: