pub trait Quantizer:
Clone
+ Send
+ Sync {
type Code: QuantizedCode;
type Config: Clone;
type QueryData;
// Required methods
fn encode(&self, vector: &[f32], centroid: Option<&[f32]>) -> Self::Code;
fn prepare_query(
&self,
query: &[f32],
centroid: Option<&[f32]>,
) -> Self::QueryData;
fn compute_distance(
&self,
query_data: &Self::QueryData,
code: &Self::Code,
) -> f32;
fn size_bytes(&self) -> usize;
// Provided method
fn decode(&self, _code: &Self::Code) -> Option<Vec<f32>> { ... }
}Expand description
Trait for vector quantization methods
Quantizers encode vectors into compact codes and provide fast approximate distance computation.
Required Associated Types§
Sourcetype Code: QuantizedCode
type Code: QuantizedCode
The quantized code type
Required Methods§
Sourcefn encode(&self, vector: &[f32], centroid: Option<&[f32]>) -> Self::Code
fn encode(&self, vector: &[f32], centroid: Option<&[f32]>) -> Self::Code
Encode a vector (optionally relative to a centroid)
Sourcefn prepare_query(
&self,
query: &[f32],
centroid: Option<&[f32]>,
) -> Self::QueryData
fn prepare_query( &self, query: &[f32], centroid: Option<&[f32]>, ) -> Self::QueryData
Prepare query-specific data for fast distance computation
Sourcefn compute_distance(
&self,
query_data: &Self::QueryData,
code: &Self::Code,
) -> f32
fn compute_distance( &self, query_data: &Self::QueryData, code: &Self::Code, ) -> f32
Compute approximate distance using precomputed query data
Sourcefn size_bytes(&self) -> usize
fn size_bytes(&self) -> usize
Memory usage of the quantizer itself (codebooks, etc.)
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.