ai:platformy:chroma

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.

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

  • ukládání dokumentů, embeddingů a metadat do kolekcí
  • vektorové similarity search nad dense embeddingy
  • metadata filtering při dotazu
  • full-text a regex filtrování nad obsahem dokumentů
  • multimodální práci s embeddingy
  • lokální běh, single-node server i distribuovaný provoz
  • cloud variantu Chroma Cloud pro managed provoz

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

  • open-source Chroma pro lokální nebo self-hosted použití
  • Chroma Cloud Search API pro pokročilejší cloudové hledání, včetně hybrid search a složitějšího rankingu

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:

  • RAG nad interní dokumentací – návody, wiki, PDF, exporty z Notionu nebo knowledge base
  • paměť pro AI agenty – ukládání kontextu, poznámek, výsledků a pozdější retrieval podle podobnosti
  • vyhledávání v kódu nebo firemních datech – pokud je potřeba hledat sémanticky, ne jen přes substring
  • vyhledávání s filtrováním – například jen dokumenty z určitého zdroje, projektu nebo časového období
  • prototypování AI aplikací – lokálně bez velkého setupu, později s možností přejít na persistentní nebo cloudový režim

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:

  • unikátní ID záznamu
  • embedding vector
  • volitelná metadata
  • dokument

Nad tím jsou ještě další vrstvy:

  • database – logický namespace pro více kolekcí
  • tenant – vyšší úroveň izolace pro uživatele nebo tým

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:

  • local – embedded režim pro prototypování a experimenty
  • single-node – jeden server pro menší a střední workload
  • distributed – škálovatelný provoz pro větší produkční nasazení

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ě:

  • similarity search přes .query()
  • přímé čtení záznamů přes .get()
  • filtrování přes where pro metadata
  • filtrování přes where_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:

  • hledej jen v dokumentech z určitého systému
  • vrať jen záznamy s konkrétním tagem nebo stránkou
  • kombinuj podobnost s textovým omezením v samotném dokumentu

Podle Full Text Search Chroma podporuje v dokumentovém filtru i:

  • $contains a $not_contains
  • $regex a $not_regex
  • logické kombinace přes $and a $or

To 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:

  • open-source Chroma je databázová a retrieval vrstva, kterou lze provozovat lokálně nebo self-hosted
  • Chroma Cloud je managed služba nad stejným ekosystémem, která přidává serverless provoz a další cloudové funkce

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:

  • unified Search API místo odděleného query() a get()
  • hybrid search
  • vlastní ranking expressions
  • batch operations
  • přesnější výběr vracených polí

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:

  • jednoduchý start pro lokální prototypy
  • přirozený datový model pro AI retrieval
  • více způsobů nasazení od embedded režimu po cloud
  • práce s dokumenty, embeddingy i metadata filtrováním v jednom API

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

  • in-memory klient v Pythonu není persistence – data se po ukončení procesu ztratí, pokud se nepoužije persistentní nebo serverový režim
  • pokročilé cloudové search funkce nejsou totéž co lokální OSS režim – je potřeba číst dokumentaci podle konkrétního deployment mode
  • Chroma řeší retrieval, ne celé AI workflow – chunking, kvalita embeddingů, relevance dotazů a navazující práce LLM zůstávají na aplikaci
  • výsledná kvalita závisí i na datech a embedding modelu – samotná databáze nevyřeší špatně připravené dokumenty nebo nekvalitní chunking

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.

  • ai/platformy/chroma.txt
  • Poslední úprava: 2026/04/05 07:39
  • autor: Petr Nosek