Skip to main content

Module hybrid

Module hybrid 

Source
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:

  • k is typically 60 (robust default)
  • rank_i(d) is the rank of document d in result list i (1-indexed)
  • weight_i is 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§

ComponentScores
Individual component scores
HybridSearchEngine
A combined vector + lexical search engine
RRFConfig
Configuration for Reciprocal Rank Fusion
RRFFusion
Reciprocal Rank Fusion combiner
SearchResult
Search result with score

Traits§

LexicalSearchBackend
Trait for lexical search backends
VectorSearchBackend
Trait for vector search backends

Functions§

filter_results
Post-filter results by metadata predicate

Type Aliases§

DocId
Document ID type