pub trait EmbeddingProvider: Send + Sync {
// Required methods
fn embed(&self, text: &str) -> Result<Vec<f32>>;
fn embed_batch(&self, texts: &[&str]) -> Result<Vec<Vec<f32>>>;
fn dimension(&self) -> usize;
fn model_name(&self) -> &str;
fn provider_name(&self) -> &'static str;
// Provided method
fn batch_size(&self) -> usize { ... }
}