Zobrazit stránkuStarší verzeZpětné odkazyNahoru Tato stránka je pouze pro čtení. Můžete si pouze prohlédnout zdrojový kód, ale ne ho měnit. Zeptejte se správce, pokud si myslíte, že něco není v pořádku. ====== Chroma ====== [[https://github.com/chroma-core/chroma|Chroma]] je open-source datová vrstva pro AI aplikace zaměřená hlavně na ukládání embeddingů, dokumentů a metadat pro retrieval. Podle [[https://docs.trychroma.com/|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: * **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í * [[https://docs.trychroma.com/cloud/search-api/overview|Chroma Cloud Search API]] pro pokročilejší cloudové hledání, včetně hybrid search a složitějšího rankingu ===== 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: * **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. ===== Základní datový model ===== Podle [[https://docs.trychroma.com/reference/architecture/overview|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. ===== Jak se s tím pracuje ===== README ukazuje velmi jednoduchý základní workflow v Pythonu: <code python> 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, ) </code> Podle [[https://docs.trychroma.com/docs/overview/getting-started|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 [[https://docs.trychroma.com/docs/run-chroma/clients|PersistentClient]] nebo běh serveru přes CLI. ===== Režimy nasazení ===== 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 [[https://www.trychroma.com/|Chroma Cloud]]. Pokud se Chroma spouští lokálně jako server, dokumentace uvádí tento základ: <code bash> chroma run --path /cesta/k/databazi </code> Podrobnosti jsou v [[https://docs.trychroma.com/docs/cli/run|CLI dokumentaci pro ''chroma run'']]. ===== Vyhledávání a filtrování ===== Open-source Chroma umí podle [[https://docs.trychroma.com/docs/querying-collections/query-and-get|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 [[https://docs.trychroma.com/docs/querying-collections/full-text-search|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ů. ===== Cloud vs. open-source režim ===== 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 [[https://docs.trychroma.com/cloud/search-api/overview|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. ===== 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: * 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ů. ===== Na co dát pozor ===== * **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 ===== Instalace ===== README uvádí tento rychlý start: <code bash> pip install chromadb # pro JavaScript: npm install chromadb # pro client-server mode: chroma run --path /chroma_db_path </code> 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 ===== * [[https://github.com/chroma-core/chroma|chroma-core/chroma – GitHub repozitář]] * [[https://raw.githubusercontent.com/chroma-core/chroma/main/README.md|Chroma – README]] * [[https://docs.trychroma.com/|Chroma Documentation]] * [[https://docs.trychroma.com/docs/overview/getting-started|Getting Started]] * [[https://docs.trychroma.com/docs/run-chroma/clients|Chroma Clients]] * [[https://docs.trychroma.com/docs/cli/run|Run a Chroma Server]] * [[https://docs.trychroma.com/docs/querying-collections/query-and-get|Query and Get]] * [[https://docs.trychroma.com/docs/querying-collections/full-text-search|Full Text Search]] * [[https://docs.trychroma.com/reference/architecture/overview|Architecture Overview]] * [[https://docs.trychroma.com/cloud/search-api/overview|Search API Overview]] * [[https://docs.trychroma.com/docs/overview/oss|Open Source]] * [[https://www.trychroma.com/|Chroma homepage]] ai/platformy/chroma.txt Poslední úprava: 2026/04/05 07:39autor: Petr Nosek