Module multi_index

Module multi_index 

Source
Expand description

Multi-Index Search

Search across multiple indexes in parallel and combine results.

§Use Cases

  • Federated search across data shards
  • Searching different index types (exact + approximate)
  • Temporal data with separate indexes per time period
  • Multi-tenant scenarios with per-tenant indexes

§Example

use oxify_vector::{MultiIndexSearch, VectorSearchIndex, SearchConfig};
use std::collections::HashMap;

// Create multiple indexes
let mut index1 = VectorSearchIndex::new(SearchConfig::default());
let mut embeddings1 = HashMap::new();
embeddings1.insert("doc1".to_string(), vec![1.0, 0.0]);
index1.build(&embeddings1)?;

let mut index2 = VectorSearchIndex::new(SearchConfig::default());
let mut embeddings2 = HashMap::new();
embeddings2.insert("doc2".to_string(), vec![0.0, 1.0]);
index2.build(&embeddings2)?;

// Search across both indexes
let multi_search = MultiIndexSearch::new();
let query = vec![0.5, 0.5];
let results = multi_search.search(&[&index1, &index2], &query, 10)?;

// Results are merged and sorted by score
for result in results {
    println!("{}: score = {:.4}", result.entity_id, result.score);
}

Structs§

MultiIndexConfig
Configuration for multi-index search
MultiIndexSearch
Multi-index search coordinator

Enums§

ScoreMergeStrategy
Strategy for merging scores when same entity appears in multiple indexes