Skip to main content

velesdb_core/quantization/
mod.rs

1//! Scalar Quantization (SQ8) and Binary Quantization for memory-efficient vector storage.
2//!
3//! This module implements quantization strategies to reduce memory usage:
4//!
5//! ## Benefits
6//!
7//! | Metric | f32 | SQ8 | Binary |
8//! |--------|-----|-----|--------|
9//! | RAM/vector (768d) | 3 KB | 770 bytes | 96 bytes |
10//! | Cache efficiency | Baseline | ~4x better | ~32x better |
11//! | Recall loss | 0% | ~0.5-1% | ~5-10% |
12
13use serde::{Deserialize, Serialize};
14
15mod binary;
16mod pq;
17mod scalar;
18
19// Re-export binary quantization
20pub use binary::BinaryQuantizedVector;
21pub use pq::{distance_pq, PQCodebook, PQVector, ProductQuantizer};
22
23// Re-export scalar quantization
24pub use scalar::{
25    cosine_similarity_quantized, cosine_similarity_quantized_simd, dot_product_quantized,
26    dot_product_quantized_simd, euclidean_squared_quantized, euclidean_squared_quantized_simd,
27    QuantizedVector,
28};
29
30/// Storage mode for vectors.
31#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
32#[serde(rename_all = "lowercase")]
33pub enum StorageMode {
34    /// Full precision f32 storage (default).
35    #[default]
36    Full,
37    /// 8-bit scalar quantization for 4x memory reduction.
38    SQ8,
39    /// 1-bit binary quantization for 32x memory reduction.
40    /// Best for edge/IoT devices with limited RAM.
41    Binary,
42    /// Product Quantization (PQ) for aggressive lossy compression (8x-16x typical).
43    ProductQuantization,
44}