Skip to main content

VectorCodec

Trait VectorCodec 

Source
pub trait VectorCodec: Send + Sync {
    // Required methods
    fn kind(&self) -> CodecKind;
    fn dim(&self) -> usize;
    fn encoded_len(&self) -> usize;
    fn encode(&self, v: &[f32]) -> Result<Vec<u8>>;
    fn decode(&self, blob: &[u8]) -> Result<Vec<f32>>;
    fn distance(&self, a: &[u8], b: &[u8]) -> Result<f32>;
    fn make_query(&self, q: &[f32]) -> Result<Box<dyn EncodedQuery>>;
}
Expand description

A vector codec: encodes f32 vectors into opaque blobs and scores blobs without the caller knowing the representation.

Required Methods§

Source

fn kind(&self) -> CodecKind

Which representation this codec produces.

Source

fn dim(&self) -> usize

Dimensionality of vectors this codec accepts.

Source

fn encoded_len(&self) -> usize

Bytes per encoded vector.

Source

fn encode(&self, v: &[f32]) -> Result<Vec<u8>>

Encode a vector. The blob is self-sufficient for scoring.

Source

fn decode(&self, blob: &[u8]) -> Result<Vec<f32>>

Reconstruct an approximation (exact only for Fp32).

Source

fn distance(&self, a: &[u8], b: &[u8]) -> Result<f32>

Symmetric blob×blob distance under this codec’s metric.

Source

fn make_query(&self, q: &[f32]) -> Result<Box<dyn EncodedQuery>>

Prepare a query for repeated asymmetric scoring against blobs.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§