Fusion algorithms for combining retrieval results.
This module implements rank fusion strategies for hybrid search, combining results from multiple retrieval sources (e.g., vector search, keyword search).
Supported Strategies
- RRF (Reciprocal Rank Fusion): Default and recommended. Uses only ranks, making it robust to score distribution differences.
- Weighted: Linear combination of scores with configurable weights.
- Union: Takes the maximum score per ID across sources.
Algorithm
RRF formula:
score(d) = Σ 1/(k + rank_i(d))
where:
- k = 60 (standard, dampens high-rank dominance)
- rank_i(d) = position of d in retriever i's results (1-indexed)
- If d not in retriever i, contribution = 0
Example
use ;
use DeterministicScore;
// Two retrieval sources with different rankings
let vector_results = vec!;
let keyword_results = vec!;
// Fuse using RRF with k=60
let fused = fuse;
// doc_b appears in both sources, so it gets highest RRF score
assert_eq!;