Chroma (Vector Database, Rust core)

Chroma vector database: Rust core (v1.0.0+ rewrite, 2025-03) with multi-language client SDKs. Single-node uses PersistentClient (SQLite + local HNSW) or EphemeralClient (in-memory); distributed/cloud uses SPANN + BLOCKFILE on S3/GCS. 25+ EmbeddingFunction providers shipped.

✓ 0 reported success·v0.1.0·

Overview

Chroma is a Rust-core open-source vector database (github.com/chroma-core/chroma, v1.0.0+ rewrite 2025-03). Single-node mode runs an embedded local DB (SQLite metadata + on-disk HNSW index) via PersistentClient or in-memory via EphemeralClient; distributed/cloud mode uses SPANN index with self-developed BLOCKFILE storage on S3/GCS. Data path: Client Factory → API Layer (Rust default since v1.0.0) → Segment Layer (2-segment local / 3-segment distributed) → Index (HNSW or SPANN) → Persistence. The EmbeddingFunction protocol injects vector generation; 25+ providers shipped (13 hosted EFs + 5 local-runtime EF families). This skill embeds 52 constraints (3 fatal) covering typical pitfalls: the cosine implementation is `1 - dot(a,b)` and assumes vectors are pre-normalized; v1.0.0 Rust default silently ignores 4 legacy Python settings (chroma_server_nofile, chroma_server_thread_pool_size, chroma_memory_limit_bytes, chroma_segment_cache_policy); embedding dimension is latched at first write — switching EF requires creating a new collection and re-adding all vectors.

Blueprint Source

finance-bp-138

chroma-core/chroma598f85f1 source file

Constraints

3total
3fatal
3 must-not-violate

Evidence Quality

Confidence90%

High confidence — strong evidence base

3 non-negotiable constraints

FATALdomain_rulechroma-C-005

WHENSwitching the EmbeddingFunction on an existing collection (e.g. ada-002 1536d → text-embedding-3-large 3072d).

ACTIONDo NOT expect in-place dimension changes — you must create_collection(new_name) with the new EF, iterate the old collection regenerating all vectors, and write to the new collection.

CONSEQUENCEDimensionality is latched at first write (local_hnsw.py:222-233 _ensure_index sets _dimensionality; mismatched dim then raises InvalidDimensionException). HNSW graph structure is dim-bound and not resizable. Forcing different-dim writes raises a hard exception and the entire batch rolls back.

FATALresource_boundarychroma-C-019

WHENDeploying Chroma outside Colab (production servers, Docker images, local dev).

ACTIONFirst confirm the host system has sqlite3.sqlite_version_info ≥ (3, 35, 0); if not, install pysqlite3-binary and swap it manually — outside Colab, chromadb does not auto hot-swap.

CONSEQUENCEchromadb/__init__.py:137-155 checks the SQLite version at import time; below 3.35.0 it raises RuntimeError on the non-Colab path, and the entire chromadb module fails to import.

FATALclaim_boundarychroma-C-024

WHENDeploying a Chroma v1.0.0+ server to production.

ACTIONDo NOT rely on Chroma's built-in auth provider — since v1.0.0 the server no longer ships built-in auth; you must front it with a reverse proxy (nginx/Traefik) or an external auth gateway.

CONSEQUENCEIf you configure chroma_server_auth_provider per old docs, v1.0.0+ images will not enable any auth and the service may be fully open, exposing it to unauthenticated access.

FAQ

Discussion (0)

No comments yet. Be the first to share!

Changelog

v0.1.02026-04-25·Contributors: tangweigang-jpg

v0.1.0: Initial release on Doramagic.ai. Vector database on chroma-core/chroma with bilingual metadata, 52 anti-pattern constraints (3 fatal), and 3 FAQs.

v0.1.02026-04-25·Contributors: tangweigang-jpg

v0.1.0: Initial release on Doramagic.ai. Vector database on chroma-core/chroma with bilingual metadata, 52 anti-pattern constraints (3 fatal), and 3 FAQs.