Chroma Production: Wann der Prototyp reicht 2026

Chroma Production: Wann reicht der Prototyp, wann braucht es Qdrant, Milvus oder pgvector? Grenzen, Migrationspfad und Entscheidungskriterien von Pexon.

6 Sep.. 2026 | AI

Inhaltsverzeichnis

Pexon Consulting | 9 Min. Lesezeit | 15.07.2026


TL;DR

Chroma ist die schnellste Wahl für den RAG-Prototyp: drei Zeilen Python, keine Infrastruktur. Für den Produktivbetrieb ab etwa 5 bis 10 Millionen Vektoren, mit Hochverfügbarkeit oder komplexem Metadaten-Filtering stößt die Single-Node-Architektur an ihre Grenze. Wir bei Pexon migrieren dann auf Qdrant, Milvus oder pgvector. Der Umbau dauert im Regelfall zwei bis vier Wochen.

Kriterium Chroma (Prototyp) Production-Vektor-DB
Setup-Zeit Minuten, pip install Stunden bis Tage (Cluster)
Vektor-Volumen bis ca. 5-10 Mio. 50 Mio. bis Milliarden
Hochverfügbarkeit keine (Single-Node) Replikation, Sharding
Metadaten-Filter einfach, nicht indexiert vor-gefiltertes ANN, indexiert

Warum Chroma für den Prototyp fast unschlagbar ist

Chroma gewinnt den Prototyp, weil der Reibungswiderstand null ist. Ein pip install chromadb, ein PersistentClient, und die erste RAG-Demo läuft auf dem Laptop. Kein Cluster, kein Helm-Chart, kein Betriebskonzept. Genau deshalb hat das Projekt Ende Juni 2026 rund 28.200 GitHub-Sterne und über 5 Millionen Downloads pro Monat.

Der Core ist inzwischen in Rust geschrieben (Version 1.4.0, veröffentlicht am 24.12.2025, aktueller Python-Client 1.5.8). Das macht Chroma schneller als sein Ruf aus der DuckDB-Ära. Für einen Wissens-Chatbot mit ein paar hunderttausend Dokument-Chunks reicht das oft bis in die Produktion hinein.

Unsere klare Position: Wer mit einer Production-DB startet, bevor der Use-Case validiert ist, verbrennt Zeit. Die meisten RAG-Ideen sterben in der Prototyp-Phase, weil die Retrieval-Qualität nicht stimmt, nicht weil die Datenbank nicht skaliert. Fang mit Chroma an. Die Frage ist nicht ob du startest, sondern wann du wechselst.

Die vier Grenzen, an denen Chroma in Production bricht

Chroma bricht nicht an der Vektor-Suche selbst, sondern an vier Betriebs-Anforderungen: Persistenz-Reife, Skalierung über einen Knoten hinaus, Hochverfügbarkeit und indexiertes Metadaten-Filtering. Solange keine dieser vier greift, kann Chroma auch produktiv laufen. Sobald eine greift, wird der Wechsel zur Frage von Zeit.

Persistenz. Chroma persistiert self-hosted lokal auf Disk. Das funktioniert, aber das Speicherformat ist vom Produktions-Pfad getrennt: kein natives Snapshot-Backup mit Point-in-Time-Restore wie bei Qdrant über RocksDB. Für eine DB, die eine geschäftskritische Wissensbasis hält, ist Backup-Restore kein Nice-to-have.

Skalierung. Der OSS-Betrieb ist Single-Node, das bestätigt auch die offizielle Chroma-Doku zu Single-Node-Performance. Jenseits von etwa 5 bis 10 Millionen Vektoren werden CPU, RAM und Disk-I/O zum Flaschenhals. Es gibt kein offizielles Sharding im selbst-gehosteten OSS-Strang. Wächst der Traffic, ist das ein architektonisches Problem, kein Config-Schalter.

