Chroma: A Complete Guide
Chroma

What is Chroma?

Open-source AI-native vector database for building LLM-powered applications with embeddings

6-min readUpdated Aug 2026

Chroma in 60 seconds

WHAT IT IS

An open-source, AI-native vector database that stores embeddings and runs similarity search for LLM apps.

WHY IT'S USED

It is the fastest way to add retrieval to an AI app: a few lines of Python and you have a working vector store.

STRENGTHS
  • +Dead simple API, so you can add semantic search in a few lines
  • +Runs embedded in-process, no server to stand up for prototyping
  • +Handles embeddings for you or takes vectors you already computed
LIMITATIONS
  • Young project, so the API and internals still shift release to release
  • Not built for OLTP, analytics, or general relational data storage
  • Self-hosted single node has no built-in replication or failover
BEST KNOWN FOR
RAG pipelinesSemantic searchAI agent memoryRecommendationsEmbedding storage
Jump to at a glance, how it works, or quick start for the full picture on Chroma.

At a glance

CategoryVector
First released2022
Latest release1.5.9 (May 2026)
LicenseApache-2.0
Written inPython, Rust
Runs onLinux, Macos, Windows
DeploymentSelf-hosted, Managed, Embedded
Wire protocolhttp
Query dialect
Consistencystrong
ACID supportno
JSON supportnative
Full-text searchnative
Vector supportnative
HA modelnone
Managed bychroma-cloud

What is Chroma?

Chroma, often called ChromaDB, is an open-source vector database built for AI applications. Instead of rows and columns, it stores embeddings, the numeric vectors that models produce from text, images, or audio, and finds the ones closest in meaning to a query. That makes it the retrieval layer behind retrieval-augmented generation, semantic search, and agent memory, where the job is to fetch the most relevant context and hand it to a language model.

The project was created by Chroma Inc., a San Francisco company founded in 2022 by Anton Troynikov and Jeff Huber, and the first open-source release landed in October 2022. It is written in Python and Rust and licensed under Apache-2.0. The design goal from day one was developer experience: make the path from a laptop prototype to a running vector store as short as possible, which is why so many first RAG tutorials reach for Chroma.

Chroma spread quickly through the LangChain and LlamaIndex communities, where it became a common default vector store, and it now sees millions of monthly downloads. In 2026 the company shipped Chroma Cloud, a managed service that runs the same open-source core. Named production users include Mintlify, which powers per-customer documentation search on it, code-review company Propel, Weights & Biases, Capital One, and UnitedHealthcare.

How Chroma works

Chroma runs in a few modes from the same API. In embedded mode it lives inside your Python or JavaScript process, either fully in memory or with a persistent client that writes to a local directory. For shared access it runs as a server you talk to over HTTP, and Chroma Cloud is that server hosted for you. The same client code works across all of them, so a prototype can graduate to a server without a rewrite.

Data lands in collections. When you add documents, Chroma runs them through an embedding function to produce vectors, or you pass vectors you already have. It stores each vector alongside the original document and a metadata dictionary. Metadata and document text sit in SQLite in the local build, while the vectors go into a separate index tuned for nearest-neighbor math rather than row lookups.

A query gets embedded the same way, then Chroma searches an HNSW index, a graph structure that walks toward the nearest vectors without scanning every one, and returns the closest matches by cosine, L2, or inner-product distance. You can attach a where filter on metadata so the search only considers documents that match, and combine vector similarity with keyword matching for hybrid retrieval. The newer Rust core rewrote these hot paths for throughput.

Key concepts

Collections

A collection is Chroma's core container, the rough equivalent of a table. Each holds documents, their embeddings, and metadata under one name, and you create, query, and delete at the collection level. A collection has one distance function and one embedding function, so every vector inside it stays directly comparable.

Embeddings

Embeddings are the numeric vectors that represent meaning, and they are what Chroma indexes and searches. You can hand Chroma raw text and let its embedding function call a model to produce the vectors, or compute them yourself with OpenAI, Cohere, or a local model and pass them in. Similar content lands in nearby vectors.

Documents and metadata

Each record pairs a vector with the original document text and a metadata dictionary of key-value fields. Metadata is where you keep source, author, timestamp, or tags, and it drives filtering at query time. Chroma keeps the text and metadata in SQLite in the local build, so you can retrieve source content alongside the vector search.

