VectorIndexEngine

Trait VectorIndexEngine 

Source
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§

Source

fn add(&mut self, key: u64, vector: &[f32]) -> Result<(), BoxedError>

Adds a vector with the given key.

Source

fn search( &self, query: &[f32], k: usize, ) -> Result<VectorSearchMatches, BoxedError>

Searches for k nearest neighbors.

Source

fn serialized_length(&self) -> usize

Returns the serialized length.

Source

fn save_to_buffer(&self, buffer: &mut [u8]) -> Result<(), BoxedError>

Serializes the index to a buffer.

Source

fn reserve(&mut self, capacity: usize) -> Result<(), BoxedError>

Reserves capacity for vectors.

Source

fn size(&self) -> usize

Returns current size (number of vectors).

Source

fn capacity(&self) -> usize

Returns current capacity.

Source

fn memory_usage(&self) -> usize

Returns memory usage in bytes.

Implementors§