Skip to main content

mentedb_embedding/
provider.rs

1//! Embedding provider traits for synchronous and asynchronous embedding generation.
2
3use mentedb_core::error::MenteResult;
4
5/// Synchronous embedding provider.
6pub trait EmbeddingProvider: Send + Sync {
7    /// Generate an embedding vector for a single text.
8    fn embed(&self, text: &str) -> MenteResult<Vec<f32>>;
9
10    /// Generate embedding vectors for a batch of texts.
11    fn embed_batch(&self, texts: &[&str]) -> MenteResult<Vec<Vec<f32>>>;
12
13    /// The dimensionality of the embedding vectors produced by this provider.
14    fn dimensions(&self) -> usize;
15
16    /// The name of the model used by this provider.
17    fn model_name(&self) -> &str;
18}
19
20/// Asynchronous embedding provider.
21pub trait AsyncEmbeddingProvider: Send + Sync {
22    /// Generate an embedding vector for a single text.
23    fn embed(&self, text: &str) -> impl std::future::Future<Output = MenteResult<Vec<f32>>> + Send;
24
25    /// Generate embedding vectors for a batch of texts.
26    fn embed_batch(
27        &self,
28        texts: &[&str],
29    ) -> impl std::future::Future<Output = MenteResult<Vec<Vec<f32>>>> + Send;
30
31    /// The dimensionality of the embedding vectors produced by this provider.
32    fn dimensions(&self) -> usize;
33
34    /// The name of the model used by this provider.
35    fn model_name(&self) -> &str;
36}