Skip to content

Allow selecting an alternative ollama embedding model via env vars - #1

Open
juev wants to merge 1 commit into
calpaterson:mainfrom
juev:configurable-embedding-model
Open

juev wants to merge 1 commit into
calpaterson:mainfrom
juev:configurable-embedding-model

Conversation

@juev

@juev juev commented Sep 1, 2026

Copy link
Copy Markdown

The spec explicitly allows memoryfields to use embedding models other than nomic-embed-text-v1.5, but the tool hardcodes it. This makes the embedding model configurable through the environment:

  • MEMORYFIELD_EMBED_MODEL: any model available in the local ollama (eg: bge-m3, a strong multilingual model that handles paraphrase queries much better than nomic-embed-text in non-English languages — in our testing with 14 Russian paraphrase queries, bge-m3 ranked the correct page first 11/14 times vs 2/14 for nomic-embed-text)
  • MEMORYFIELD_EMBED_MODEL_CODE: optional explicit model code for the vector index filename (defaults to the ollama model name, per the spec's note on provider shorthands)

With no env vars set, behaviour is unchanged (covered by a test). The index filename follows MODEL_CODE, so different models produce separate index caches and existing indexes remain valid.

New tests cover the override, the explicit model code and the no-env default; the full suite passes (155 passed) and ruff + mypy --strict are clean.

Motivating real-world case: agent memory in a non-English language (Russian), where nomic-embed-text's retrieval quality on paraphrase queries was too weak to be usable.

The spec explicitly allows memoryfields to use embedding models other than
nomic-embed-text-v1.5, but the tool hardcodes it.  This makes the embedding
model configurable through the environment:

- MEMORYFIELD_EMBED_MODEL: any model available in the local ollama
  (eg: bge-m3, a strong multilingual model that handles paraphrase
  queries much better than nomic-embed-text in non-English languages)
- MEMORYFIELD_EMBED_MODEL_CODE: optional explicit model code for the
  vector index filename (defaults to the ollama model name, per the
  spec's note on provider shorthands)

With no env vars set, behaviour is unchanged.  The index filename follows
MODEL_CODE, so different models produce separate index caches and old
indexes remain valid.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant