Quantizer

Trait Quantizer 

Source
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§

Source

type Code: QuantizedCode

The quantized code type

Source

type Config: Clone

Configuration type

Source

type QueryData

Query-specific precomputed data for fast distance computation

Required Methods§

Source

fn encode(&self, vector: &[f32], centroid: Option<&[f32]>) -> Self::Code

Encode a vector (optionally relative to a centroid)

Source

fn prepare_query( &self, query: &[f32], centroid: Option<&[f32]>, ) -> Self::QueryData

Prepare query-specific data for fast distance computation

Source

fn compute_distance( &self, query_data: &Self::QueryData, code: &Self::Code, ) -> f32

Compute approximate distance using precomputed query data

Source

fn size_bytes(&self) -> usize

Memory usage of the quantizer itself (codebooks, etc.)

Provided Methods§

Source

fn decode(&self, _code: &Self::Code) -> Option<Vec<f32>>

Decode a code back to approximate vector (if supported)

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.

Implementors§