Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Embedding providers

mnem decouples embedder from store. Switch providers without re-ingesting.

Built-in providers

ProviderModelNetwork?Notes
onnxall-MiniLM-L6-v2 (bundled)nodefault; in-process; fastest cold-start
ollamaany pulled modellocal HTTPe.g. bge-large, nomic-embed-text
openaitext-embedding-3-small/-largeyesneeds OPENAI_API_KEY
cohereembed-english-v3.0yesneeds COHERE_API_KEY
voyagevoyage-3yesneeds VOYAGE_API_KEY
mockdeterministic blake3notests / smoke

Switching

Edit <repo>/.mnem/config.toml:

[embed]
provider = "ollama"
model = "bge-large"
base_url = "http://127.0.0.1:11434"

Or override per-process:

MNEM_EMBED_PROVIDER=ollama MNEM_EMBED_MODEL=bge-large mnem retrieve "..."

After switching, run mnem reindex to regenerate the per-commit embedding sidecar. Node CIDs are unchanged (they don’t carry embeddings); only the sidecar changes.

Sidecar layout

.mnem/
  store.redb              # nodes + commits
  sidecars/
    <embedder-id>/        # one dir per (provider, model) pair
      <commit-cid>.bin    # embedding bucket for that commit

Multiple sidecars co-exist. retrieve picks the sidecar matching the active embedder; if missing, it builds on-demand.

Adding a provider

Implement the Embedder trait in mnem-embed-providers/src/<your>.rs, gate behind a feature flag, register in the provider registry. See for the contract.