{"slug": "vector-database-showroom-part-2-chroma-the-e-scooter-that-starts-in-90-second", "title": "Vector database showroom. Part 2: Chroma — The E-Scooter That Starts in 90 Second", "summary": "A developer's hands-on review of Chroma, the open-source Apache 2.0 embedding database, details its embedded-by-default design, three-line setup with a bundled local ONNX embedding model, and SQLite-plus-Parquet persistence. The writeup warns that the HNSW index lives in RAM (roughly 6 GB for 1M 1536-dim vectors plus comparable graph overhead), there is no distributed mode, and durability is prototype-grade, making it suited to RAG prototyping and CI evals but not production workloads with paying users.", "body_md": "## \n  \n  \n  🛴 Chroma — The E-Scooter That Starts in 90 Seconds\n\n`pip install chromadb` — and you're already riding. No server, no ports, no API keys.\n\nUnder the hood: an open-source embedding database (Apache 2.0, Python-first, Rust core since v0.4). Embedded mode is the default: use `PersistentClient` to write your data to SQLite + Parquet right on disk (while the basic `Client()` is ephemeral and loses data on restart — a classic first-day surprise). Need to share it with the team? One command turns the scooter into an HTTP server or a container.\n\n## \n  \n  \n  Where it shines:\n\n- \n**Three lines to your first search, embeddings included** : a local ONNX model runs by default — no OpenAI key, no ongoing network calls (the model downloads once, ~80 MB, on first run), no bills\n- \n**The default of every RAG tutorial** : first-class LangChain and LlamaIndex integrations\n- Metadata filters (`where` ) and document-content filters (`where_document` )\n- Cosine instead of the default L2 — a single parameter\n- \n**Your data is actually yours** :`collection.get()` dumps everything. Lock-in is measured in hours, not months\n\n## \n  \n  \n  Where it stalls:\n\n- \n**Single node by design** — there is no distributed mode. Single-digit millions of vectors: comfortable. Tens of millions: an expedition with duct tape\n- \n**The HNSW index lives in RAM** : 1M × 1536-dim vectors ≈ 6 GB of raw data — plus roughly the same again for the graph itself (same math as pgvector)\n- \n**Prototype-grade durability** : SQLite + Parquet segments on disk. A hard kill of the process can cost you the latest writes\n- No BM25 hybrid, no quantization, no RBAC — invisible in a prototype, painfully visible in production\n\n## \n  \n  \n  What breaks if you skip the manual:\n\n- \n**The scooter that drove itself to production** . The classic arc: the prototype grows, \"it's basically done, let's ship it\" — and at 5M vectors you're looking for a cluster that doesn't exist. Migrating to a \"real\" database is a day's work; replanning the architecture mid-incident is the day you don't have\n- \n**No alarm system** : token auth at best, TLS is DIY through a reverse proxy. \"It's only reachable from the office network\" — famous last words\n- The storage format has changed between major versions before: read the changelog before upgrading\n\n**Cost of ownership**: free under Apache 2.0. Chroma Cloud exists, but the scooter's honest habitat is \"zero infrastructure at all.\"\n\n**Mechanics & parts**: job postings for a \"Chroma engineer\" don't exist — because they're not needed. Any Python developer can fix a scooter with a screwdriver. The community is one of the largest among vector databases.\n\n✅ **Take it if**: you're prototyping RAG, learning embeddings, running evals in CI, or building a personal tool that will never see the internet\n\n❌ **Pass if**: this database is about to hold production with paying users — rent a car, not a scooter\n\nTest drive — 90 seconds:\n\nThat's the whole vehicle. If it feels too easy — that's the point. Just remember: a scooter's job is to one day step aside for a real car.", "url": "https://wpnews.pro/news/vector-database-showroom-part-2-chroma-the-e-scooter-that-starts-in-90-second", "canonical_source": "https://dev.to/silver_dev/vector-database-showroom-part-2-chroma-the-e-scooter-that-starts-in-90-second-23gn", "published_at": "2026-10-03 10:30:05+00:00", "updated_at": "2026-10-03 10:37:56.598795+00:00", "lang": "en", "topics": ["ai-tools", "ai-infrastructure", "mlops", "developer-tools", "large-language-models"], "entities": ["Chroma", "SQLite", "Parquet", "HNSW", "LangChain", "LlamaIndex", "ONNX", "Chroma Cloud"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/vector-database-showroom-part-2-chroma-the-e-scooter-that-starts-in-90-second", "markdown": "https://wpnews.pro/news/vector-database-showroom-part-2-chroma-the-e-scooter-that-starts-in-90-second.md", "text": "https://wpnews.pro/news/vector-database-showroom-part-2-chroma-the-e-scooter-that-starts-in-90-second.txt", "jsonld": "https://wpnews.pro/news/vector-database-showroom-part-2-chroma-the-e-scooter-that-starts-in-90-second.jsonld"}}