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.

```text
Embedding function name mismatch
```

## Fix it

1. Confirm the mismatch: the collection was created under one embedding function (e.g. `default`) and the server now configures another (e.g. `openai` or `accurate`).

2. 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.

3. Re-index with the current embedding function. The server recreates the collection with the configured function on next use.

4. 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_FUNCTION` or the `--embedding-function` flag.

## 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

- chroma_mcp_server (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_KEY` style 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.