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}