Hochverfügbarkeit. Single-Node heißt: kein Failover. Fällt der Knoten aus, ist die Vektor-Suche weg, und mit ihr der RAG-Chatbot. Für eine interne Demo egal, für einen Techniker-Assistenten in der Fertigung nicht.

Metadaten-Filter. Chromas Filter sind einfach, aber nicht unabhängig indexiert. Eine Query wie „die 10 ähnlichsten Dokumente, aber nur aus Werk Nord, nur Freigabestatus final, nur nach 2024“ degradiert auf großen Collections spürbar. Die neue Unified-Search-API, die dichte Suche und Filter sauber kombiniert, gibt es Stand Juli 2026 nur in Chroma Cloud, dem kostenpflichtigen Managed-Angebot (seit Q1 2026 verfügbar).

Chroma vs Production-Optionen: die Vergleichstabelle

Für Production konkurrieren vier Optionen, je nach Stack und Volumen. Kurz gefasst: Qdrant ist der stärkste Default für gefiltertes RAG mit niedriger Latenz, Milvus für Milliarden-Scale, pgvector wenn ihr ohnehin auf Postgres sitzt, Weaviate für eingebaute Hybrid-Suche. Chroma bleibt der Prototyp-Sieger.

Vektor-DB Version (Juli 2026) Architektur Persistenz Stärke Wann wählen
Chroma 1.4.0 (Core), Py 1.5.8 Single-Node (OSS) lokal, Cloud verteilt Setup-Speed Prototyp, <5-10 Mio. Vektoren
Qdrant 1.18 Rust, verteilt RocksDB, Snapshots gefiltertes ANN, p50 ~4ms Default für Production-RAG
Milvus 2.6 verteilt, K8s-nativ Object-Storage Milliarden-Scale sehr große Collections
pgvector 0.9 Postgres-Extension Postgres (WAL, Backup) ein Stack, ACID ihr seid schon auf Postgres
Weaviate 1.38 verteilt eigenes LSM Hybrid-Suche, Vectorizer BM25 + Vektor kombiniert

Qdrant 1.18 bringt mit TurboQuant eine Quantisierung, die Vektoren um etwa das 8-fache komprimiert, ohne den üblichen Recall-Verlust. Milvus 2.6 (rund 43.000 GitHub-Sterne, gestützt von Zilliz) fügte Element-Level-Suche auf Struct-Feldern hinzu. pgvector 0.9 brachte Sparse-Vektor-Support. Diese Reife-Sprünge sind der eigentliche Grund, warum „Chroma für den Prototyp, Qdrant für Production“ so oft als Muster auftaucht.

Unsere Empfehlung für den Regelfall: Wenn ihr keine Postgres-Bindung habt und filterlastiges RAG fahrt, ist Qdrant die naheliegendste Wahl. Wenn ihr eine Postgres-Landschaft betreibt und unter ein paar Millionen Vektoren bleibt, spart pgvector euch eine ganze Datenbank im Stack. Milvus erst ab echtem Milliarden-Volumen, sonst ist der Betriebs-Overhead zu hoch.

Das läuft jetzt im POC. Was für den Produktivbetrieb fehlt: DSGVO-Konformität, SSO/Entra-Anbindung, Failover, Backup-Restore, Monitoring und ein Betriebskonzept für die Vektor-DB. Genau den Sprung von „läuft auf meinem Rechner“ zu „läuft im Unternehmen“ machen wir als 6-Wochen-Pilot für Advanced RAG.

Der Migrationspfad: von Chroma zu Qdrant in der Praxis

Der Wechsel ist mechanisch überschaubar, weil beide APIs dem gleichen Muster folgen: Collection anlegen, Vektoren mit Payload einfügen, Top-K mit Filter abfragen. Der Aufwand steckt nicht im Client-Code, sondern im Re-Indexing und im Betriebskonzept. In unseren Projekten dauert die reine Umstellung zwei bis vier Wochen, abhängig von Datenvolumen und Filter-Komplexität.

Der Client-Code sieht in beiden Welten fast identisch aus. Chroma zuerst:

