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".