Chroma

An embedded, developer-friendly vector database. The fastest path from "I have some docs" to "I have a working RAG prototype".

Category
Vector Databases
Difficulty
Beginner
When to use
Prototyping, local development, or small production apps where a lightweight embedded store is enough.
When not to use
You need billion-scale search, strict durability guarantees, or rich filtering and SQL joins.
Alternatives
pgvector Qdrant LanceDB FAISS

At a glance

FieldValue
CategoryEmbedded vector database
DifficultyBeginner
When to usePrototyping, notebooks, small RAG apps
When not to useHuge scale, strict SLAs
Alternativespgvector, Qdrant, LanceDB, FAISS

What it is

Chroma runs in-process (or as a small server) with a minimal Python API. You create a collection, add documents with embeddings and metadata, and query by nearest neighbor. Persistence is a local directory. No separate database to run for your first prototype.

When we reach for it at Ephizen

  • Early RAG experiments in notebooks.
  • Internal tools with a few thousand to a few hundred thousand documents.
  • Demos and workshops where spinning up a real database would be overkill.

Getting started

import chromadb
client = chromadb.PersistentClient(path=".chroma")
col = client.get_or_create_collection("faq")
col.add(
    documents=["Refunds within 30 days.", "Ship in 2 business days."],
    ids=["r1", "s1"],
)
print(col.query(query_texts=["when do I get my money back?"], n_results=2))

Gotchas

  • Chroma is optimized for developer experience, not raw throughput. Benchmark before committing to a production scale.
  • The default embedding function calls an external API — configure it explicitly so you know where data is going.
  • Migrating Chroma to another store later is straightforward because you own the raw embeddings and metadata.

Related tools