// the find
chroma-core/chroma
Search infrastructure for AI
Chroma is a vector database aimed at AI application developers who need to store and search embeddings. It started as a Python-first embedded database, has since grown a distributed mode with a Go-based log service and a Rust core, and now also sells a hosted cloud product. The primary audience is people building RAG pipelines who want something simpler than Weaviate or Qdrant to get started.
The four-method API (add, query, get, delete) genuinely is that simple and works in-memory with no infrastructure for prototyping. The hybrid search story — combining dense vectors, BM25 sparse, and metadata filters in one query — is more complete than most self-hosted alternatives. The test suite is serious: property-based tests with Hypothesis, cross-version persistence tests, and distributed integration tests show they care about correctness. The embedding function ecosystem is wide; swapping models is a config change rather than a rewrite.
The Python-first history shows in the architecture seams — the Rust core, Go log service, and Python API layer are stitched together in ways that make the distributed mode significantly harder to operate than the README implies. Telemetry is on by default and phones home to PostHog; turning it off requires knowing to set an environment variable, not something surfaced during setup. The hosted cloud push means OSS features are increasingly getting de-prioritized — the distributed Kubernetes path has lagged behind and the docs assume you're either fully embedded or on Chroma Cloud. Auth for the self-hosted server is token-based with no RBAC granularity below the database level, which is thin for anything multi-tenant.