import chromadb

# Chroma: Prototyp. Client speichert lokal auf Disk, kein Server nötig.
client = chromadb.PersistentClient(path="./chroma_daten")
collection = client.get_or_create_collection(name="handbuecher")

# Dokumente hinzufügen. Chroma erzeugt Embeddings per Default selbst.
collection.add(
    ids=["doc-1", "doc-2"],
    documents=["Wartungsintervall Pumpe P-200", "Fehlercode E14 Kühlung"],
    metadatas=[{"werk": "nord", "status": "final"}, {"werk": "sued", "status": "final"}],
)

# Ähnlichkeits-Suche mit einfachem Metadaten-Filter.
treffer = collection.query(
    query_texts=["Wie oft muss die Pumpe gewartet werden?"],
    n_results=5,
    where={"werk": "nord"},  # einfacher Filter, nicht unabhängig indexiert
)

Und dieselbe Logik gegen Qdrant, wo Filter vor-gefiltert und indexiert laufen:

from qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams, PointStruct, Filter, FieldCondition, MatchValue

# Qdrant: Production. Verteilter Rust-Server, RocksDB-Persistenz, Snapshots.
client = QdrantClient(url="http://qdrant.intern:6333")

# Collection mit fixer Vektor-Dimension anlegen (hier 1024, z.B. bge-m3 Embeddings).
client.recreate_collection(
    collection_name="handbuecher",
    vectors_config=VectorParams(size=1024, distance=Distance.COSINE),
)

# Payload = Metadaten. Wird unabhängig indexiert und vor der ANN-Suche gefiltert.
client.upsert(
    collection_name="handbuecher",
    points=[
        PointStruct(id=1, vector=embed("Wartungsintervall Pumpe P-200"),
                    payload={"werk": "nord", "status": "final"}),
        PointStruct(id=2, vector=embed("Fehlercode E14 Kühlung"),
                    payload={"werk": "sued", "status": "final"}),
    ],
)

# Vor-gefilterte Suche: der Filter greift, bevor ANN rechnet.
treffer = client.query_points(
    collection_name="handbuecher",
    query=embed("Wie oft muss die Pumpe gewartet werden?"),
    query_filter=Filter(must=[FieldCondition(key="werk", match=MatchValue(value="nord"))]),
    limit=5,
)

Der entscheidende Unterschied steckt nicht in der Zeilenzahl, sondern im Verhalten des Filters: Chroma filtert nach der Suche, Qdrant davor. Auf einer 50-Millionen-Collection ist das der Unterschied zwischen Millisekunden und Timeout. Ein zweiter Punkt, den Teams unterschätzen: die Embeddings müssen einmal neu erzeugt und geladen werden, und das Betriebskonzept (Snapshots, Monitoring, Failover) ist neu zu bauen, nicht zu portieren.

Worauf ihr bei der Entscheidung achten solltet

Die Wechsel-Entscheidung hängt an fünf Fragen, nicht an Bauchgefühl. Wenn ihr drei oder mehr davon mit „ja“ beantwortet, ist Chroma für euren Production-Case zu klein, und ein Umbau lohnt, bevor der Prototyp unter Last kippt.

  • Volumen: Wachst ihr absehbar über 5 bis 10 Millionen Vektoren? Dann plant den Wechsel früh ein.
  • Verfügbarkeit: Braucht der Use-Case Failover, oder ist ein Ausfall des Chatbots ein echtes Betriebsrisiko?
  • Filter: Sind eure Queries filterlastig (Werk, Freigabestatus, Zeitraum, Rolle) auf großen Collections?
  • Compliance: Braucht ihr Backup-Restore, Audit-Trail, SSO und dokumentierte DSGVO-Konformität?
  • Stack: Sitzt ihr schon auf Postgres? Dann prüft pgvector, bevor ihr eine neue DB einführt.

