Typy RAG: od základního vyhledávání po GraphRAG a AI agenty
RAG dává jazykovému modelu před odpovědí podklady z dokumentů, databází nebo webu. Jednoduchá verze zvládne interní FAQ, ale složitější otázky mohou potřebovat přepis dotazu, více zdrojů, kontrolu kvality nebo několik kol hledání. Proto dnes existují různé typy a vzory RAG — a ne všechny řeší stejný problém.
Tři věci, které je dobré vědět
- 1Naive, Advanced a Modular RAG popisují vývoj celé architektury od pevné linky k pružnému workflow.
- 2GraphRAG, Self‑RAG, CRAG nebo multimodální RAG jsou konkrétní vzory, které lze uvnitř modulární architektury kombinovat.
- 3Nejlepší RAG není nejsložitější. Začněte jednoduše a další vrstvu přidejte až podle naměřené chyby.
Co je RAG a proč vůbec vznikl
Zkratka RAG znamená Retrieval‑Augmented Generation, česky přibližně generování rozšířené o vyhledávání. Model nemusí spoléhat jen na znalosti uložené ve svých vahách. Nejdřív vyhledá relevantní podklady a teprve potom z nich sestaví odpověď. Díky tomu může pracovat s firemními dokumenty, novými informacemi i zdroji, které při tréninku neviděl.
RAG ale sám o sobě nezaručuje pravdu. Pokud vyhledávač přinese starý nebo nesouvisející dokument, model z něj může vytvořit přesvědčivě znějící chybu — dobré podklady riziko halucinací snižují, ale neodstraní. Moderní varianty proto vylepšují nejen generování, ale hlavně práci před ním: přípravu dokumentů, formulaci dotazu, výběr zdroje, řazení výsledků a kontrolu důkazů.
Tři hlavní paradigmata: Naive, Advanced a Modular RAG
Odborné přehledy často popisují vývoj RAG ve třech stupních. Nejde o produktové edice ani o ostré hranice. Jsou to užitečné názvy pro to, kolik řízení a zpětné vazby kolem základní linky vyhledat → odpovědět přidáváme.
Naive RAG
Dotaz se jednou převede na embedding, vyhledá se několik nejbližších úryvků a model z nich odpoví. Je rychlý, levný a výborný jako první měřitelná verze.
Advanced RAG
Vylepšuje jednotlivé fáze: kontextové dělení dokumentů, metadata, přepis dotazu, hybridní hledání, reranking, kompresi kontextu a ověřování odpovědi.
Modular RAG
Skládá vyhledávání, routery, paměť, nástroje a kontrolní kroky do pružného grafu. Systém může některé kroky přeskočit, větvit se nebo hledání opakovat.
1. Naive RAG: nejlepší výchozí bod
Dokumenty rozdělíte na úryvky, vytvoříte jejich embeddingy a uložíte je do indexu. Uživatelský dotaz projde stejným embeddingovým modelem, systém vezme například pět nejpodobnějších úryvků a přidá je do promptu. To často stačí pro příručku k produktu, interní směrnice nebo znalostní bázi s dobře napsanými otázkami.
Slabina se projeví u nejasných formulací, přesných kódů produktů, dlouhých dokumentů a otázek spojujících více faktů. Jeden dotaz, jedno pořadí výsledků a jedno generování nedávají systému prostor opravit špatný první krok.
2. Advanced RAG: kvalita v každé fázi
Advanced RAG stále může být lineární, ale každou část potrubí promýšlí samostatně. Před hledáním doplní kontext k úryvkům, filtruje podle metadat nebo přepíše otázku do podoby vhodnější pro vyhledávač. Při hledání kombinuje sémantickou podobnost s přesnými klíčovými slovy. Po hledání širší sadu kandidátů znovu seřadí a do modelu pustí jen nejlepší důkazy.
Právě zde bývá největší praktický přínos. Špatnou odpověď často nezpůsobí „slabý model“, ale chybějící správný úryvek. V testech Contextual Retrieval od Anthropic snížila kombinace kontextových embeddingů a BM25 počet neúspěšných nalezení v jejich sadách o 49 % oproti výchozímu RAG; s rerankingem o 67 %. Nejde o univerzální záruku, ale o dobrý příklad, proč má smysl měřit retrieval odděleně od generování.
3. Modular RAG: komponenty a rozhodování
Modular RAG opouští představu jediné pevné linky. Router může poslat dotaz do dokumentů, relační databáze nebo na web. Kontrolní modul může výsledek odmítnout, přepsat dotaz a hledat znovu. Paměť doplní kontext rozhovoru a nástroj pro citace naváže věty odpovědi na konkrétní zdroje.
Modularita usnadňuje kombinování vzorů, které následují. Stejný systém může používat hybridní hledání pro přesné termíny, GraphRAG pro vztahy a agentní smyčku jen u složitých otázek. Cenou je více komponent, složitější ladění a větší prostor pro chyby v řízení.
Osm pokročilých typů a vzorů RAG
Následující názvy nejsou jedna plochá taxonomie. Popisují různé vlastnosti: způsob vyhledávání, zdroj znalostí, kontrolní mechanismus nebo orchestrace. V produkčním řešení se běžně překrývají.
Hybrid RAG
Kombinuje sémantické vyhledávání přes embeddingy s lexikálním hledáním, například BM25. Embeddingy rozumějí významu, klíčová slova zase přesně zachytí čísla, názvy, zkratky a identifikátory.
Hodí se: technická dokumentace, katalogy, právní texty a všude, kde záleží na významu i přesném zápisu.
RAG‑Fusion
Model vytvoří několik významově odlišných verzí otázky. Každá se vyhledá samostatně a výsledné žebříčky se sloučí, často pomocí Reciprocal Rank Fusion. Tím se sníží závislost na jediné formulaci uživatele.
Hodí se: krátké, nejednoznačné nebo vícevrstvé dotazy, u kterých první formulace míjí slovník dokumentů.
Adaptive RAG
Nejprve odhadne složitost otázky. Jednoduchou může zodpovědět bez hledání, střední pošle do jednoho retrieval kroku a složitou řeší iterativně. Šetří práci tam, kde plné workflow není potřeba.
Hodí se: asistenti s velmi různorodými dotazy, kde potřebujete vyvažovat přesnost, latenci a cenu — podobně jako u reasoning modelů, které také přemýšlejí déle jen u těžších zadání.
Corrective RAG (CRAG)
Hodnotitel zkontroluje relevanci nalezených dokumentů. Při slabém výsledku systém dotaz upraví, pročistí podklady nebo sáhne do záložního zdroje, například na web. Nejde o stejnojmenný benchmark CRAG, ale o korektivní architekturu.
Hodí se: znalostní báze s proměnlivou kvalitou a scénáře, kde je lepší hledání zopakovat než sebejistě hádat.
Self‑RAG
Původní Self‑RAG trénuje model se speciálními reflexními tokeny. Model se učí rozhodnout, zda hledat, zda je pasáž relevantní a zda je odpověď podložená a užitečná. Není to jen obecná výzva „zkontroluj svou odpověď“.
Hodí se: výzkumné či specializované nasazení, kde dává smysl model upravit a řídit retrieval přímo během generování.
GraphRAG
Staví nad dokumenty graf entit, vztahů a často i souhrnů komunit. Umí hledat lokální okolí konkrétní entity i odpovídat na globální otázky o tématech napříč celým korpusem, které běžné top‑k úryvky snadno minou.
Hodí se: propojené události, organizace, osoby, závislosti a souhrnné otázky nad velkou sbírkou. Více najdete v článku o grafových databázích.
Agentic RAG
AI agent chápe retrieval jako jeden z nástrojů. Rozloží úkol, zvolí zdroj, hledá, porovná mezivýsledek a podle potřeby pokračuje. Nástroje může mít připojené standardně přes MCP, takže kombinuje dokumenty, SQL, webová API i výpočty.
Hodí se: otevřené analytické úlohy a vícezdrojové rešerše. Přináší ale vyšší cenu, latenci a potřebu limitů i observability. Princip agentní smyčky vysvětlujeme v článku Co je AI agent.
Multimodální RAG
Vyhledává a předává modelu nejen text, ale také obrázky, tabulky, grafy, zvuk či video. U vizuálně bohatých PDF může stránku indexovat přímo jako obraz, takže se význam rozvržení neztratí při převodu na holý text.
Hodí se: prezentace, naskenované smlouvy, technické výkresy, tabulkové reporty a obrazová dokumentace.
Je „vector RAG“ další typ?
Spíše označuje použitý retriever než celé paradigma. Podobně můžeme mluvit o SQL RAG, web RAG nebo knowledge‑graph RAG podle zdroje. Každý z nich může být jednoduchý, pokročilý, modulární i součást agentního workflow.
Tři kroky RAG v kódu
Rozdíl mezi typy RAG je nejlépe vidět na kódu. Následující ukázky jsou zjednodušené — funkce jako hledej nebo rerank zastupují vaši implementaci — ale ukazují přesně to místo, kde jednotlivé vzory přidávají práci navíc.
Naive RAG má jádro na dvacet řádků
Celý baseline je hledání nejbližších sousedů plus jeden prompt. Nepotřebujete framework ani vektorovou databázi; u pár tisíc úryvků stačí pole v paměti. Právě tuhle verzi si postavte jako první a změřte ji, než začnete přidávat vrstvy.
from openai import OpenAI
import numpy as np
client = OpenAI()
chunks = nacti_uryvky("dokumentace/") # seznam textovych uryvku
def embed(texty):
odpoved = client.embeddings.create(
model="text-embedding-3-small", input=texty
)
return np.array([polozka.embedding for polozka in odpoved.data])
index = embed(chunks) # tvar (pocet_uryvku, dimenze)
def odpovez(dotaz, k=5):
# embeddingy OpenAI maji jednotkovou delku, skalarni soucin = kosinova podobnost
skore = index @ embed([dotaz])[0]
podklady = [chunks[i] for i in skore.argsort()[-k:][::-1]]
instrukce = (
"Odpovidej vyhradne z dodanych podkladu. "
"Kdyz odpoved v podkladech neni, rekni to.\n\n"
+ "\n---\n".join(podklady)
)
return client.responses.create(
model="gpt-4.1-mini",
input=[
{"role": "system", "content": instrukce},
{"role": "user", "content": dotaz},
],
).output_text
Všimněte si systémové instrukce. Už v nejjednodušší verzi patří k RAG explicitní pokyn odpovídat jen z podkladů a přiznat, když informace chybí.
Hybridní hledání a RAG‑Fusion přidávají žebříčky
Hybrid RAG a RAG‑Fusion dělají v podstatě totéž: pustí víc hledání a výsledky sloučí. Reciprocal Rank Fusion přitom nepotřebuje porovnávat skóre z různých systémů, což je jeho hlavní výhoda — pracuje jen s pořadím. Konstanta k (obvykle 60) tlumí vliv prvních míst, takže jeden sebejistý vyhledávač nepřebije ostatní.
def rrf(zebricky, k=60):
"""Reciprocal Rank Fusion: slouci vic serazenych seznamu do jednoho."""
skore = {}
for zebricek in zebricky:
for poradi, doc_id in enumerate(zebricek, start=1):
skore[doc_id] = skore.get(doc_id, 0.0) + 1 / (k + poradi)
return sorted(skore, key=skore.get, reverse=True)
kandidati = rrf([
vektorove_hledani(dotaz, k=20), # semanticka podobnost
bm25_hledani(dotaz, k=20), # presna klicova slova, kody, nazvy
vektorove_hledani(prepis(dotaz), k=20), # RAG-Fusion: druha formulace
])
podklady = rerank(dotaz, kandidati[:20])[:5] # cross-encoder vybere finalni petici
Široký retrieval následovaný rerankingem je nejčastější recept Advanced RAG: hledejte dvacet kandidátů, ale do modelu pusťte pět nejlepších.
Korekční smyčka je jen podmínka navíc
CRAG, Adaptive i Agentic RAG stojí na stejné myšlence — mezi hledání a odpověď vložit rozhodnutí. Nejjednodušší podoba je jedna kontrola relevance a maximálně jedno další kolo.
def odpovez_s_kontrolou(dotaz, max_pokusu=2):
for pokus in range(max_pokusu):
podklady = hledej(dotaz)
hodnoceni = ohodnot_relevanci(dotaz, podklady) # LLM nebo maly klasifikator
if hodnoceni.relevantni:
return generuj(dotaz, podklady)
if pokus + 1 == max_pokusu:
break
dotaz = preformuluj(dotaz, hodnoceni.duvod) # druhe kolo s lepsim dotazem
# Cesta "nevim" je soucast navrhu, ne selhani.
return "V dostupnych podkladech jsem odpoved nenasel."
Limit pokusů tam patří od začátku. Bez něj se ze smyčky snadno stane drahý nekonečný cyklus, a to je nejčastější způsob, jak se agentní RAG prodraží.
Srovnání typů RAG v praxi
| Typ nebo vzor | Co přidává | Hlavní přínos | Náročnost |
|---|---|---|---|
| Naive RAG | Jedno hledání a jedno generování | Rychlý a levný základ | Nízká |
| Advanced RAG | Lepší index, dotaz, retrieval a reranking | Vyšší relevance podkladů | Střední |
| Modular RAG | Routery, smyčky, paměť a výměnné moduly | Pružnost a řízení toku | Střední až vysoká |
| Hybrid / Fusion | Více metod nebo formulací hledání | Vyšší recall a odolnost vůči slovníku | Střední |
| Adaptive / CRAG | Rozhodování a opravný krok | Méně zbytečné práce a slepých odpovědí | Střední až vysoká |
| Self‑RAG | Naučenou sebereflexi uvnitř modelu | Řízení retrieval a opory odpovědi | Vysoká |
| GraphRAG | Entity, vztahy a hierarchické souhrny | Multi‑hop a globální otázky | Vysoká |
| Agentic RAG | Plánování a opakované použití nástrojů | Složité vícezdrojové úkoly | Vysoká |
| Multimodální RAG | Retrieval textu i dalších modalit | Práce s vizuálně bohatými zdroji | Střední až vysoká |
RAG, fine‑tuning, nebo dlouhý kontext?
Než začnete vybírat typ RAG, ověřte, že RAG je vůbec správný nástroj. Tři přístupy řeší tři různé problémy a v praxi se často kombinují.
RAG
Mění se obsah, potřebujete citace, řízení přístupu a možnost dokument okamžitě stáhnout z oběhu. Aktualizace znamená přeindexovat, ne přetrénovat.
Fine‑tuning
Učí model jak odpovídat: formát, styl, odborný jazyk, konzistentní strukturu výstupu. Na často se měnící fakta je drahý a špatně se u něj dohledává zdroj.
Dlouhý kontext
Když se všechny podklady vejdou do jednoho promptu, retrieval nepotřebujete. Cena a latence ale rostou s délkou a modely mají tendenci ztrácet informace uprostřed vstupu.
Praktické pravidlo: znalosti řešte retrievalem, chování fine‑tuningem a dlouhý kontext berte jako doplněk pro pár desítek stran na jeden dotaz. I s modelem, který zvládne milion tokenů, se vyplatí nejdřív vybrat relevantní pasáže — kratší a čistší kontext bývá levnější i přesnější než nacpat do promptu celý archiv.
Jak vybrat správný typ RAG
Začněte povahou otázek a chyb, ne názvem frameworku. Praktický router může vypadat takto:
U regulovaných nebo kritických odpovědí přidejte nezávisle na zvoleném typu oprávnění, citace, kontrolu čerstvosti, možnost odpověď odmítnout a lidské schválení tam, kde chyba může způsobit škodu. Složitější RAG není náhradou za správu dat ani bezpečnost.
Čím RAG postavit
Konkrétní nástroje se mění rychleji než principy, takže je berte jako výchozí rozcestník. Pro orientaci pomůže rozdělit je podle role v systému:
Při výběru se ptejte na čtyři věci: zvládne to hybridní hledání, filtrování podle metadat a oprávnění, vrácení citací a napojení na evaluaci? Zbytek je většinou otázka provozních preferencí.
Co měřit, než přidáte další vrstvu
Hodnotit jen výsledný text nestačí. Oddělte, zda systém našel správný důkaz, zda ho model použil a kolik celý proces stojí. Jinak můžete měnit generátor kvůli chybě v indexu.
Začněte sadou reálných otázek uživatelů včetně nejasných, neřešitelných a oprávněním omezených případů. Teprve když například zjistíte, že systém nenachází přesná označení, přidejte BM25. Když selhává u vztahů přes více dokumentů, zvažte graf nebo iterativní retrieval. Architektura tak roste z dat, ne z módních názvů.
Časté chyby při stavbě RAG
- Příliš velké nebo příliš malé chunky. První přinášejí šum, druhé ztrácejí význam. Dělení testujte podle typu dokumentů a otázek.
- Více kontextu za každou cenu. Desítky průměrných pasáží mohou správný důkaz utopit. Pomůže širší retrieval následovaný rerankingem a menším top‑k.
- Žádné metadata a oprávnění. Oddělení zákazníků, platnost dokumentu, jazyk a přístupová práva patří do filtru před generováním.
- Jedna metrika pro celý systém. Bez samostatné evaluace retrievalu nepoznáte, zda chybuje hledání, prompt nebo model.
- Chybějící cesta „nevím“. RAG musí umět přiznat, že důkaz nenašel, místo aby chybějící informaci doplnil z domněnky.
- Agent hned v první verzi. Smyčky a nástroje násobí cenu i možné poruchy. Nejprve postavte jednoduchý baseline, logování a evaluační sadu.
- Ignorování aktualizací. Sledujte původ, verzi a datum dokumentů, mažte neplatné embeddingy a testujte, že nový obsah je skutečně dohledatelný.
Co si odnést
Naive, Advanced a Modular RAG popisují rostoucí pružnost celé architektury. Hybridní hledání, RAG‑Fusion, Adaptive RAG, CRAG, Self‑RAG, GraphRAG, Agentic RAG a multimodální RAG jsou konkrétní způsoby, jak řešit různé slabiny nebo zdroje dat. Lze je skládat, ale každá vrstva musí mít měřitelný důvod.
Pro většinu týmů je nejlepší cesta postupná: kvalitní dokumenty, jednoduchý retrieval, citace a evaluační sada; potom hybridní hledání a reranking. Router, graf nebo agenta přidejte až ve chvíli, kdy baseline prokazatelně nestačí.
Chcete si RAG a AI agenty postavit prakticky?
V kurzu Programátor AI Agentů propojujeme jazykové modely, vektorové databáze, RAG, nástroje a agentní workflow v Pythonu. Nezůstáváme u diagramů: jednotlivé komponenty navrhnete, naprogramujete a změříte na reálném projektu.
Zdroje a další čtení
- Retrieval‑Augmented Generation for Knowledge‑Intensive NLP Tasks — původní práce, která zavedla označení RAG
- Retrieval‑Augmented Generation for Large Language Models: A Survey — přehled Naive, Advanced a Modular RAG
- Anthropic: Introducing Contextual Retrieval — kontextové embeddingy, BM25 a reranking
- Self‑RAG — původní práce o retrievalu a reflexních tokenech
- Corrective Retrieval Augmented Generation — původní práce k CRAG
- Adaptive‑RAG — volba strategie podle složitosti otázky
- RAG‑Fusion: A New Take on Retrieval‑Augmented Generation — více formulací dotazu a sloučení výsledků
- Reciprocal Rank Fusion — původní metoda slučování žebříčků (Cormack et al., SIGIR 2009)
- Microsoft GraphRAG — oficiální dokumentace k lokálnímu, globálnímu a DRIFT hledání
- ColPali — vizuální retrieval dokumentových stránek pro multimodální RAG
- Ragas — knihovna metrik pro evaluaci RAG