Expand description
Distance acceleration through vector quantization.
The Quantizer trait abstracts over different strategies for accelerating
distance computations in high-dimensional spaces. The HNSW graph stores both
full-precision vectors (for exact operations like trajectories and signatures)
and compact codes (for fast approximate distance during graph construction/search).
§Two-Phase Distance Computation
- Candidate selection: Use fast approximate distance on compact codes
- Final ranking: Use exact distance on full vectors
This mirrors production systems like Qdrant (Scalar Quantization), Faiss (Product Quantization), and Weaviate (Binary Quantization).
§Available Strategies
| Strategy | Code size (D=768) | Speedup | Recall impact |
|---|---|---|---|
NoQuantizer | 0 bytes | 1× | None |
| Scalar (SQ8) | 768 bytes | ~4× | < 1% |
| Product (PQ96) | 96 bytes | ~8× | 1-3% |
| Binary (BQ) | 96 bytes | ~32× | 5-10% |
§Example
use cvx_core::traits::quantizer::{Quantizer, NoQuantizer, L2Fn};
// No acceleration (default, exact distances)
let q = NoQuantizer::new(L2Fn);
let code = q.encode(&[1.0, 2.0, 3.0]);Structs§
- L2Fn
- Simple L2 distance function for use with quantizers.
- NoQuantizer
- Identity quantizer — no acceleration, exact distances only.
- Scalar
Quantizer - Scalar Quantization: compress each float32 dimension to uint8.
Traits§
- Quantizer
- Acceleration strategy for distance computations.