Repository navigation
Chroma: update ChromaDotNet.Client to 2.20.0, offer hybrid search on distributed Chroma - #84
Merged
Merged
Conversation
…that declare sparse vector indexes
…s sparse vector indexes
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues block approval of the hybrid-search capability changes.
No open issues 🎉
What changed in this PR
Extends the Chroma vector-store provider’s hybrid search support beyond Chroma Cloud to distributed deployments and servers that advertise sparse vector indexes, following up on #75.
Changes:
- Uses client-managed capability detection instead of caching hybrid search availability in each collection, and clarifies missing-index errors.
- Updates ChromaDotNet.Client to
2.20.0and the provider to1.1.0-preview. - Adds unit coverage, makes conformance tests capability-based, and documents distributed Chroma support and limitations.
| File | Description |
|---|---|
MEVD/test/Chroma.UnitTests/ChromaCollectionTests.cs |
Tests capability changes, skipped probes, and missing-index diagnostics. |
MEVD/test/Chroma.ConformanceTests/testsettings.json |
Updates the configuration comment to mention distributed Chroma. |
MEVD/test/Chroma.ConformanceTests/Support/ChromaTestStore.cs |
Detects sparse-vector support during store startup. |
MEVD/test/Chroma.ConformanceTests/README.md |
Documents server requirements for hybrid search tests. |
MEVD/test/Chroma.ConformanceTests/ChromaHybridSearchTests.cs |
Gates tests on server capabilities rather than Cloud addresses. |
MEVD/src/Chroma/README.md |
Documents hybrid search availability and distributed text-filter limits. |
MEVD/src/Chroma/ChromaCollection.cs |
Delegates capability detection to the client and updates diagnostics. |
MEVD/src/Chroma/Chroma.csproj |
Bumps the provider version to 1.1.0-preview. |
Directory.Packages.props |
Upgrades ChromaDotNet.Client to 2.20.0. |
Review effort: Balanced
Laurianti
marked this pull request as draft
November 6, 2026 22:47
Laurianti
marked this pull request as ready for review
November 6, 2026 23:09
adamsitnik
reviewed
Nov 9, 2026
adamsitnik
left a comment
Contributor
There was a problem hiding this comment.
Overall it looks very good, I've left only one question. Thank you @Laurianti !
adamsitnik
approved these changes
Nov 9, 2026
adamsitnik
left a comment
Contributor
There was a problem hiding this comment.
LGTM, again thank you @Laurianti !
Contributor
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 #75.
Changes
pre-flight-checks. Before,GetServiceofferedIKeywordHybridSearchableonly on Chroma Cloud. Now it asks the client whether the server takes sparse vector indexes, the same check the client makes before it creates the BM25 indexes. Distributed Chroma installed elsewhere is named withDistributed=truein the connection string, orWithDistributedChroma()in the options of the client.IKeywordHybridSearchable, and a hybrid search throwsInvalidOperationException. Its message now names the servers that have BM25 indexes and the setting for distributed Chroma, instead of "Only Chroma Cloud has BM25 indexes". On distributed Chroma, a collection without the index says that it was created without it, as on Chroma Cloud, without the key quota, which only Chroma Cloud has.falseuntil the collection is created again.Containson the full-text property throwsArgumentExceptionfor a text of fewer than 3 characters, as on Chroma Cloud.Containsunder 3 characters on distributed Chroma.Tests
chromadb/chroma:1.5.9: 218 and 216 passed, 7 skipped, as on main. The 7 skipped are the hybrid search tests;Distributed=true, and on a server that declares sparse vector indexes: 225 and 223 passed, none skipped.IKeywordHybridSearchablebefore the server was up: not offered. Once the server answered, it was offered without a restart, and 10,000 more calls sent no request.chromadb/chroma:1.5.9: 20 seeds of 500 cases, and two more cultures. No difference beyond the known defects of Chroma 1.5.9 under concurrent writes.