Obsah

Chroma

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.

Co to umí

Z README a dokumentace vychází, že Chroma pokrývá hlavní části retrieval vrstvy:

Dokumentace také rozlišuje dvě důležité roviny:

K čemu je to dobré

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.

Základní datový model

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.

Jak se s tím pracuje

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.

Režimy nasazení

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''.

Vyhledávání a filtrování

Open-source Chroma umí podle Query and Get hlavně:

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:

To je praktické například tehdy, když je potřeba vyhledávat nejen sémanticky, ale i podle explicitních textových vzorů.

Cloud vs. open-source režim

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:

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.

Proč je Chroma zajímavá

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ů.

Na co dát pozor

Instalace

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.

Zdroje