Repository navigation
ChromaDotNet.Client and ChromaDotNet.Client.DependencyInjection 2.20.0, released together.
New
SupportsSparseVectorIndexesAsync()andSupportsSparseVectorIndexes()ofChromaClientsay whether the server takes sparse vector indexes, like the BM25 index ofWithBm25Index: whether the client sends the indexes added withifSupported. Distributed Chroma, the one Chroma Cloud runs on, takes them: on Chroma Cloud, and elsewhere when the options name it withWithDistributedChroma(). So do the servers that declare them inpre-flight-checks, like VecturaDB. A single Chroma server does not. When the server does not answer within 5 seconds, or its answer cannot be read, the answer is what the options say: the asynchronous method asks again at the next call, the synchronous one keeps it for 30 seconds.- The synchronous method is for the callers that cannot await, like a synchronous
GetService. Its request runs on the thread pool, so it does not deadlock under the synchronization context of a UI or of ASP.NET on .NET Framework. After an answer of the server it answers at once, and asks again in the background when that answer is two minutes old. DistributedChromaofChromaConfigurationOptionsis whatWithDistributedChroma()orDistributed=truein the connection string set, also on the address of Chroma Cloud, for code that passes the setting on.IsDistributedChromastays whether the client takes the server for distributed Chroma, Chroma Cloud included.
Fixes
- The comments of
GetCollectionByCrnAsync,UpdateTenantAsyncandChromaTenant.ResourceName, and the docs, gave the resource names of the tenants and the get of a collection by its CRN to Chroma Cloud only. They now name distributed Chroma, the one Chroma Cloud runs on.
Docs
docs/sparse-vectors-and-schema.md: the two methods.docs/connecting.md:DistributedChromanext toIsDistributedChroma.docs/chroma-cloud.md: the resource names on distributed Chroma.docs/COMPATIBILITY.md:- Chroma 1.5.9 answers
add_inputwith404without a body, soAddFunctionInputAsyncthrows aChromaException"NotFound: POST …/attached_functions/stats/add_input"; - distributed Chroma keeps the resource name of a tenant and gets a collection by its CRN. It answers
500"collection not found" for a CRN without a collection, and refuses the name of a database with fewer than 3 characters.
- Chroma 1.5.9 answers
In our tests on 6 November 2026, both methods answered false on Chroma 1.5.9, and true on Chroma Cloud, on VecturaDB 1.0.0-preview.8 and on distributed Chroma at 52ce844, installed with ChromaDB.Operator 0.1.3, with WithDistributedChroma(). The client created the collection of the test with the index added with ifSupported exactly where they answered true.
Nothing breaks for the existing code: the public API only gains members.
NuGet: https://www.nuget.org/packages/ChromaDotNet.Client/2.20.0 and https://www.nuget.org/packages/ChromaDotNet.Client.DependencyInjection/2.20.0