Chroma is a self-hosted vector database replacing cloud services like Weaviate Cloud with in-process, sub-10ms search on local HNSW indexes.
Weaviate Cloud routes vector queries across external networks to remote clusters, introducing serialization delays and recurring cloud bills. Chroma executes similarity searches directly in application memory or through a colocated container, answering nearest-neighbor queries in single-digit milliseconds. For developers and DevOps engineers building retrieval pipelines, keeping the vector index on the same machine eliminates distributed network hops and external API dependencies.
The architectural divide centers on network proximity and index traversal. Hosted services such as Weaviate Cloud and Milvus Zilliz run distributed clusters behind managed gateways, where searches incur TLS handshakes, packet transit, and remote queueing that typically add 20 to 50 milliseconds of latency per request. Chroma runs as an embedded library or as a standalone container with an internal Rust core. Because its Hierarchical Navigable Small World (HNSW) index resides entirely in local system RAM, query execution avoids the network perimeter, delivering sub-ten-millisecond retrieval across millions of records.
That speed advantage reverses when datasets exceed host resources. Weaviate Cloud and Milvus Zilliz use distributed sharding and vector quantization to split and compress billions of high-dimensional vectors. Chroma OSS provides neither multi-node sharding nor quantization. A collection of 1024-dimensional embeddings consumes roughly four gigabytes of RAM per million vectors, and performance degrades rapidly if the operating system pages the index to swap. Moving to Chroma eliminates subscription fees and cloud egress costs, but shifts memory budgeting, SQLite storage management, and process monitoring to your team.
Chroma vs Weaviate Cloud — which should I choose? Choose Chroma when you want an embedded or single-container database with sub-10ms local query latency and zero subscription costs; choose Weaviate Cloud when you manage tens of millions of vectors requiring distributed sharding, vector compression, and a managed SLA.
Can Chroma run completely offline without an internet connection? Yes. When configured with local embedding models or pre-computed vector arrays, Chroma runs entirely within your local environment or private network without outbound network calls.
Does Chroma store all vector data in RAM? Chroma persists documents and metadata to SQLite on disk, but its HNSW vector index must fit entirely within system memory to execute fast nearest-neighbor lookups.
Chroma is the ideal vector database when query latency and operational simplicity take priority over multi-node clustering, provided your total vector count fits comfortably within server memory. With regular commits extending through September 2026 and an Apache-2.0 license that allows unconstrained internal modification and commercial deployment, it offers developers a stable foundation for single-host retrieval architectures. If your dataset demands distributed multi-tier indexing or billions of vectors, a managed cloud alternative remains necessary.
We started this exact setup from scratch in a clean Linux machine on Oct 24, 2026 and checked it through Chroma's own API: every check passed. Recipes are re-checked regularly and removed if they stop working.
mkdir -p chroma-db && cd chroma-db
curl -fsSL https://open-source.store/tools/chroma-db/compose.yml -o compose.ymltouch .envdocker compose up -dservices:
server:
image: chromadb/chroma:1.5.9
volumes:
- chroma-data:/data
ports:
- "127.0.0.1:8000:8000"
restart: unless-stopped
volumes:
chroma-data:
Go, gRPC and Protobuf done right, LLM agents in production, and the hard parts of shipping a first product.
Show that Chroma is listed as an open-source alternative. Paste into your README:
Ubuntu 24.04 · Apple container, Docker 29.1.3, Compose 2.40.3+ds1-0ubuntu1~24.04.1. Images pulled in 25 s: chromadb/chroma:1.5.9.
Based on the upstream setup. Upstream standalone server compose example. Pinned image to 1.5.9, persisted data volume to /data, and bound port to 127.0.0.1 because Chroma 1.0+ has no native authentication.
server-1 | 2026-10-24T11:09:56.868552513Z server-1 | 2026-10-24T11:09:56.868933554Z ========== server-1 | 2026-10-24T11:09:56.868944138Z persist_path: "/data" server-1 | 2026-10-24T11:09:56.868964804Z server-1 | 2026-10-24T11:09:56.868966471Z ========== server-1 | 2026-10-24T11:09:56.868968679Z server-1 | 2026-10-24T11:09:56.870487429Z server-1 | 2026-10-24T11:09:56.870498554Z ((((((((( (((((#### server-1 | 2026-10-24T11:09:56.870500971Z ((((((((((((((((((((((######### server-1 | 2026-10-24T11:09:56.870501846Z ((((((((((((((((((((((((########### server-1 | 2026-10-24T11:09:56.870502513Z ((((((((((((((((((((((((((############ server-1 | 2026-10-24T11:09:56.870503138Z (((((((((((((((((((((((((((############# server-1 | 2026-10-24T11:09:56.870503763Z (((((((((((((((((((((((((((############# server-1 | 2026-10-24T11:09:56.870504346Z (((((((((((((((((((((((((############## server-1 | 2026-10-24T11:09:56.870504929Z ((((((((((((((((((((((((############## server-1 | 2026-10-24T11:09:56.870505471Z (((((((((((((((((((((############# server-1 | 2026-10-24T11:09:56.870506054Z ((((((((((((((((############## server-1 | 2026-10-24T11:09:56.870506638Z ((((((((( ######### server-1 | 2026-10-24T11:09:56.870507263Z server-1 | 2026-10-24T11:09:56.870507721Z Saving data to: /data server-1 | 2026-10-24T11:09:56.870508263Z Connect to Chroma at: http://localhost:8000 server-1 | 2026-10-24T11:09:56.870508888Z Getting started guide: https://docs.trychroma.com/docs/overview/getting-started server-1 | 2026-10-24T11:09:56.870509471Z server-1 | 2026-10-24T11:09:56.870509971Z ☁️ To deploy your DB - try Chroma Cloud! server-1 | 2026-10-24T11:09:56.870511221Z - Sign up: https://trychroma.com/signup server-1 | 2026-10-24T11:09:56.870511763Z - Copy your data to Cloud: chroma copy --to-cloud --all server-1 | 2026-10-24T11:09:56.870512263Z server-1 | 2026-10-24T11:09:56.870515554Z No telemetry is configured.