Expand description
Hybrid search combining dense and sparse retrieval. Hybrid search combining dense and sparse retrieval.
This module provides fusion algorithms and search orchestration for combining dense semantic search (HNSW) with sparse keyword search (BM25).
§Fusion Methods
Two fusion methods are supported:
-
Reciprocal Rank Fusion (RRF): Combines ranks using
score(d) = sum(1 / (k + rank_i(d))). Robust, parameter-insensitive. -
Linear Combination: Combines normalized scores using
score(d) = alpha * dense_score + (1 - alpha) * sparse_score.
§Example
use edgevec::hybrid::{rrf_fusion, FusionResult};
// Dense search results: [(id, score), ...]
let dense = vec![(1, 0.95), (2, 0.80), (3, 0.75)];
// Sparse search results: [(id, score), ...]
let sparse = vec![(2, 5.5), (4, 4.2), (1, 3.8)];
// Fuse with RRF (k=60)
let fused = rrf_fusion(&dense, &sparse, 60, 10);
// Results combine ranks from both lists
for result in &fused {
println!("ID: {}, RRF Score: {}", result.id, result.score);
}Structs§
- Fusion
Result - Result from fusion algorithm.
- Hybrid
Search Config - Configuration for hybrid search.
- Hybrid
Search Result - Result from hybrid search.
- Hybrid
Searcher - Hybrid search combining dense and sparse retrieval.
Enums§
- Fusion
Method - Fusion method configuration.
- Hybrid
Error - Errors that can occur during hybrid search.
Constants§
- RRF_
DEFAULT_ K - Default k parameter for RRF fusion.
Functions§
- linear_
fusion - Linear combination fusion algorithm.
- rrf_
fusion - Reciprocal Rank Fusion (RRF) algorithm.