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§
Sourcefn insert(
&mut self,
cid: Cid,
vector: &[f32],
metadata: Option<Metadata>,
) -> Result<()>
fn insert( &mut self, cid: Cid, vector: &[f32], metadata: Option<Metadata>, ) -> Result<()>
Insert a single vector with optional metadata
Sourcefn search(
&mut self,
query: &[f32],
k: usize,
filter: Option<&MetadataFilter>,
) -> Result<Vec<BackendSearchResult>>
fn search( &mut self, query: &[f32], k: usize, filter: Option<&MetadataFilter>, ) -> Result<Vec<BackendSearchResult>>
Search for k nearest neighbors
Sourcefn backend_name(&self) -> &str
fn backend_name(&self) -> &str
Get backend name/type
Sourcefn stats(&self) -> BackendStats
fn stats(&self) -> BackendStats
Get backend statistics
Provided Methods§
Sourcefn insert_batch(
&mut self,
items: &[(Cid, Vec<f32>, Option<Metadata>)],
) -> Result<()>
fn insert_batch( &mut self, items: &[(Cid, Vec<f32>, Option<Metadata>)], ) -> Result<()>
Insert multiple vectors in batch
Sourcefn search_batch(
&mut self,
queries: &[Vec<f32>],
k: usize,
filter: Option<&MetadataFilter>,
) -> Result<Vec<Vec<BackendSearchResult>>>
fn search_batch( &mut self, queries: &[Vec<f32>], k: usize, filter: Option<&MetadataFilter>, ) -> Result<Vec<Vec<BackendSearchResult>>>
Search with multiple queries in batch