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§
Sourcefn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Bytes per encoded vector.
Sourcefn encode(&self, v: &[f32]) -> Result<Vec<u8>>
fn encode(&self, v: &[f32]) -> Result<Vec<u8>>
Encode a vector. The blob is self-sufficient for scoring.
Sourcefn decode(&self, blob: &[u8]) -> Result<Vec<f32>>
fn decode(&self, blob: &[u8]) -> Result<Vec<f32>>
Reconstruct an approximation (exact only for Fp32).
Sourcefn distance(&self, a: &[u8], b: &[u8]) -> Result<f32>
fn distance(&self, a: &[u8], b: &[u8]) -> Result<f32>
Symmetric blob×blob distance under this codec’s metric.
Sourcefn make_query(&self, q: &[f32]) -> Result<Box<dyn EncodedQuery>>
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".