Registry / vector-search / chromadb

chromadb

JSON →
library1.5.5pypypi✓ verified 33d ago

Open-source embedded vector database for AI applications. Runs in-process (EphemeralClient, PersistentClient) or client-server mode (HttpClient). Handles embedding storage, metadata filtering, and similarity search. Supports pluggable embedding functions. Core backend rewritten in Rust in 1.x; also ships a lightweight HTTP-only client as the separate chromadb-client package.

vector-searchdatabaseai-mlllm-agents
Install & Compatibility
Where this runs
tested against v1.5.9 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
glibc
py 3.10
6/12 runs
✓ 23.15s
py 3.11
6/12 runs
✓ 19.04s
py 3.12
6/12 runs
✓ 17.18s
py 3.13
6/12 runs
✓ 17.18s
py 3.9
6/12 runs
✓ 25.93s
437MB installed
● package 437MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

from chromadb import EphemeralClient
from chromadb import PersistentClient
from chromadb import HttpClient

get_or_create_collection() is idempotent and preferred over create_collection() for most use cases. Python 3.9+ required — chromadb's telemetry dependency (posthog) fails silently on 3.8 with a misleading TypeError.

import sys if sys.version_info < (3, 9): raise RuntimeError("chromadb requires Python 3.9+. Current: " + sys.version) import chromadb # In-memory (prototyping) client = chromadb.EphemeralClient() # Persistent (local dev) # client = chromadb.PersistentClient(path="/path/to/db") collection = client.get_or_create_collection("my_docs") collection.add( documents=["This is doc one", "This is doc two"], ids=["id1", "id2"], ) results = collection.query( query_texts=["find something"], n_results=2, ) print(results)
chroma --version
Debug
Known footguns
breakingchromadb.Client(Settings(...)) removed in 0.4.0. Enormous volume of tutorials, LangChain/LlamaIndex integration examples, and LLM-generated code still uses it. Raises AttributeError or TypeError on import.
breakingDatabase migrations between Chroma versions are irreversible. Upgrading the chromadb package upgrades on-disk data format. Downgrading after upgrade causes data loss or corruption.
breakingServer CORS and auth configuration moved from environment variables to a YAML config file in the 1.x Rust-backed server. Environment variables like CHROMA_SERVER_CORS_ALLOW_ORIGINS and CHROMA_SERVER_AUTH_CREDENTIALS no longer work.
gotchaDefault embedding function downloads ~200MB of model weights (all-MiniLM-L6-v2 via onnxruntime) on first call. First add() or query() call in a new environment hangs while downloading. No progress indicator.
gotchaPersistentClient does not support concurrent access from multiple processes. SQLite-backed storage uses file locking. Multiple processes writing to the same path cause database corruption or blocked writes.
gotchacollection.query() where= filter uses a specific operator syntax ($eq, $ne, $gt, $gte, $lt, $lte, $in, $nin, $and, $or). Plain dict equality {"key": "value"} is not valid — must be {"key": {"": "value"}}. Raises ValueError silently in old versions, error in new.
gotchaTelemetry is enabled by default (sends anonymized usage data to PostHog). Runs on every client init.
breakingInstallation fails on Alpine Linux (musl-based distributions) due to missing C/C++ build tools and runtime libraries required by the Rust backend. Specifically, `libgcc_s.so.1` is not found and a `cc` linker is missing, leading to `subprocess.CalledProcessError` during package metadata preparation.
Upgrade
Version history

Breaking-change detection hasn't run for this library yet.

Audit
Security & dependencies

CVE tracking and dependency tree are planned for a later release.

Agent activity
63 hits · last 30 days
bytedance
6
claudebot
4
gptbot
3
ahrefsbot
3
googlebot
2
oai-searchbot
2
sogoubot
1
Resources