Chroma je open-source datová vrstva pro AI aplikace zaměřená hlavně na ukládání embeddingů, dokumentů a metadat pro retrieval. Podle oficiální dokumentace umí semantické vyhledávání nad vektory, filtrování podle metadat, fulltext a v některých režimech i hybridní vyhledávání. Prakticky je to nástroj pro RAG, agentic search, interní znalostní báze nebo libovolné AI workflow, kde je potřeba rychle najít relevantní kusy dat.
Z README a dokumentace vychází, že Chroma pokrývá hlavní části retrieval vrstvy:
Dokumentace také rozlišuje dvě důležité roviny:
Chroma dává smysl hlavně tam, kde je potřeba převést vlastní data na něco, co může LLM nebo agent rychle prohledávat:
Jinými slovy: Chroma není samotný model ani chatbot. Je to infrastruktura, ze které si model bere relevantní kontext.
Podle architektury je základní jednotkou collection. Každá kolekce obsahuje:
Nad tím jsou ještě další vrstvy:
To je praktické hlavně tehdy, když je potřeba oddělit různé projekty, prostředí nebo zákazníky bez míchání dat v jedné kolekci.
README ukazuje velmi jednoduchý základní workflow v Pythonu:
import chromadb client = chromadb.Client() collection = client.create_collection("all-my-documents") collection.add( documents=["This is document1", "This is document2"], metadatas=[{"source": "notion"}, {"source": "google-docs"}], ids=["doc1", "doc2"], ) results = collection.query( query_texts=["This is a query document"], n_results=2, )
Podle Getting Started je nejjednodušší lokální začátek přes chromadb.Client(), který v Pythonu spustí Chroma in-memory. Pro trvalé uložení dat je potřeba použít PersistentClient nebo běh serveru přes CLI.
Architektura rozlišuje tři hlavní režimy:
Podle dokumentace je single-node typicky cílený na menší až střední workloady, zhruba do desítek milionů záznamů napříč několika kolekcemi. Managed variantou distribuovaného režimu je Chroma Cloud.
Pokud se Chroma spouští lokálně jako server, dokumentace uvádí tento základ:
chroma run --path /cesta/k/databazi
Podrobnosti jsou v CLI dokumentaci pro ''chroma run''.
Open-source Chroma umí podle Query and Get hlavně:
.query().get()where pro metadatawhere_document pro obsah dokumentůTo je důležité, protože retrieval v praxi většinou není jen „najdi nejbližší embedding“. Často je potřeba říct třeba:
Podle Full Text Search Chroma podporuje v dokumentovém filtru i:
$contains a $not_contains$regex a $not_regex$and a $orTo je praktické například tehdy, když je potřeba vyhledávat nejen sémanticky, ale i podle explicitních textových vzorů.
Tady je dobré nepomíchat dvě různé věci:
Dokumentace výslovně uvádí, že nové Search API je v tuto chvíli dostupné pro Chroma Cloud. Právě tam jsou dnes pokročilé možnosti jako:
query() a get()Pokud tedy někdo čte marketing nebo homepage, je potřeba rozlišovat, co je dostupné obecně v projektu a co je dnes specificky cloudová funkce.
Z praktického pohledu je na Chromě zajímavé hlavně to, že spojuje několik věcí do jednoho celku:
To z ní dělá dobrý stavební blok pro aplikace, které potřebují vlastní znalostní vrstvu, ale nechtějí si celou retrieval infrastrukturu skládat ručně z více produktů.
README uvádí tento rychlý start:
pip install chromadb # pro JavaScript: npm install chromadb # pro client-server mode: chroma run --path /chroma_db_path
Pokud jde o nejrychlejší první test, dává smysl Python in-memory klient. Pokud má aplikace běžet déle nebo sdílet data mezi více procesy, je lepší persistentní nebo serverový režim.