Ein Fehler, den wir häufig sehen: Teams migrieren zu früh auf ein verteiltes Milvus-Cluster, weil „das skaliert ja am besten“, und ersticken dann am Betriebs-Overhead für 800.000 Vektoren. Skalierung, die ihr nicht braucht, ist Kosten, kein Vorteil. Umgekehrt gilt: Wer den Wechsel zu lange aufschiebt, migriert unter Last mitten im Incident. Beides ist teuer. Der richtige Zeitpunkt ist, wenn der Prototyp validiert ist und die erste der fünf Fragen kippt.


Häufig gestellte Fragen

Kann Chroma überhaupt in Production laufen?

Ja, aber nur in einem engen Rahmen. Für kleinere Wissensbasen unter ein paar Millionen Vektoren, ohne harte Hochverfügbarkeits-Anforderung, läuft self-hosted Chroma stabil produktiv. Für serverlose, verteilte Production gibt es seit Q1 2026 Chroma Cloud als kostenpflichtige Managed-Variante. Der Single-Node-OSS-Strang ist kein Production-Cluster.

Was kostet die Migration von Chroma auf eine Production-Vektor-DB?

Der reine technische Umbau von Chroma auf Qdrant oder pgvector dauert in unseren Projekten zwei bis vier Wochen, je nach Datenvolumen und Filter-Komplexität. Der Löwenanteil ist nicht der Client-Code, sondern Re-Indexing, Embedding-Neuerzeugung und das Betriebskonzept (Snapshots, Monitoring, Failover). Wir bündeln das in einen Festpreis-Pilot, damit ihr keine offene Rechnung habt.

Chroma vs Qdrant: was ist der Hauptunterschied?

Chroma ist auf Setup-Geschwindigkeit optimiert und läuft self-hosted auf einem Knoten. Qdrant ist in Rust geschrieben, verteilt, mit RocksDB-Persistenz und Snapshots, und filtert Metadaten vor der ANN-Suche (indexiert). Qdrant liefert Benchmark-p50-Latenzen um 4ms und trägt Sharding sowie Replikation. Kurz: Chroma für den Prototyp, Qdrant für den Produktivbetrieb.

Wann ist pgvector die bessere Wahl als eine dedizierte Vektor-DB?

Immer dann, wenn ihr schon eine Postgres-Landschaft betreibt und unter einigen Millionen Vektoren bleibt. pgvector 0.9 hält Vektoren direkt in Postgres, mit ACID, WAL-Backup und eurem bestehenden Betriebswissen. Ihr spart eine komplette zusätzliche Datenbank im Stack. Bei filterlastigem RAG auf zweistelligen Millionen-Volumen ist eine dedizierte DB wie Qdrant aber schneller.

Wie viele Vektoren hält Chroma, bevor es kritisch wird?

Die Praxisgrenze für self-hosted Single-Node-Chroma liegt bei etwa 5 bis 10 Millionen Vektoren. Darüber werden CPU, RAM und Disk-I/O zum Flaschenhals, und die Antwortzeiten steigen spürbar an, besonders bei filterlastigen Queries. Das ist keine harte Schranke, sondern der Bereich, in dem der Betrieb unangenehm wird und der Wechsel sich rechnet.


Nächster Schritt

Wenn euer RAG-Prototyp läuft und ihr vor der Frage steht, ob und wohin ihr migriert, klärt das ein kurzer Architektur-Call schneller als drei Wochen interne Diskussion.


Verwandte Themen


Microsoft Fabric. Bilder Blogtemplate Whitepaper

Claude Code im Unternehmen

  • Praxis-Guide für IT-Leiter – mit konkreten Einblicken zu Kosten, Sicherheit und Rollout von Claude Code im Unternehmen.

Beratungsgespräch

Sichern Sie sich Ihre kostenfreie Erstberatung

Analyse Ihres individuellen Cloud- oder KI-Bedarfs
Erste Empfehlungen zu Umsetzungsstrategien
Transparente Einblicke in unsere Methoden, Technologien & Referenzen