Crate rank_fusion

Crate rank_fusion 

Source
Expand description

Rank fusion for hybrid search.

Combine results from multiple retrievers (BM25, dense, sparse) into a single ranking.

use rank_fusion::rrf;

let bm25 = vec![("d1", 12.5), ("d2", 11.0)];
let dense = vec![("d2", 0.9), ("d3", 0.8)];
let fused = rrf(&bm25, &dense);
// d2 ranks highest (appears in both lists)

§Algorithms

FunctionUses ScoresBest For
rrfNoIncompatible score scales
isrNoWhen lower ranks matter more
combsumYesSimilar scales, trust scores
combmnzYesReward overlap between lists
bordaNoSimple voting
weightedYesCustom retriever weights
dbsfYesDifferent score distributions

All have *_multi variants for 3+ lists.

§Performance Notes

OpenSearch benchmarks (BEIR) show RRF is ~3-4% lower NDCG than score-based fusion (CombSUM), but ~1-2% faster. RRF excels when score scales are incompatible or unknown. See OpenSearch RRF blog.

Modules§

prelude
Prelude for common imports.

Structs§

FusionConfig
Configuration for rank-based fusion (Borda, CombSUM, CombMNZ).
RrfConfig
RRF configuration.
WeightedConfig
Weighted fusion configuration.

Enums§

FusionError
Errors that can occur during fusion.
FusionMethod
Unified fusion method for dispatching to different algorithms.

Functions§

borda
Borda count voting — position-based scoring.
borda_multi
Borda count for 3+ result lists.
borda_with_config
Borda count with configuration.
combmnz
Normalized sum × overlap count (rewards agreement).
combmnz_multi
CombMNZ for 3+ result lists.
combmnz_with_config
CombMNZ with configuration.
combsum
Sum of min-max normalized scores.
combsum_multi
CombSUM for 3+ result lists.
combsum_with_config
CombSUM with configuration.
dbsf
Distribution-Based Score Fusion (DBSF).
dbsf_multi
DBSF for 3+ result lists.
dbsf_with_config
DBSF with configuration.
isr
Inverse Square Root rank fusion with default config (k=1).
isr_multi
ISR for 3+ result lists.
isr_with_config
ISR with custom configuration.
rrf
Reciprocal Rank Fusion of two result lists with default config (k=60).
rrf_into
RRF with preallocated output buffer.
rrf_multi
RRF for 3+ result lists.
rrf_weighted
Weighted RRF: per-retriever weights applied to rank-based scores.
rrf_with_config
RRF with custom configuration.
weighted
Weighted score fusion with configurable retriever trust.
weighted_multi
Weighted fusion for 3+ result lists.

Type Aliases§

Result
Result type for fusion operations.