Similarity search

A query is embedded into the same vector space, then Chroma returns the nearest documents by distance rather than exact matching. You pick the metric per collection: cosine, squared L2, or inner product. Results come back ranked with documents and metadata attached, exactly the context shape a RAG prompt needs to ground an answer.

Metadata filtering

Vector search rarely runs alone. A where clause filters on metadata fields with operators like equals, greater-than, in, and boolean and/or, and a where_document clause matches text inside documents. Chroma applies these so a query only considers passing records, narrowing to one tenant, source, or date range before ranking.

HNSW index

Under the hood Chroma indexes vectors with HNSW, Hierarchical Navigable Small World graphs, the standard structure for fast approximate nearest-neighbor search. Rather than compare a query against every stored vector, HNSW walks a layered graph toward the closest ones, trading a little recall for a large speedup you can tune.

Chroma by the numbers

Live GitHub adoption, updated daily

#3 of 11 open-source vector databases by GitHub stars
GitHub stars
29.1k
+260 in 30d
Forks
2.5k
Weekly growth
+59
stars in the last 7 days
Last commit
today
Aug 2026

Who uses Chroma

A handful of the companies running it in production

MintlifyPropelWeights & BiasesCapital OneUnitedHealthcareMedwise.ai

When to use Chroma

Best for

RAG and LLM retrieval

The core use case. Store your document embeddings, retrieve the closest chunks to a question, and feed them to a language model as grounding context. Chroma's API is built around exactly this loop.

Prototyping AI features fast

Embedded mode needs no server, so you go from pip install to a working vector store in minutes. It is the shortest path to test whether semantic search or retrieval helps your product at all.

Semantic search over text

Search by meaning rather than keywords, so a query finds related passages even with no shared words. Metadata filtering narrows results to a tenant, source, or date range before ranking by similarity.

AI agent and app memory

Give an agent recall by embedding past turns, notes, or documents and fetching the relevant ones on demand. LangChain and LlamaIndex integrate Chroma directly, so it slots into existing agent stacks.

Not ideal for

Transactional or relational data

Chroma has no ACID transactions, joins, or SQL. Orders, accounts, and anything that must stay consistent under concurrent writes belong in Postgres or another relational database, not a vector store.

Analytics and aggregation

It answers nearest-neighbor queries, not group-bys, rollups, or column scans over billions of rows. For reporting and analytical workloads an engine like ClickHouse or DuckDB is a far better fit.

High-availability production at scale

Self-hosted Chroma runs as a single node with no built-in replication or failover. For large, always-on workloads you either lean on Chroma Cloud or reach for a more battle-tested distributed engine.

Billion-vector heavy workloads

Chroma shines for small to mid-size corpora and quick iteration. At very large vector counts with strict latency targets, Qdrant, Milvus, or Weaviate offer more tuning knobs and horizontal scaling.

Chroma vs alternatives

Head-to-head specs against the top 4 alternatives

