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

  1. Chroma — docs — accessed 2026-04-20
  2. Chroma — GitHub — accessed 2026-04-20