Search docs…⌘K
v0.10.0 · MIT

Feather Core is open source. Star us and ship fast.

View on GitHub →
Home/Docs/Cloud Edition/Embedding Providers
Cloud Edition · v0.10

Pluggable embeddings.

Six providers in the box. Configure once in the admin SPA, then call /v1/{ns}/ingest_text and the server handles embed + store in one round trip.

The six providers

OpenAI
  • text-embedding-3-small (1536d)
  • text-embedding-3-large (3072d)
  • ada-002 (1536d, legacy)
Fields: api_key
Azure OpenAI
  • any deployment of text-embedding-3 family
Fields: endpoint · deployment · api_version · api_key
Google AI · Gemini
  • gemini-embedding-001 (current)
  • gemini-embedding-exp
  • text-embedding-004 (deprecated)
Fields: api_key
Voyage
  • voyage-3
  • voyage-3-lite
  • voyage-large-2
  • voyage-code-2
Fields: api_key
Cohere
  • embed-english-v3
  • embed-multilingual-v3
  • embed-english-light-v3
Fields: api_key
Ollama
  • nomic-embed-text
  • mxbai-embed-large
  • all-minilm
Fields: base_url (no key required)

Configure via the admin SPA

Settings → Embedding service

  1. Open the admin SPA → SettingsEmbedding service.
  2. Pick a provider — the model dropdown updates with that provider's catalog.
  3. Paste credentials. For Azure: also set endpoint, deployment, api_version.
  4. Click Test — the server runs a real embed against the provider and reports OK or the error.
  5. Click Save. Stored in-memory only; the API key is never echoed back.

If the configured model's dim differs from the namespace dim (default 768), the server pads with zeros or truncates automatically.

Configure via REST

PUT /v1/admin/embedding_config

curl -X PUT http://localhost:8000/v1/admin/embedding_config \
  -H "X-API-Key: $FEATHER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider": "openai",
    "model":    "text-embedding-3-small",
    "api_key":  "sk-..."
  }'
Parameters
  • providerstrOne of openai, azure, gemini, voyage, cohere, ollama.
  • modelstrModel name from the provider's catalog (see GET /v1/admin/embedding_models).
  • api_keystrStored in-memory only. Never echoed back on subsequent GETs.
  • endpointstr?Azure only — https://<resource>.openai.azure.com
  • deploymentstr?Azure only — your deployment name.
  • api_versionstr?Azure only — e.g. 2024-02-01.
  • base_urlstr?Ollama only — e.g. http://localhost:11434.

One-call embed + store

POST /v1/{ns}/ingest_text

The headline endpoint. Server takes raw text, embeds it via the configured provider, and stores the vector + metadata in one round trip.

import requests

r = requests.post(
    "http://localhost:8000/v1/acme/ingest_text",
    headers={"X-API-Key": FEATHER_API_KEY},
    json={
        "text": "Summer 2026 Instagram ad — sandals, 30% off, women 25–40.",
        "metadata": {
            "namespace_id": "acme",
            "entity_id":    "creative_001",
            "attributes":   {
                "brand":    "acme",
                "channel":  "instagram",
                "campaign": "summer-2026",
            },
        },
    },
)
print(r.json())
# → {"id": 1729..., "namespace": "acme", "embedded": true, "dim": 768}

Inspect the catalog

GET /v1/admin/embedding_models

Returns the curated dropdown the admin SPA uses. Handy if you're building a custom settings UI.

curl -H "X-API-Key: $FEATHER_API_KEY" \
  http://localhost:8000/v1/admin/embedding_models