pub trait Embedder: Send + Sync {
// Required methods
fn dimensions(&self) -> usize;
fn model_name(&self) -> &'static str;
fn embed(&self, text: &str) -> Result<Vec<f32>>;
// Provided method
fn embed_batch(&self, texts: &[&str]) -> Result<Vec<Vec<f32>>> { ... }
}Expand description
Trait for embedding generators.
Implementations must be thread-safe (Send + Sync) to support parallel
embedding generation during chunk loading.
§Examples
use rlm_rs::embedding::{Embedder, FallbackEmbedder, DEFAULT_DIMENSIONS};
let embedder = FallbackEmbedder::new(DEFAULT_DIMENSIONS);
let embedding = embedder.embed("Hello, world!").unwrap();
assert_eq!(embedding.len(), DEFAULT_DIMENSIONS);Required Methods§
Sourcefn dimensions(&self) -> usize
fn dimensions(&self) -> usize
Returns the embedding dimensions.
Sourcefn model_name(&self) -> &'static str
fn model_name(&self) -> &'static str
Returns the model name/version identifier.
This is stored with embeddings to detect model changes.
Provided Methods§
Sourcefn embed_batch(&self, texts: &[&str]) -> Result<Vec<Vec<f32>>>
fn embed_batch(&self, texts: &[&str]) -> Result<Vec<Vec<f32>>>
Generates embeddings for multiple texts.
The default implementation calls embed for each text sequentially.
Implementations may override this for batch optimization.
§Errors
Returns an error if embedding generation fails for any text.