Skip to main content

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

Implementors§