smelt_memory/embedder/traits.rs
1//! Embedder trait definition
2
3use crate::error::MemoryResult;
4
5/// Trait for generating text embeddings
6pub trait Embedder: Send + Sync {
7 /// Get the embedding dimension
8 fn dimension(&self) -> usize;
9
10 /// Generate an embedding for a single text
11 fn embed(&self, text: &str) -> MemoryResult<Vec<f32>>;
12
13 /// Generate embeddings for multiple texts (may be more efficient)
14 fn embed_batch(&self, texts: &[&str]) -> MemoryResult<Vec<Vec<f32>>> {
15 texts.iter().map(|t| self.embed(t)).collect()
16 }
17}