pub trait VectorIndex: Send + Sync {
// Required methods
fn dimensions(&self) -> u32;
fn add(
&mut self,
doc_id: DocId,
vector: Vec<f32>,
) -> StorageBackendResult<()>;
fn add_many(
&mut self,
doc_id: DocId,
vectors: Vec<Vec<f32>>,
) -> StorageBackendResult<()>;
fn delete(&mut self, doc_id: DocId) -> StorageBackendResult<()>;
fn clear(&mut self) -> StorageBackendResult<()>;
fn search_knn(
&self,
query: &[f32],
k: usize,
) -> StorageBackendResult<PostingList>;
fn search_threshold(
&self,
query: &[f32],
threshold: f32,
) -> StorageBackendResult<PostingList>;
fn count(&self) -> StorageBackendResult<usize>;
fn snapshot(&self) -> StorageBackendResult<Arc<dyn VectorIndex>>;
// Provided methods
fn index_kind(&self) -> &'static str { ... }
fn initialize(&mut self) -> StorageBackendResult<()> { ... }
fn writable_snapshot(&self) -> StorageBackendResult<Box<dyn VectorIndex>> { ... }
}Required Methods§
fn dimensions(&self) -> u32
fn add(&mut self, doc_id: DocId, vector: Vec<f32>) -> StorageBackendResult<()>
fn add_many( &mut self, doc_id: DocId, vectors: Vec<Vec<f32>>, ) -> StorageBackendResult<()>
fn delete(&mut self, doc_id: DocId) -> StorageBackendResult<()>
fn clear(&mut self) -> StorageBackendResult<()>
fn search_knn( &self, query: &[f32], k: usize, ) -> StorageBackendResult<PostingList>
fn search_threshold( &self, query: &[f32], threshold: f32, ) -> StorageBackendResult<PostingList>
fn count(&self) -> StorageBackendResult<usize>
Sourcefn snapshot(&self) -> StorageBackendResult<Arc<dyn VectorIndex>>
fn snapshot(&self) -> StorageBackendResult<Arc<dyn VectorIndex>>
Read-only handle suitable for an ExecutionContext.
Provided Methods§
fn index_kind(&self) -> &'static str
Sourcefn initialize(&mut self) -> StorageBackendResult<()>
fn initialize(&mut self) -> StorageBackendResult<()>
Build any auxiliary physical metadata required by this index from its current vector contents. Brute-force indexes need no extra work; persistent IVF and HNSW implementations use this during explicit index creation, while restore paths deliberately skip it.
Sourcefn writable_snapshot(&self) -> StorageBackendResult<Box<dyn VectorIndex>>
fn writable_snapshot(&self) -> StorageBackendResult<Box<dyn VectorIndex>>
Independent writable copy used by in-memory engine rollback. The default keeps third-party and persistent implementations source compatible; only indexes hosted by a memory engine need to support it.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".