memory_mcp/embedding/
mod.rs1mod candle;
2
3use crate::error::MemoryError;
4
5pub use self::candle::{CandleEmbeddingEngine, MODEL_ID};
6
7#[async_trait::async_trait]
10pub trait EmbeddingBackend: Send + Sync {
11 async fn embed(&self, texts: &[String]) -> Result<Vec<Vec<f32>>, MemoryError>;
13
14 async fn embed_one(&self, text: &str) -> Result<Vec<f32>, MemoryError> {
16 let mut results = self.embed(&[text.to_string()]).await?;
17 results
18 .pop()
19 .ok_or_else(|| MemoryError::Embedding("embedding returned no vectors".to_string()))
20 }
21
22 fn dimensions(&self) -> usize;
24}