Expand description
SIMD-accelerated distance metrics.
All metrics use [pulp] for portable SIMD: a single implementation
dispatches to AVX-512, AVX2, NEON, or scalar at runtime.
ยงExample
use cvx_core::DistanceMetric;
use cvx_index::metrics::CosineDistance;
let metric = CosineDistance;
let a = vec![1.0, 0.0, 0.0];
let b = vec![0.0, 1.0, 0.0];
let dist = metric.distance(&a, &b);
assert!((dist - 1.0).abs() < 1e-5); // orthogonal โ cosine distance = 1.0Modulesยง
- cosine ๐
- Cosine distance metric.
- dot_
product ๐ - Dot product distance metric (for maximum inner product search).
- l2 ๐
- L2 (Euclidean) squared distance metric.
- simd_
ops ๐ - Low-level SIMD operations using pulp.
Structsยง
- Cosine
Distance - Cosine distance: $d(a, b) = 1 - \frac{a \cdot b}{|a| \cdot |b|}$.
- DotProduct
Distance - Negative dot product distance: $d(a, b) = -a \cdot b$.
- L2Distance
- Squared Euclidean distance: $d(a, b) = \sum_i (a_i - b_i)^2$.