pub trait VectorIndexEngine: Send + Sync {
// Required methods
fn add(&mut self, key: u64, vector: &[f32]) -> Result<(), BoxedError>;
fn search(
&self,
query: &[f32],
k: usize,
) -> Result<VectorSearchMatches, BoxedError>;
fn serialized_length(&self) -> usize;
fn save_to_buffer(&self, buffer: &mut [u8]) -> Result<(), BoxedError>;
fn reserve(&mut self, capacity: usize) -> Result<(), BoxedError>;
fn size(&self) -> usize;
fn capacity(&self) -> usize;
fn memory_usage(&self) -> usize;
}Expand description
Trait for vector index engines (HNSW implementations).
This trait defines the interface for pluggable vector index engines. Implementations (e.g., UsearchEngine) are provided by storage engines like mito2.
Required Methods§
Sourcefn add(&mut self, key: u64, vector: &[f32]) -> Result<(), BoxedError>
fn add(&mut self, key: u64, vector: &[f32]) -> Result<(), BoxedError>
Adds a vector with the given key.
Sourcefn search(
&self,
query: &[f32],
k: usize,
) -> Result<VectorSearchMatches, BoxedError>
fn search( &self, query: &[f32], k: usize, ) -> Result<VectorSearchMatches, BoxedError>
Searches for k nearest neighbors.
Sourcefn serialized_length(&self) -> usize
fn serialized_length(&self) -> usize
Returns the serialized length.
Sourcefn save_to_buffer(&self, buffer: &mut [u8]) -> Result<(), BoxedError>
fn save_to_buffer(&self, buffer: &mut [u8]) -> Result<(), BoxedError>
Serializes the index to a buffer.
Sourcefn reserve(&mut self, capacity: usize) -> Result<(), BoxedError>
fn reserve(&mut self, capacity: usize) -> Result<(), BoxedError>
Reserves capacity for vectors.
Sourcefn memory_usage(&self) -> usize
fn memory_usage(&self) -> usize
Returns memory usage in bytes.