Capability · Framework — rag
Chroma
Chroma is an AI-native open-source embedding database with a design goal of making RAG feel as simple as SQLite for ML apps. It runs embedded in-process with zero setup, persists to disk, scales to a client-server deployment, and now offers Chroma Cloud. It integrates tightly with LangChain, LlamaIndex, Haystack, and most major embedding providers, and uses SQLite + HNSW under the hood.
Framework facts
- Category
- rag
- Language
- Python / TypeScript
- License
- Apache 2.0
- Repository
- https://github.com/chroma-core/chroma
Install
pip install chromadb Quickstart
import chromadb
client = chromadb.PersistentClient(path='./chroma')
collection = client.get_or_create_collection('docs')
collection.add(
documents=['Hello world', 'Goodbye moon'],
ids=['1', '2']
)
print(collection.query(query_texts=['hello'], n_results=2)) Alternatives
- Qdrant — Rust-based, higher performance at scale
- Weaviate — richer hybrid/modules
- Pinecone — managed alternative
- LanceDB — columnar embedded alternative
Frequently asked questions
When is Chroma too small?
Chroma is great up to roughly tens of millions of vectors on a single node. Beyond that — heavy concurrency, multi-region, strict SLAs — most teams switch to Qdrant, Weaviate, Milvus, or a managed service like Pinecone or Chroma Cloud.
Does Chroma do hybrid search?
Chroma focuses on dense vector search with metadata filters. For BM25-style keyword + vector hybrid fusion, Weaviate, Qdrant, or Elasticsearch are stronger. Many apps combine Chroma with a separate keyword index if needed.
Sources
- Chroma — docs — accessed 2026-04-20
- Chroma — GitHub — accessed 2026-04-20