Module metrics

Source
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.0

Modulesยง

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ยง

CosineDistance
Cosine distance: $d(a, b) = 1 - \frac{a \cdot b}{|a| \cdot |b|}$.
DotProductDistance
Negative dot product distance: $d(a, b) = -a \cdot b$.
L2Distance
Squared Euclidean distance: $d(a, b) = \sum_i (a_i - b_i)^2$.