pub trait VectorIndex: Send + Sync {
// Required methods
fn add(&self, id: Uuid, vector: &[f32]) -> Result<()>;
fn remove(&self, id: Uuid) -> Result<()>;
fn search(&self, query: &[f32], limit: usize) -> Result<Vec<(Uuid, f32)>>;
fn filtered_search(
&self,
query: &[f32],
limit: usize,
filter: &dyn Fn(Uuid) -> bool,
) -> Result<Vec<(Uuid, f32)>>;
fn save(&self, path: &Path) -> Result<()>;
fn load(&self, path: &Path) -> Result<()>;
fn len(&self) -> usize;
// Provided method
fn is_empty(&self) -> bool { ... }
}Required Methods§
fn add(&self, id: Uuid, vector: &[f32]) -> Result<()>
fn remove(&self, id: Uuid) -> Result<()>
fn search(&self, query: &[f32], limit: usize) -> Result<Vec<(Uuid, f32)>>
fn filtered_search( &self, query: &[f32], limit: usize, filter: &dyn Fn(Uuid) -> bool, ) -> Result<Vec<(Uuid, f32)>>
fn save(&self, path: &Path) -> Result<()>
fn load(&self, path: &Path) -> Result<()>
fn len(&self) -> usize
Provided Methods§
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".