Expand description
Embedding provider abstraction and implementations.
Defines the EmbeddingProvider trait and concrete implementations:
DisabledProvider— returns errors; used when embeddings are not configured.OpenAIProvider— calls the OpenAI embeddings API with batching, retry, and backoff.OllamaProvider— calls a local Ollama instance’s/api/embedendpoint.LocalProvider— runs models locally via fastembed (primary) or tract (musl/Intel Mac); no network calls after model download.
Also provides vector utilities for working with sqlite-vec:
cosine_similarity— compute similarity between two embedding vectorsvec_to_blob— encode aVec<f32>as little-endian bytes for SQLite BLOB storageblob_to_vec— decode a SQLite BLOB back into aVec<f32>
§Provider Selection
Use create_provider to instantiate the appropriate provider based
on the configuration:
let config = EmbeddingConfig::default(); // provider = "disabled"
let provider = create_provider(&config).unwrap();
assert_eq!(provider.model_name(), "disabled");§Retry Strategy
The OpenAI and Ollama providers use exponential backoff for transient errors:
- HTTP 429 (rate limited) and 5xx (server error) → retry
- HTTP 4xx (client error, not 429) → fail immediately
- Network errors → retry
- Backoff: 1s, 2s, 4s, 8s, 16s, 32s (capped at 2^5)
Structs§
- Disabled
Provider - A no-op embedding provider that always returns errors.
- Local
Provider - Embedding provider for local inference (fastembed on primary platforms, tract on musl/Intel Mac).
- Ollama
Provider - Embedding provider using a local Ollama instance.
- OpenAI
Provider - Embedding provider using the OpenAI API.
Traits§
- Embedding
Provider - Trait for embedding providers.
Functions§
- blob_
to_ vec - Decode a BLOB back into a float vector.
- config_
to_ 🔒fastembed_ model - cosine_
similarity - Compute cosine similarity between two embedding vectors.
- create_
provider - Create the appropriate
EmbeddingProviderbased on configuration. - embed_
local_ 🔒fastembed - embed_
ollama 🔒 - embed_
openai 🔒 - Call the OpenAI embeddings API with retry/backoff.
- embed_
query - Embed a single query text.
- embed_
texts - Embed a batch of texts using the configured provider.
- parse_
ollama_ 🔒response - parse_
openai_ 🔒response - Parse the OpenAI embeddings API response JSON.
- resolve_
local_ 🔒model - vec_
to_ blob - Encode a float vector as a BLOB (little-endian f32 bytes).