Skip to content

Providers

Decision matrix

ScenarioRecommendedWhy
Initial sync (large mailbox)Gemini Paid (Tier 1+)Fast throughput, unlimited daily requests
Maintenance onlyGemini Free1,000 RPD often enough for new mail
Cost-sensitive + small mailboxGemini FreeFree (but slow for large initial sync)
Resilience / fallbackCohere + Gemini FreeCombine free tiers
Privacy-first / air-gappedOllama (local)No external API calls

Gemini

yaml
embeddings:
  enabled: true
  provider: gemini
  gemini_api_key: ${GEMINI_API_KEY}
  gemini_model: text-embedding-004
  dimensions: 3072
  batch_size: 100
  task_type: RETRIEVAL_DOCUMENT

Cohere

yaml
embeddings:
  enabled: true
  provider: cohere
  api_key: ${COHERE_API_KEY}
  model: embed-v4.0
  dimensions: 1536
  batch_size: 80
  input_type: search_document
  truncate: END

OpenAI-compatible (OpenAI, Azure, LiteLLM, etc.)

yaml
embeddings:
  enabled: true
  provider: openai_compat
  endpoint: https://api.openai.com/v1
  model: text-embedding-3-small
  api_key: ${OPENAI_API_KEY}
  dimensions: 1536
  batch_size: 100

Provider fallback

yaml
embeddings:
  enabled: true
  provider: cohere
  api_key: ${COHERE_API_KEY}
  model: embed-v4.0

  fallback_provider: gemini
  gemini_api_key: ${GEMINI_API_KEY}
  gemini_model: text-embedding-004

  dimensions: 768   # must match across providers

Released under the MIT License.