{"id":11,"library":"chromadb","title":"ChromaDB","description":"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.","status":"active","version":"1.5.5","language":"python","source_language":"en","source_url":"https://docs.trychroma.com","tags":["chromadb","vector-database","embeddings","rag","similarity-search","persistent","in-memory"],"install":[{"cmd":"pip install chromadb","lang":"bash","label":"Full (includes server, embedding deps)"},{"cmd":"pip install chromadb-client","lang":"bash","label":"HTTP client only (lightweight, no server)"}],"dependencies":[{"reason":"Bundled for default embedding function (all-MiniLM-L6-v2). Pulls in ~200MB. Omit by passing your own embedding_function to create_collection().","package":"onnxruntime","optional":false},{"reason":"Required for default embedding function. Same caveat as onnxruntime.","package":"tokenizers","optional":false},{"reason":"Required core dependency.","package":"numpy","optional":false}],"imports":[{"wrong":"import chromadb\nclient = chromadb.EphemeralClient()","symbol":"EphemeralClient","correct":"from chromadb import EphemeralClient"},{"wrong":"import chromadb\nclient = chromadb.PersistentClient(path=\"/db\")","symbol":"PersistentClient","correct":"from chromadb import PersistentClient"},{"wrong":"import chromadb\nclient = chromadb.HttpClient(host=\"localhost\", port=8000)","symbol":"HttpClient","correct":"from chromadb import HttpClient"}],"quickstart":{"code":"import sys\nif sys.version_info < (3, 9):\n    raise RuntimeError(\"chromadb requires Python 3.9+. Current: \" +\n  sys.version)\n\nimport chromadb\n\n# In-memory (prototyping)\nclient = chromadb.EphemeralClient()\n\n# Persistent (local dev)\n# client =\n  chromadb.PersistentClient(path=\"/path/to/db\")\n\ncollection = client.get_or_create_collection(\"my_docs\")\n\ncollection.add(\n\n  documents=[\"This is doc one\", \"This is doc two\"],\n    ids=[\"id1\", \"id2\"],\n)\n\nresults = collection.query(\n    query_texts=[\"find\n  something\"],\n    n_results=2,\n)\nprint(results)","lang":"python","description":"get_or_create_collection() is idempotent and preferred over create_collection() for most use cases. Python 3.9+ required —\n  chromadb's telemetry dependency (posthog) fails silently on 3.8 with a misleading TypeError."},"warnings":[{"fix":"Replace with chromadb.EphemeralClient() (in-memory), chromadb.PersistentClient(path=...) (disk), or chromadb.HttpClient(host=..., port=...) (server). Old chroma_db_impl=\"duckdb+parquet\" setting is gone entirely.","message":"chromadb.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.","severity":"breaking","affected_versions":"< 0.4.0"},{"fix":"Back up PersistentClient data directory before upgrading. Use chroma utils migrate CLI if available for the version transition. Pin version in production: pip install chromadb==X.Y.Z.","message":"Database migrations between Chroma versions are irreversible. Upgrading the chromadb package upgrades on-disk data format. Downgrading after upgrade causes data loss or corruption.","severity":"breaking","affected_versions":"all"},{"fix":"Migrate server configuration to a chroma.yaml config file. See docs.trychroma.com/docs/overview/migration for the full config file schema.","message":"Server 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.","severity":"breaking","affected_versions":">= 1.0.0"},{"fix":"Pass embedding_function=None and provide embeddings= directly, or pre-download by calling the embedding function once explicitly before serving traffic. Use chromadb-client package if you never need local embedding.","message":"Default 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.","severity":"gotcha","affected_versions":"all"},{"fix":"For multi-process workloads, run chroma run --path ... as a server and connect all clients via HttpClient.","message":"PersistentClient 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.","severity":"gotcha","affected_versions":"all"},{"fix":"Use explicit operator syntax for all metadata filters: where={\"source\": {\"\": \"arxiv\"}} not where={\"source\": \"arxiv\"}.","message":"collection.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.","severity":"gotcha","affected_versions":"all"},{"fix":"Disable with: chromadb.EphemeralClient(settings=Settings(anonymized_telemetry=False)) or set environment variable ANONYMIZED_TELEMETRY=False.","message":"Telemetry is enabled by default (sends anonymized usage data to PostHog). Runs on every client init.","severity":"gotcha","affected_versions":"all"},{"fix":"On Alpine Linux, install the necessary build tools and C++ standard library: `apk add build-base libstdc++` before attempting to install chromadb.","message":"Installation 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.","severity":"breaking","affected_versions":">= 1.0.0"}],"env_vars":null,"search_vec":"'1':41 'ai':9 'also':43 'applic':10 'backend':36 'chromadb':1,55,58 'chromadb-cli':54 'client':19,50,56 'client-serv':18 'core':35 'databas':7,61 'embed':5,24,33,62 'ephemeralcli':15 'filter':27 'function':34 'handl':23 'http':48 'http-on':47 'httpclient':22 'in-memori':68 'in-process':12 'lightweight':46 'memori':70 'metadata':26 'mode':21 'open':3 'open-sourc':2 'packag':57 'persist':67 'persistentcli':16 'pluggabl':32 'process':14 'rag':63 'rewritten':37 'run':11 'rust':39 'search':30,66 'separ':53 'server':20 'ship':44 'similar':29,65 'similarity-search':64 'sourc':4 'storag':25 'support':31 'vector':6,60 'vector-databas':59 'x':42","created_at":"2026-03-16T04:39:09.011572+00:00","updated_at":"2026-04-16T02:05:24.249266+00:00","problems":null,"ecosystem":"pypi","meta_description":null,"install_score":95,"quickstart_score":0,"quickstart_tag":"stale","pypi_latest":"1.5.9","cli_name":"chroma","cli_version":"chroma 1.4.4","type":"library","homepage":"https://trychroma.com","github":"https://github.com/chroma-core/chroma","docs":null,"changelog":null,"pypi":"https://pypi.org/project/chromadb/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["vector-search","database","ai-ml","llm-agents"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-30","last_verified":"2026-08-26","next_check":"2026-07-30","install_tag":"verified"}}