use crate::core::Result;
use async_trait::async_trait;
use std::collections::HashMap;
#[derive(Debug, Clone)]
pub struct SearchResult {
pub id: String,
pub score: f32,
pub metadata: HashMap<String, String>,
}
#[async_trait]
pub trait VectorStore: Send + Sync {
async fn initialize(&self) -> Result<()>;
async fn add_vector(
&self,
id: &str,
embedding: Vec<f32>,
metadata: HashMap<String, String>,
) -> Result<()>;
async fn add_vectors_batch(
&self,
vectors: Vec<(&str, Vec<f32>, HashMap<String, String>)>,
) -> Result<()>;
async fn search(&self, query_embedding: &[f32], top_k: usize) -> Result<Vec<SearchResult>>;
async fn delete(&self, id: &str) -> Result<()>;
}