graphrag_core/vector/
store.rs1use crate::core::Result;
2use async_trait::async_trait;
3use std::collections::HashMap;
4
5#[derive(Debug, Clone)]
7pub struct SearchResult {
8 pub id: String,
10 pub score: f32,
12 pub metadata: HashMap<String, String>,
14}
15
16#[async_trait]
18pub trait VectorStore: Send + Sync {
19 async fn initialize(&self) -> Result<()>;
21
22 async fn add_vector(
24 &self,
25 id: &str,
26 embedding: Vec<f32>,
27 metadata: HashMap<String, String>,
28 ) -> Result<()>;
29
30 async fn add_vectors_batch(
32 &self,
33 vectors: Vec<(&str, Vec<f32>, HashMap<String, String>)>,
34 ) -> Result<()>;
35
36 async fn search(&self, query_embedding: &[f32], top_k: usize) -> Result<Vec<SearchResult>>;
38
39 async fn delete(&self, id: &str) -> Result<()>;
41}