VectorBackend

Trait VectorBackend 

Source
pub trait VectorBackend: Send + Sync {
    // Required methods
    fn insert(
        &mut self,
        cid: Cid,
        vector: &[f32],
        metadata: Option<Metadata>,
    ) -> Result<()>;
    fn search(
        &mut self,
        query: &[f32],
        k: usize,
        filter: Option<&MetadataFilter>,
    ) -> Result<Vec<BackendSearchResult>>;
    fn delete(&mut self, cid: &Cid) -> Result<()>;
    fn get(&self, cid: &Cid) -> Result<Option<(Vec<f32>, Option<Metadata>)>>;
    fn count(&self) -> Result<usize>;
    fn clear(&mut self) -> Result<()>;
    fn backend_name(&self) -> &str;
    fn stats(&self) -> BackendStats;

    // Provided methods
    fn insert_batch(
        &mut self,
        items: &[(Cid, Vec<f32>, Option<Metadata>)],
    ) -> Result<()> { ... }
    fn search_batch(
        &mut self,
        queries: &[Vec<f32>],
        k: usize,
        filter: Option<&MetadataFilter>,
    ) -> Result<Vec<Vec<BackendSearchResult>>> { ... }
    fn update(
        &mut self,
        cid: &Cid,
        vector: &[f32],
        metadata: Option<Metadata>,
    ) -> Result<()> { ... }
}
Expand description

Common interface for vector database backends

Required Methods§

Source

fn insert( &mut self, cid: Cid, vector: &[f32], metadata: Option<Metadata>, ) -> Result<()>

Insert a single vector with optional metadata

Source

fn search( &mut self, query: &[f32], k: usize, filter: Option<&MetadataFilter>, ) -> Result<Vec<BackendSearchResult>>

Search for k nearest neighbors

Source

fn delete(&mut self, cid: &Cid) -> Result<()>

Delete a vector by CID

Source

fn get(&self, cid: &Cid) -> Result<Option<(Vec<f32>, Option<Metadata>)>>

Get vector by CID

Source

fn count(&self) -> Result<usize>

Count total vectors in the backend

Source

fn clear(&mut self) -> Result<()>

Clear all vectors

Source

fn backend_name(&self) -> &str

Get backend name/type

Source

fn stats(&self) -> BackendStats

Get backend statistics

Provided Methods§

Source

fn insert_batch( &mut self, items: &[(Cid, Vec<f32>, Option<Metadata>)], ) -> Result<()>

Insert multiple vectors in batch

Source

fn search_batch( &mut self, queries: &[Vec<f32>], k: usize, filter: Option<&MetadataFilter>, ) -> Result<Vec<Vec<BackendSearchResult>>>

Search with multiple queries in batch

Source

fn update( &mut self, cid: &Cid, vector: &[f32], metadata: Option<Metadata>, ) -> Result<()>

Update vector for existing CID

Implementors§