use super::{
VectorIndexDescriptor, VectorIndexStatus, VectorRecord, VectorResult, VectorSearchRequest,
VectorSearchResult,
};
#[async_trait::async_trait]
pub trait VectorIndex: Send + Sync {
fn descriptor(&self) -> &VectorIndexDescriptor;
fn status(&self) -> VectorIndexStatus;
async fn replace_partition(
&self,
partition: &str,
records: Vec<VectorRecord>,
) -> VectorResult<VectorIndexStatus>;
async fn remove_partition(&self, partition: &str) -> VectorResult<VectorIndexStatus>;
async fn search(&self, request: VectorSearchRequest) -> VectorResult<VectorSearchResult>;
async fn clear(&self) -> VectorResult<VectorIndexStatus>;
}