Expand description
Distance computation for multi-vector representations.
Provides asymmetric distance primitives for multi-vector search:
MaxSim: Per-query-vector maximum similarities.Chamfer: Sum of MaxSim scores (asymmetric Chamfer distance).
Both are currently implemented using a simple double-loop kernel over
InnerProduct.
§Example
use diskann_quantization::multi_vector::{
distance::{Chamfer, MaxSim, QueryMatRef},
MatRef, Standard,
};
use diskann_vector::{DistanceFunctionMut, PureDistanceFunction};
// Query: 2 vectors of dim 3 (wrapped as QueryMatRef)
let query_data = [1.0f32, 0.0, 0.0, 0.0, 1.0, 0.0];
let query: QueryMatRef<_> = MatRef::new(
Standard::new(2, 3).unwrap(),
&query_data,
).unwrap().into();
// Doc: 2 vectors of dim 3
let doc_data = [1.0f32, 0.0, 0.0, 0.0, 0.0, 1.0];
let doc = MatRef::new(
Standard::new(2, 3).unwrap(),
&doc_data,
).unwrap();
// Chamfer distance (sum of max similarities)
let chamfer_dist = Chamfer::evaluate(query, doc);
// MaxSim (per-query-vector scores)
let mut scores = vec![0.0f32; 2];
let mut max_sim = MaxSim::new(&mut scores).unwrap();
max_sim.evaluate(query, doc);
// scores[0] = -1.0 (query[0] matches doc[0])
// scores[1] = 0.0 (query[1] has no good match)Structs§
- Chamfer
- Asymmetric Chamfer distance for multi-vector similarity.
- MaxSim
- Computes per-query-vector maximum similarities to document vectors.
- Query
MatRef - A query matrix view for asymmetric distance functions.
Enums§
- MaxSim
Error - Error type for
MaxSimoperations.