mem0_rust/embeddings/
traits.rs

1//! Embedder trait definition.
2
3use async_trait::async_trait;
4use crate::errors::EmbeddingError;
5
6/// Trait for embedding text into vectors
7#[async_trait]
8pub trait Embedder: Send + Sync {
9    /// Embed a single text into a vector
10    async fn embed(&self, text: &str) -> Result<Vec<f32>, EmbeddingError>;
11
12    /// Embed multiple texts into vectors
13    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    /// Get the dimension of embeddings produced by this embedder
22    fn dimensions(&self) -> usize;
23
24    /// Get the model name (for logging/debugging)
25    fn model_name(&self) -> &str {
26        "unknown"
27    }
28}