Chroma is open-source search infrastructure for AI: a database that stores documents alongside their embeddings and metadata, then searches over them for retrieval and agent memory. Python and JavaScript clients are published, with a Rust core, and it runs in memory for prototyping, with persistence, or in client-server mode.
The core API is four functions — create a collection, add documents, query, and get by id. Tokenization, embedding, and indexing happen on add unless you supply your own embeddings. Each document carries metadata that a where clause filters on, and a where_document filter matches against the document text itself.
Chroma Cloud is the hosted service running the same search serverlessly, covering vector, sparse lexical (BM25, SPLADE), full-text trigram and regex, and metadata search. Indexes are built on object storage and tiered across a memory cache, an SSD cache, and cold S3 or GCS storage, with dataset versioning, A/B testing, and roll-outs on top. Published per-collection figures:
| Dimension | Figure |
|---|---|
| Write throughput (per collection) | 30 MB/s (2000+ QPS) |
| Concurrent reads (per collection) | 10 (200+ QPS) |
| Collections per database | 1M |
| Records per collection | 5M |
Features
- Four-function API: create a collection, add documents, query, and get by id
- Automatic embedding: tokenization, embedding, and indexing on add, or bring your own vectors
- Metadata filtering: per-document metadata with where and where_document filters on queries
- Search types: vector, sparse lexical (BM25, SPLADE), full-text trigram and regex, and metadata search
- Deployment modes: in-memory, persistent, client-server, or the hosted Chroma Cloud
- Object-storage indexes: indexes built for object storage with tiering across memory, SSD, and S3 or GCS
- Dataset operations: versioning, A/B testing, roll-outs, and command-line tools for development
- Clients: Python, JavaScript/TypeScript, and Rust
