mem0_rust/embeddings/
traits.rs1use async_trait::async_trait;
4use crate::errors::EmbeddingError;
5
6#[async_trait]
8pub trait Embedder: Send + Sync {
9 async fn embed(&self, text: &str) -> Result<Vec<f32>, EmbeddingError>;
11
12 async fn embed_batch(&self, texts: &[&str]) -> Result<Vec<Vec<f32>>, EmbeddingError> {
14 let mut results = Vec::with_capacity(texts.len());
15 for text in texts {
16 results.push(self.embed(text).await?);
17 }
18 Ok(results)
19 }
20
21 fn dimensions(&self) -> usize;
23
24 fn model_name(&self) -> &str {
26 "unknown"
27 }
28}