mrkeyoor.com_
Sat 31 Oct 08:52 UTC
Dataevaluationupdated 28 Oct 2026

chroma review

Chroma is a database for finding documents by similarity and filtering them by metadata. Its Python client can create an in-memory collection and embed text. Server connections and Chroma Cloud provide other deployment routes.

+32stars / 7d
Verdict

Evaluate Chroma when its Python collection API fits a concrete retrieval experiment. Our recorded checkout installed and built, but Protobuf version checks stopped test collection before assertions ran. Choose the deployment mode first, then verify persistence, filters and the chosen embedding integration before committing application data.

We ran it

Lab card: what happened when we ran chromaScreenshot of chroma (www.trychroma.com)
Install✓ · 571s140 packages · 434 MB
Build✓ · 8s
Tests✗ · 21s0 passed · 0 failed · 2 errors of 2 (pytest)
Known vulns8(pip-audit)
Repo2170 files~474,109 lines of source · 47.6 MB · 23 CI workflows · Dockerfile

Answers from our run

Does chroma build from source?

Dependencies installed in 571 seconds (140 packages), and the build succeeded in 8 seconds. We cloned commit e5c2297 into a clean Debian container with 3 CPUs and no project-specific setup.

Do chroma's tests pass?

No. The project's own test command finished in 21 seconds and reported 0 passed, 0 failed, 2 collection errors (pytest).

Does chroma have known vulnerabilities in its dependencies?

pip-audit flagged 8 known advisories in the dependency tree at the time of our run.

Who should not use chroma?

Teams requiring identical local and distributed behavior: Chroma's roadmap says the storage subsystems differ and local mode may lack features or behaviors.

What are the alternatives to chroma?

Qdrant, pgvector. Evaluate Chroma when its Python collection API fits a concrete retrieval experiment.

SetupN/AThe source install and build succeeded, but the intended application deployment was not verified and Protobuf version checks stopped test collection.
Docs4/5Under the visible documentation rubric, the client guide explains multiple deployment routes and the roadmap states their limits. The supplied run did not independently verify each route.
CommunityN/ARepository metadata observed on October 28, 2026 includes an October 26 last push, stars and a combined issue/PR count. Those signals do not establish maintainer responsiveness or community support quality.
MaturityN/AThe source suite did not reach assertions, and the supplied run contains no retrieval workload, recovery exercise or production reliability assessment.

Discussed on

  1. hnDensity Based Retrieval Relevance6 points

Who it’s for

Python developers evaluating document retrieval with collections, metadata filters and embedding functions.
Teams prepared to verify persistence and retrieval behavior on their intended deployment.
Applications that generate their own vectors and want to supply embeddings directly.

Who it’s NOT for

Teams requiring identical local and distributed behavior: Chroma's roadmap says the storage subsystems differ and local mode may lack features or behaviors.
JavaScript developers expecting the Python in-memory client experience: JS/TS clients require a running Chroma server.
Contributors requiring a passing source suite in our recorded environment: Protobuf version checks stopped collection before any test assertion ran.

Setup reality

Our October 4, 2026 run at commit e5c2297 installed 140 dependencies in 571 seconds and used 434 MB on disk. The build succeeded in 8 seconds. The test command failed after 21 seconds with 0 passed, 0 failed and 2 collection/setup errors. The log reports generated Protobuf code at 6.33.5 with runtime 5.28.0. pip-audit reported 8 known vulnerabilities.

The README starts with a Python in-memory client. PersistentClient saves and loads local data at a disk path. JS/TS clients require a running server. CloudClient can use an API key alone when that key is scoped to a single database, allowing Chroma to resolve the tenant and database. Explicit connection settings and a regional host apply when needed.

The recorded sandbox configuration specified 3 CPUs, 8 GB RAM and image ghcr.io/astral-sh/uv:python3.12-bookworm. The image label does not establish the actual runtime or operating-system version. This run did not assess retrieval quality, query latency or persistence.

A small Python example leaves deployment decisions open

Chroma's README creates an in-memory collection, adds documents with metadata and IDs, then queries for similar text. It also documents supplying embeddings directly. That makes Chroma a candidate for a Python retrieval experiment, whether the application delegates embedding to Chroma or generates vectors elsewhere.

The source environment needs a separate assessment. Our checkout built successfully, but test collection stopped before any assertions ran. A short client example does not establish retrieval quality or confidence in that source environment.

