Skip to content

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
CommunityToolkit:mainfrom
Laurianti:chroma-2-18
Open

Laurianti wants to merge 5 commits into
CommunityToolkit:mainfrom
Laurianti:chroma-2-18

Conversation

@Laurianti

@Laurianti Laurianti commented Oct 21, 2026 •

Copy link
Copy Markdown
Member

Follow-up to #69.

Fixes

  • A data property whose storage name starts with chroma:, like [VectorStoreData(StorageName = "chroma:tag")]. Chroma drops the metadata keys that start with chroma: from every read. Before, the collection was created and the writes succeeded, but the property always read back as null. Now the collection throws NotSupportedException when it is created, as for # and $. Only the lower-case prefix is rejected: Chroma keeps Chroma:tag.
  • Hybrid search on Chroma Cloud with two or more full-text properties. The BM25 index of each one has the key of its storage name with _bm25. When that key is longer than the 36 bytes that Chroma Cloud takes, the collection is created without the index. Before, GetService still offered IKeywordHybridSearchable, 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, and GetService offers 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

  • ChromaDotNet.Client from 2.14.0 to 2.18.0: see its release notes. For the provider: a value that is not text under chroma:document throws ArgumentException before the request; a read waits a short delay before a retry; on Chroma Cloud, the quotas learned from a 422 answer split reads and deletes into smaller batches.
  • README: the 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.
  • Provider version bumped to 1.0.2-preview.

Tests

  • 12 new unit tests. 8 fail without the fix of their commit; the other 4 check that names that only look like the prefix, like Chroma:tag, are still accepted.
  • Conformance tests: 218 passed and 7 skipped on chromadb/chroma:1.5.9, 225 passed on Chroma Cloud, as on main.
  • On Chroma Cloud, a collection with two full-text properties whose index keys have 36 and 37 bytes: hybrid search works on the first and throws the new error on the second.

Copilot AI balanced review requested due to automatic review settings October 21, 2026 18:31

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 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

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.

2 participants