Chroma vs Pinecone
Chroma
Pinecone
Identity
License
Apache-2.0
Proprietary
First released
2022
2021
Capabilities
ANN algo
hnsw
proprietary
Hybrid search
Native
Native
Vector
Native
Native
Ecosystem
Managed providers
1
1
Integrations
4
4
Use cases
Best for
AI/LLM applications, RAG pipelines, semantic search, and rapid prototyping of embedding-based apps
Production-scale vector search with zero infrastructure management and enterprise security requirements
Not ideal for
General-purpose data storage, OLTP, analytics, or production workloads requiring high availability
Self-hosted deployments, on-premise requirements, cost-sensitive prototyping, or workloads needing open-source flexibility
Chroma vs Qdrant
Chroma
Qdrant
Identity
License
Apache-2.0
Apache-2.0
First released
2022
2021
Capabilities
ANN algo
hnsw
hnsw
Hybrid search
Native
Native
Vector
Native
Native
Ecosystem
Managed providers
1
1
Integrations
4
11
Use cases
Best for
AI/LLM applications, RAG pipelines, semantic search, and rapid prototyping of embedding-based apps
Semantic search, RAG pipelines, recommendation engines, image similarity, and AI agent memory with advanced filtering
Not ideal for
General-purpose data storage, OLTP, analytics, or production workloads requiring high availability
Traditional relational queries, OLTP workloads, time-series data, or use cases not involving vector embeddings
Chroma vs Weaviate
Chroma
Weaviate
Identity
License
Apache-2.0
BSD-3-Clause
First released
2022
2019
Capabilities
ANN algo
hnsw
HNSW
Hybrid search
Native
Native
Vector
Native
Native
Ecosystem
Managed providers
1
1
Integrations
4
4
Use cases
Best for
AI/LLM applications, RAG pipelines, semantic search, and rapid prototyping of embedding-based apps
Semantic search, RAG pipelines, and AI-native applications requiring hybrid vector and keyword search
Not ideal for
General-purpose data storage, OLTP, analytics, or production workloads requiring high availability
Traditional relational workloads, complex transactions, or use cases requiring strong ACID guarantees
Chroma vs Milvus
Chroma
Milvus
Identity
License
Apache-2.0
Apache-2.0
First released
2022
2019
Capabilities
ANN algo
hnsw
hnsw, ivf, diskann, scann
Hybrid search
Native
Native
Vector
Native
Native
Ecosystem
Managed providers
1
1
Integrations
4
7
Use cases
Best for
AI/LLM applications, RAG pipelines, semantic search, and rapid prototyping of embedding-based apps
Large-scale vector similarity search, RAG applications, and AI-powered recommendations
Not ideal for
General-purpose data storage, OLTP, analytics, or production workloads requiring high availability
Traditional relational data, OLTP workloads, or applications not using embeddings

Quick start

Install Chroma, create a collection, add a few documents, and run a similarity query. Under a minute in pure Python, no server needed.

Install with pip
pip install chromadb
Create a client and collection
import chromadb

# In-memory for a quick test; use PersistentClient to save to disk
client = chromadb.Client()
collection = client.create_collection(name="docs")
Add documents (Chroma embeds them for you)
collection.add(
    documents=[
        "Chroma is an open-source vector database.",
        "Postgres is a relational database.",
    ],
    ids=["doc1", "doc2"],
)
Query by meaning
results = collection.query(
    query_texts=["What should I use for embeddings?"],
    n_results=1,
)
print(results["documents"])

The query returns the Chroma document, not the Postgres one, matched by meaning rather than keywords. From here, swap in your own embedding model or point a client at a Chroma server.

Frequently asked questions

What is Chroma used for?
Chroma is used to store embeddings and run similarity search for AI applications. The most common use is retrieval-augmented generation (RAG), where you embed your documents, fetch the chunks closest in meaning to a user's question, and feed them to a language model as context. It also backs semantic search, recommendation, and agent memory. Because it runs embedded in-process with a simple API, it is a frequent choice for prototyping AI features before committing to heavier infrastructure.
Is Chroma free and open source?
Yes. Chroma is open-source software under the permissive Apache-2.0 license, free to self-host, modify, and run in production with no license fees. The company behind it, Chroma Inc., also offers Chroma Cloud, a managed service that runs the same open-source core and charges for hosting rather than for the software. You can start fully self-hosted and move to the cloud service later, or the other way around, without switching engines.
Is Chroma a vector database?
Yes. Chroma is a purpose-built vector database, sometimes described as AI-native, meaning its core job is to store high-dimensional embeddings and find the ones nearest to a query vector. It indexes those vectors with HNSW for fast approximate nearest-neighbor search and keeps the original document text and metadata alongside them so results come back ready to use. It is not a general-purpose relational or document database and is not meant to replace one.
Who created Chroma and when?
Chroma was created by Chroma Inc., a San Francisco company founded in 2022 by Anton Troynikov and Jeff Huber. The first open-source release came in October 2022, and the project grew quickly as retrieval-augmented generation took off, helped by early integration with LangChain and LlamaIndex. The company has since raised venture funding and, in 2026, launched Chroma Cloud, its managed hosting service built on the same open-source engine.
Is Chroma the same as ChromaDB?
Yes, they refer to the same thing. Chroma is the product and company name, and ChromaDB is the common informal name, matching the Python package you install with pip install chromadb. You will see both used interchangeably in documentation, tutorials, and blog posts. There is no separate product called ChromaDB; it is just the everyday way people refer to the Chroma vector database and its client library.

Skip the config files

Connect to Chroma in 30 seconds. Browse tables, run queries, and edit rows visually, on localhost, self-hosted, or cloud.

Open Chroma in 1bench