use crate::embedding::Embedding;
use crate::similarity::EmbeddingMatch;
pub trait EmbeddingStore<Embedded: Clone + Ord> {
fn add(&mut self, embedding: Embedding) -> String;
fn add_with_id(&mut self, id: String, embedding: Embedding);
fn add_with_embedded(&mut self, embedding: Embedding, embedded: Embedded) -> String;
fn add_all(&mut self, embeddings: Vec<Embedding>) -> Vec<String>;
fn add_all_with_embedded(&mut self, embeddings: Vec<Embedding>, embedded: Vec<Embedded>) -> Vec<String>;
fn find_relevant(
&self,
reference_embedding: Embedding,
max_results: usize,
min_score: f32,
) -> Vec<EmbeddingMatch<Embedded>>;
}