Clients

We ran 14 Chroma clients, in 11 languages, with the same test against VecturaDB 1.0.0-preview.3 and against Chroma 1.5.9. In our tests each client gave the same result on the two servers, step by step: where a client fails, it fails in the same way on Chroma 1.5.9.

Disclaimer. These results are provided as is, without warranty of any kind, as stated in the Apache License 2.0. They describe what we measured on 25 October 2026: your client, its version and your setup may behave differently.

Not sure about your client? Open an issue in the VecturaDB repository, name the client and its version, and we will take a look on a best-effort basis.

Results

Language Package and version VecturaDB 1.0.0-preview.3 Chroma 1.5.9 Note
Python chromadb-client 1.5.9 Passed Passed All 9 steps.
JavaScript chromadb 3.5.0 Passed Passed All 9 steps.
.NET ChromaDotNet.Client 2.18.0 Passed Passed All 9 steps. The whole test suite of the client, on VecturaDB 1.0.0-preview.3: 2192 passed, 12 skipped, 0 failed. The skipped tests are for Chroma Cloud quotas and settings, tenants and databases created on a server already running, the built-in authentication that Chroma 1.0 removed, timing measurements and Chroma 0.x.
Go github.com/amikos-tech/chroma-go v0.4.1 Passed Passed All 9 steps. To install it, its dependency chroma-go-local v0.3.4 had to be replaced with v0.3.5: proxy.golang.org answered 404 and the direct download failed the checksum. Only the embedded client uses it.
PHP codewithkyrian/chromadb-php 1.0.0 Passed Passed All 9 steps.
PHP helgesverre/chromadb v3.0.0 Passed Passed All 9 steps.
Dart chromadb 2.0.0 Passed Passed All 9 steps.
Rust chroma 0.15.0 Partial Partial The crate has no pre-flight-checks; the other 8 steps passed. It needs protoc to build.
Elixir chroma 0.1.3 Partial Partial Set to the v2 API with its api_version setting. The library has no pre-flight-checks, get by id, where or delete of records; the other steps passed.
Rust chromadb 2.3.0 Failed Failed The heartbeat calls the v1 API: "410 Gone: The v1 API is deprecated. Please use /v2 apis". The other steps passed.
Ruby chroma-db 0.9.0 Failed Failed Get and delete send an empty where and where_document, which both servers reject with 400 "Invalid where clause". The gem then raises NoMethodError: private method `raise_failure_error' instead of the message of the server.
.NET Microsoft.SemanticKernel.Connectors.Chroma 1.74.0-alpha Failed Failed The v1 API only: creating a collection answers "405 (Method Not Allowed)".
Java io.github.amikos-tech:chromadb-java-client 0.1.7 Failed Failed The v1 API only: the heartbeat answers "Gone", creating a collection "Method Not Allowed".
Clojure levand/clojure-chroma-client, commit 61766c3 Failed Failed The v1 API only: "Unsuccessful HTTP status code" from the heartbeat and from creating a collection.

What the results mean

How we tested

The steps were the same for every client, with embeddings of two numbers given by hand, so no embedding model was involved:

  1. heartbeat;
  2. pre-flight-checks;
  3. create a collection, with the cosine space;
  4. add 3 records with documents and metadata;
  5. query with [1, 0] for 2 results, expecting r1 then r3;
  6. get by id;
  7. get with the filter {"n": {"$gte": 2}};
  8. delete one record, then count, expecting 2;
  9. delete the collection.

The one difference between the two servers is in step 2: VecturaDB adds its server block to the answer of pre-flight-checks. The clients that show the raw answer, Python, JavaScript, Dart, Ruby and both PHP clients, took it without errors, with the same max_batch_size, 5461.

Moving from Chroma Cloud

The guides switch the client from Chroma Cloud to VecturaDB, or to Chroma, in Python, JavaScript and .NET: Leaving Chroma Cloud.