Skip to content

2.20.0

Latest

Choose a tag to compare

@Laurianti Laurianti released this 06 Nov 19:34
· 4 commits to main since this release
v2.20.0
ce264e4

ChromaDotNet.Client and ChromaDotNet.Client.DependencyInjection 2.20.0, released together.

New

  • SupportsSparseVectorIndexesAsync() and SupportsSparseVectorIndexes() of ChromaClient say whether the server takes sparse vector indexes, like the BM25 index of WithBm25Index: whether the client sends the indexes added with ifSupported. Distributed Chroma, the one Chroma Cloud runs on, takes them: on Chroma Cloud, and elsewhere when the options name it with WithDistributedChroma(). So do the servers that declare them in pre-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.
  • DistributedChroma of ChromaConfigurationOptions is what WithDistributedChroma() or Distributed=true in the connection string set, also on the address of Chroma Cloud, for code that passes the setting on. IsDistributedChroma stays whether the client takes the server for distributed Chroma, Chroma Cloud included.

Fixes

  • The comments of GetCollectionByCrnAsync, UpdateTenantAsync and ChromaTenant.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: DistributedChroma next to IsDistributedChroma. docs/chroma-cloud.md: the resource names on distributed Chroma.
  • docs/COMPATIBILITY.md:
    • Chroma 1.5.9 answers add_input with 404 without a body, so AddFunctionInputAsync throws a ChromaException "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.

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