pub trait AnnIndex: Send + Sync {
// Required methods
fn build(vectors: &[Vec<f32>]) -> Result<Self>
where Self: Sized;
fn search(&self, query: &[f32], topk: usize) -> Vec<(u32, f32)>;
fn add(&mut self, id: u32, vector: &[f32]);
fn save(&self, path: &Path) -> Result<()>;
fn load(path: &Path) -> Result<Self>
where Self: Sized;
}