Skip to content

research(nightly): hybrid-sparse-dense — BM25 + dense ANN with RRF and linear fusion#476

Draft
ruvnet wants to merge 1 commit into
mainfrom
research/nightly/2026-05-20-hybrid-sparse-dense
Draft

research(nightly): hybrid-sparse-dense — BM25 + dense ANN with RRF and linear fusion#476
ruvnet wants to merge 1 commit into
mainfrom
research/nightly/2026-05-20-hybrid-sparse-dense

Conversation

@ruvnet
Copy link
Copy Markdown
Owner

@ruvnet ruvnet commented May 20, 2026

Summary

Adds nightly RuVector research for hybrid-sparse-dense — ruvector's first dual-channel retrieval engine combining a BM25 sparse inverted index with dense ANN search, fused via Reciprocal Rank Fusion (RRF) and linear score interpolation.

  • Working Rust PoC: crates/ruvector-hybrid — builds clean, 16 unit tests passing, 5 acceptance tests passing
  • ADR: docs/adr/ADR-194-hybrid-sparse-dense.md
  • Research document: docs/research/nightly/2026-05-20-hybrid-sparse-dense/README.md
  • Real benchmark results from cargo run --release -p ruvector-hybrid --bin benchmark

Key Benchmark Numbers (x86_64, rustc 1.94.1, N=5K, D=128, K=10)

Variant Mean µs QPS Recall@10 Memory
DenseOnly (baseline) 791 1,264 12.9% 2,500 KB
SparseOnly (baseline) 31 32,548 27.2% 774 KB
HybridRRF 825 1,213 30.1% 3,274 KB
HybridLinear 826 1,211 29.8% 3,274 KB

Fusion overhead: 33–35µs per query. All 5 acceptance tests: PASS.

Research doc

docs/research/nightly/2026-05-20-hybrid-sparse-dense/README.md

ADR

docs/adr/ADR-194-hybrid-sparse-dense.md

Build / Test

cargo build --release -p ruvector-hybrid
cargo test -p ruvector-hybrid
cargo run --release -p ruvector-hybrid --bin benchmark

Generated by Claude Code

Introduces hybrid sparse-dense search as ruvector's first dual-channel
retrieval engine. Implements BM25 inverted index + dense flat ANN fused
via Reciprocal Rank Fusion and linear score interpolation.

Research: docs/research/nightly/2026-05-20-hybrid-sparse-dense/
ADR: docs/adr/ADR-194-hybrid-sparse-dense.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants