use crate::BoxFuture;
use crate::documents::Document;
use crate::embeddings::Embeddings;
use crate::error::SynwireError;
pub trait VectorStore: Send + Sync {
fn add_documents<'a>(
&'a self,
documents: &'a [Document],
embeddings: &'a dyn Embeddings,
) -> BoxFuture<'a, Result<Vec<String>, SynwireError>>;
fn similarity_search<'a>(
&'a self,
query: &'a str,
k: usize,
embeddings: &'a dyn Embeddings,
) -> BoxFuture<'a, Result<Vec<Document>, SynwireError>>;
fn similarity_search_with_score<'a>(
&'a self,
query: &'a str,
k: usize,
embeddings: &'a dyn Embeddings,
) -> BoxFuture<'a, Result<Vec<(Document, f32)>, SynwireError>>;
fn delete<'a>(&'a self, ids: &'a [String]) -> BoxFuture<'a, Result<(), SynwireError>>;
}