Repository navigation
Chroma: update ChromaDotNet.Client to 2.18.0, reject chroma: storage names, explain missing BM25 indexes on Chroma Cloud - #75
Open
Laurianti wants to merge 5 commits into
Conversation
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
The focused changes have targeted regression coverage and no identified blocking issues; tests were not independently executed.
No open issues 🎉
What changed in this PR
Updates the Chroma provider’s client dependency and improves handling of reserved storage names and Chroma Cloud BM25 index limits.
Changes:
- Rejects data storage names starting with lowercase
chroma:. - Improves hybrid-search availability checks and missing-index diagnostics.
- Adds regression tests, expands compatibility documentation, and bumps dependency and provider versions.
| File | Description |
|---|---|
| MEVD/test/Chroma.UnitTests/ChromaHotel.cs | Adds models for BM25 key-length boundaries. |
| MEVD/test/Chroma.UnitTests/ChromaCollectionTests.cs | Tests reserved names and hybrid-search limits. |
| MEVD/src/Chroma/README.md | Documents compatibility and service limitations. |
| MEVD/src/Chroma/ChromaModelBuilder.cs | Rejects reserved chroma: storage names. |
| MEVD/src/Chroma/ChromaCollectionCreateMapping.cs | Adds BM25 key naming and quota helpers. |
| MEVD/src/Chroma/ChromaCollection.cs | Updates hybrid-search discovery and errors. |
| MEVD/src/Chroma/Chroma.csproj | Bumps provider to 1.0.2-preview. |
| Directory.Packages.props | Updates ChromaDotNet.Client to 2.18.0. |
Review effort: Balanced
Laurianti
force-pushed
the
chroma-2-18
branch
from
October 21, 2026 18:36
7865384 to
31e13b6
Compare
…a drops from every read
…ffer hybrid search only with an index it takes
Laurianti
force-pushed
the
chroma-2-18
branch
from
October 21, 2026 19:03
1ba5d9c to
53c9dd4
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #69.
Fixes
chroma:, like[VectorStoreData(StorageName = "chroma:tag")]. Chroma drops the metadata keys that start withchroma:from every read. Before, the collection was created and the writes succeeded, but the property always read back asnull. Now the collection throwsNotSupportedExceptionwhen it is created, as for#and$. Only the lower-case prefix is rejected: Chroma keepsChroma:tag._bm25. When that key is longer than the 36 bytes that Chroma Cloud takes, the collection is created without the index. Before,GetServicestill offeredIKeywordHybridSearchable, and a hybrid search on that property threw "Only Chroma Cloud has BM25 indexes", on Chroma Cloud too. Now the error names the key and the quota, andGetServiceoffers hybrid search only when at least one index fits. When the key fits but the collection has no index, as one created by another client, the error on Chroma Cloud says that the collection was created without it.Changes
chroma:documentthrowsArgumentExceptionbefore the request; a read waits a short delay before a retry; on Chroma Cloud, the quotas learned from a422answer split reads and deletes into smaller batches.chroma:storage names; the BM25 index keys on Chroma Cloud; the space of a collection on Chroma 1.0.0 to 1.0.5; on self-hosted Chroma 1.5.9, reads during concurrent upserts of the same record; on Chroma 1.5.9, cosine searches with nearly parallel vectors.Tests
Chroma:tag, are still accepted.chromadb/chroma:1.5.9, 225 passed on Chroma Cloud, as on main.