Module embedding

Module embedding 

Source
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/embed endpoint.
  • 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 vectors
  • vec_to_blob — encode a Vec<f32> as little-endian bytes for SQLite BLOB storage
  • blob_to_vec — decode a SQLite BLOB back into a Vec<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§

DisabledProvider
A no-op embedding provider that always returns errors.
LocalProvider
Embedding provider for local inference (fastembed on primary platforms, tract on musl/Intel Mac).
OllamaProvider
Embedding provider using a local Ollama instance.
OpenAIProvider
Embedding provider using the OpenAI API.

Traits§

EmbeddingProvider
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 EmbeddingProvider based 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).