Expand description
Hybrid Search with RRF Fusion (Task 4)
This module combines vector similarity search (ANN) with lexical search (BM25) using Reciprocal Rank Fusion (RRF) for score combination.
§RRF Algorithm
RRF_score(d) = Σ weight_i / (k + rank_i(d))Where:
kis typically 60 (robust default)rank_i(d)is the rank of document d in result list i (1-indexed)weight_iis the weight for result list i
§Pipeline
Query
│
┌──────────┴──────────┐
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Vector │ │ Lexical │
│ Search │ │ Search │
│ (HNSW) │ │ (BM25) │
└──────┬──────┘ └──────┬──────┘
│ │
│ [(id, score), ...]│ [(id, score), ...]
│ │
└──────────┬──────────┘
│
▼
┌─────────────┐
│ RRF Fusion │
└──────┬──────┘
│
▼
┌─────────────┐
│ Filter │
│ (optional) │
└──────┬──────┘
│
▼
┌─────────────┐
│ Top-K │
└─────────────┘Structs§
- Component
Scores - Individual component scores
- Hybrid
Search Engine - A combined vector + lexical search engine
- RRFConfig
- Configuration for Reciprocal Rank Fusion
- RRFFusion
- Reciprocal Rank Fusion combiner
- Search
Result - Search result with score
Traits§
- Lexical
Search Backend - Trait for lexical search backends
- Vector
Search Backend - Trait for vector search backends
Functions§
- filter_
results - Post-filter results by metadata predicate
Type Aliases§
- DocId
- Document ID type