What happened when we ran it

Our Chroma run installed 140 dependencies in 571 seconds and used 434 MB on disk at commit e5c2297 on October 4, 2026. The build succeeded in 8 seconds. The test command exited 1 after 21 seconds, reporting 0 passed, 0 failed and 2 collection/setup errors.

The log reports mismatched Protobuf major versions while loading google/rpc/error_details.proto: generated code 6.33.5 and runtime 5.28.0. Collection stopped in bin/rust_python_compat_test.py and chromadb/test. The pytest tail reports 2 errors in 8.12 seconds; the outer test step took 21 seconds. Those durations describe different scopes. The excerpt does not explain how the incompatible packages were selected, so it does not support a package-pinning fix.

pip-audit reported 8 known vulnerabilities. The supplied record does not identify their severity or applicability to a deployed service. Inspect the advisory details before adoption; this count alone does not establish that a particular Chroma endpoint is exploitable.

The sandbox configuration specified 3 CPUs, 8 GB RAM and image ghcr.io/astral-sh/uv:python3.12-bookworm. The image name does not prove the actual runtime or operating-system version. No retrieval workload or restart exercise was recorded.

Choose persistence and connection settings deliberately

The Chroma client guide distinguishes the in-memory Python Client from PersistentClient, which automatically saves local data and loads it on start if it exists. Choose a disk path before loading documents you intend to keep. A useful acceptance check is to add identifiable records, stop the application, restart against the same path and retrieve the same IDs. That exercise was not performed in the supplied run.

JS/TS clients require a running Chroma server. CloudClient can use an API key alone if the key is scoped to a single database; Chroma then resolves the tenant and database. The guide also documents explicit tenant and database settings, environment variables and regional hosts. For a database outside the default region, use the corresponding regional connection settings. These details should be part of the deployment trial.

Verify operations on the destination deployment

Chroma's open-source roadmap says local and distributed Chroma currently use different storage subsystems. Most engineering effort goes toward distributed Chroma and the cloud offering, and local mode may temporarily lack features or behaviors available in the distributed system. Full feature and API parity remains an active goal; the page gives no delivery deadline.

Before moving a local experiment to another deployment, repeat the application's actual operations there. Use documents with known IDs and expected metadata matches, then check queries, updates and deletes. This is a proposed acceptance exercise, not a reported filtering defect or a completed test.

Compare alternatives by where the data belongs

pgvector provides vector similarity search inside Postgres, including exact and approximate nearest neighbor search. Evaluate it when vectors should live alongside relational records and SQL joins matter to retrieval. This is a recommendation about data placement. The supplied evidence contains no comparative throughput or retrieval-quality measurements establishing a winner over Chroma.

Qdrant documents a container-based client-server route for vector search. Consider that route when a separately operated vector service suits the application. Its README warns that the example container starts without authentication and is open to all network interfaces. Include access control and persistence in any deployment evaluation.

Documentation is assessed; operational reliability is not

The documentation score uses this editorial rubric: 1 means instructions are absent, 2 means partial instructions, 3 means a clear basic route, 4 means multiple routes with stated limits, and 5 means those routes were independently verified. Chroma earns 4 because the client guide explains multiple deployment routes and the roadmap discloses the storage difference. The supplied run did not verify each route.

The repository metadata observed on October 28, 2026 records the last push as October 26, 2026 at 03:26:30 UTC, with 29,595 stars and 984 open issues and pull requests combined. These are dated activity and attention signals; they do not establish response quality or production reliability. Community remains unassessed. The supplied latest-release record lists 1.5.9 dated May 5, 2026, but that record does not establish client/server compatibility at the measured commit.

The next useful result is a retrieval-and-restart check on the chosen deployment, followed by a source environment whose tests get past Protobuf collection.

Alternatives

ProjectWhat it isPick it when
Qdrant gh↗A vector database with a documented container-based client-server route.Evaluate Qdrant when you want a separately operated vector service with explicit client connections. Its README warns that the example container starts without authentication and is open to all network interfaces.
pgvectorVector similarity search inside Postgres.Evaluate pgvector when vectors should live alongside existing Postgres records and SQL joins matter to the retrieval path.

Sources

  1. Chroma README
  2. Chroma clients
  3. Chroma open-source roadmap
  4. Qdrant README
  5. pgvector README

More data reviews

jq · pgx · HowToLiveLonger · ip2region · dbdelve · litestream · the whole board →