pub struct QuantizedEmbeddingCache { /* private fields */ }Expand description
Quantized embedding cache with scalar or product quantization and asymmetric distance computation for compressed similarity search.
Implementations§
Source§impl QuantizedEmbeddingCache
impl QuantizedEmbeddingCache
Sourcepub fn new(config: QuantizedCacheConfig, dimensions: usize) -> Self
pub fn new(config: QuantizedCacheConfig, dimensions: usize) -> Self
Create a new, untrained cache.
Sourcepub fn train(&mut self, training_vectors: &[Vec<f32>]) -> Result<()>
pub fn train(&mut self, training_vectors: &[Vec<f32>]) -> Result<()>
Train quantization parameters from training_vectors.
Must be called before any calls to add or search.
Sourcepub fn add(&mut self, id: String, vector: Vec<f32>) -> Result<()>
pub fn add(&mut self, id: String, vector: Vec<f32>) -> Result<()>
Compress and store a vector by id.
Sourcepub fn add_with_metadata(
&mut self,
id: String,
vector: Vec<f32>,
metadata: HashMap<String, String>,
) -> Result<()>
pub fn add_with_metadata( &mut self, id: String, vector: Vec<f32>, metadata: HashMap<String, String>, ) -> Result<()>
Compress and store a vector with metadata.
Sourcepub fn get(&self, id: &str) -> Option<Vec<f32>>
pub fn get(&self, id: &str) -> Option<Vec<f32>>
Retrieve the decompressed (reconstructed) vector for id.
Sourcepub fn search(&mut self, query: &[f32], k: usize) -> Result<Vec<(String, f32)>>
pub fn search(&mut self, query: &[f32], k: usize) -> Result<Vec<(String, f32)>>
Find the k nearest cached vectors to query using asymmetric distance.
The query is kept in fp32; each database code is decompressed on-the-fly and Euclidean distance is computed.
Sourcepub fn metrics(&self) -> &CacheMetrics
pub fn metrics(&self) -> &CacheMetrics
Return a snapshot of current metrics.
Sourcepub fn config(&self) -> &QuantizedCacheConfig
pub fn config(&self) -> &QuantizedCacheConfig
Access the configuration.
Auto Trait Implementations§
impl Freeze for QuantizedEmbeddingCache
impl RefUnwindSafe for QuantizedEmbeddingCache
impl Send for QuantizedEmbeddingCache
impl Sync for QuantizedEmbeddingCache
impl Unpin for QuantizedEmbeddingCache
impl UnsafeUnpin for QuantizedEmbeddingCache
impl UnwindSafe for QuantizedEmbeddingCache
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.