Chroma Cloud's hosted embedding functions¶
Chroma Cloud ran two embedding models on its own servers. They stop when Chroma Cloud stops.
| Embedding function | Open model | Kind |
|---|---|---|
chroma-cloud-qwen |
Qwen/Qwen3-Embedding-0.6B |
dense, 1024 dimensions |
chroma-cloud-splade |
prithivida/Splade_PP_en_v1 |
sparse |
Your stored embeddings don't change. pgchroma migrate copies them as they are. Only new
documents and query text need a model.
Let the migration switch them¶
pip install sentence-transformers
pgchroma migrate --from-cloud --api-key "$CHROMA_API_KEY" --database-url "$DATABASE_URL" \
--local-embedding-functions
Collections that used a hosted function are configured to use the same open model through
sentence-transformers, wherever the function appears in the collection's configuration or
schema. The chromadb client loads it from the collection, so query_texts= and
add(documents=...) keep working with no code change. Without the flag, the migration warns
about every collection that uses a hosted function.
Qwen is configured in float32; in bfloat16 its vectors drift slightly. If your collection used a
Qwen task (such as nl_to_code), queries need an instruction prefix:
examples/local_qwen_embeddings.py
shows how.
Check before December 22¶
Run a few of your own queries on Chroma Cloud and on pgchroma while Chroma Cloud still answers, and compare the top results. The models are the same, but the runtime differs, so confirm it on your data.