pub trait EmbeddingProvider:
Send
+ Sync
+ Clone {
// Required methods
fn name(&self) -> &'static str;
fn dimension(&self) -> usize;
fn generate(
&self,
text: &str,
) -> impl Future<Output = Result<Vec<f32>, AppError>> + Send;
// Provided methods
fn max_batch_size(&self) -> usize { ... }
fn generate_batch(
&self,
texts: &[String],
) -> impl Future<Output = Result<Vec<Vec<f32>>, AppError>> + Send { ... }
}Expand description
Provider for generating text embeddings.
Implementations convert text into vector representations for semantic search. Different providers may produce vectors of different dimensions:
- Gemini text-embedding-004: 768 dimensions
- OpenAI text-embedding-3-small: 1536 dimensions
- OpenAI text-embedding-3-large: 3072 dimensions
Required Methods§
Sourcefn name(&self) -> &'static str
fn name(&self) -> &'static str
Returns the provider identifier for logging and configuration.
§Examples
"gemini"for Google Gemini"openai"for OpenAI
Sourcefn dimension(&self) -> usize
fn dimension(&self) -> usize
Returns the embedding dimension this provider generates.
This value must match the database column dimension for vector storage. Mismatched dimensions will cause insertion failures.
Provided Methods§
Sourcefn max_batch_size(&self) -> usize
fn max_batch_size(&self) -> usize
Maximum number of texts supported per batch API call.
The harvest pipeline uses min(config.embedding_batch_size, max_batch_size())
to ensure batches never exceed provider limits.
§Defaults
Returns 1 (single-item batches). Providers with native batch support
should override to enable efficient batching.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.