Expand description
Hybrid Search: Vector + Keyword (BM25)
Combines semantic vector search with lexical keyword search for improved results.
§Algorithm
- Vector Search: Semantic similarity using embeddings
- Keyword Search: BM25 scoring for lexical matching
- Fusion: Reciprocal Rank Fusion (RRF) or weighted combination
§Example
use oxify_vector::hybrid::{HybridIndex, HybridConfig};
use std::collections::HashMap;
// Create documents with text and embeddings
let mut embeddings = HashMap::new();
embeddings.insert("doc1".to_string(), vec![0.1, 0.2, 0.3]);
embeddings.insert("doc2".to_string(), vec![0.2, 0.3, 0.4]);
let mut texts = HashMap::new();
texts.insert("doc1".to_string(), "rust programming language".to_string());
texts.insert("doc2".to_string(), "python machine learning".to_string());
// Build hybrid index
let config = HybridConfig::default();
let mut index = HybridIndex::new(config);
index.build(&embeddings, &texts)?;
// Hybrid search
let query_vector = vec![0.15, 0.25, 0.35];
let query_text = "rust programming";
let results = index.search(&query_vector, query_text, 2)?;Structs§
- Bm25
Config - BM25 parameters
- Hybrid
Config - Hybrid search configuration
- Hybrid
Index - Hybrid search index combining vector and keyword search
- Hybrid
Search Result - Hybrid search result
- Hybrid
Stats - Hybrid index statistics