Chroma MCP: Embedding function name mismatch (delete and re-index the collection)
Fixes the Chroma MCP server failing with Embedding function name mismatch after CHROMA_EMBEDDING_FUNCTION was changed. Collections remember the embedding function they were created with. The fix is deleting and re-indexing the collection with the current function. Use when the embedding setting changed after collections were created; not for connection errors.
TL;DR: You changed CHROMA_EMBEDDING_FUNCTION after the collection was created, and ChromaDB refuses to mix embedding functions. Delete the collection and re-index with the current setting. There is no in-place conversion.
Embedding function name mismatchFix it
- Confirm the mismatch: the collection was created under one embedding function (e.g.
default) and the server now configures another (e.g.openaioraccurate).
- Delete the affected collection. Use the MCP server's delete-collection tool or the API. This destroys the indexed data, so be sure you can re-index.
- Re-index with the current embedding function. The server recreates the collection with the configured function on next use.
- Restart the MCP client.
Expected: the mismatch error is gone; queries use the new embedding function.
When to use this
- The error is exactly
Embedding function name mismatch. - You recently changed
CHROMA_EMBEDDING_FUNCTIONor the--embedding-functionflag.
When NOT to use this
- The collection was created with the current setting and still fails. Then it is a different problem (check API keys for hosted embedding functions).
- Connection errors. Fix reachability first.
Compatibility
- chromamcpserver (djm81) and chroma-mcp servers with configurable embedding functions.
Why it happens
A collection's embedding function is fixed at creation because the stored vectors were produced by it. Query-time vectors must come from the same function or similarity is meaningless. ChromaDB enforces this rather than silently returning garbage.
Edge cases
- API-based embedding functions (OpenAI, Cohere, Gemini) need their API keys set (
CHROMA_OPENAI_API_KEYstyle vars) or creation fails differently. - If several collections exist, each must be rebuilt. Audit all of them after a function change.
- Decide on the embedding function once per project and stop changing it. Re-indexing is the tax on indecision.
Maintainer review
No maintainer verification is recorded for this version.
This records the version a maintainer checked. It does not assert that the version is the latest upstream release.