Augmented Generation (RAG): 11 Klíčových Strategií pro Inovativní AI Agenty
Optimalizace Retrieval Augmented Generation (RAG): 11 Klíčových Strategií pro Inovativní AI Agenty
Jako AI Engineer, který se zaměřuje na vývoj robustních a přesných informačních systémů, především v oblasti klinických dat a digitální transformace, vím, jak zásadní je efektivně využívat firemní nebo klinické znalostní báze. Retrieval Augmented Generation (RAG) představuje klíčový mechanismus, který dává našim AI agentům schopnost prohledávat a efektivně využívat interní dokumenty a data.
Množství dostupných RAG strategií se však může zdát ohromující. Cílem optimálního řešení přitom je obvykle zkombinovat zhruba tři až pět těchto strategií. Pojďme se detailně podívat na klíčové strategie, které mi pomáhají stavět vysoce hodnotné a přesné systémy.
Základní princip RAG
Na vysoké úrovni se RAG dělí na dvě fáze:
- Příprava dat (Data Preparation): Dokumenty jsou rozděleny na menší části („chunks“), které jsou následně vloženy do vektorové databáze (nebo potenciálně do grafu znalostí) pomocí embeddingů.
- Vlastní RAG (Retrieval Augmented Generation): Dotaz uživatele (např. "Jaké jsou akční položky ze schůzky?") je vložen jako embedding, prohledá vektorovou databázi pro nalezení podobných segmentů. Tyto segmenty slouží jako dodatečný kontext pro Large Language Model (LLM), který následně generuje relevantní odpověď.
Existuje však mnoho různých způsobů, jak provádět jak přípravu dat (různé strategie segmentace), tak i samotné vyhledávání.
Strategie pro Zdokonalení Vyhledávání a Generace
Zlepšení fází dotazu a generace je klíčové pro zvýšení přesnosti a relevantnosti výsledků, které LLM poskytuje.
1. Re-ranking (Přerovnávání)
Re-ranking je strategie, kterou nasazuji téměř při každé RAG implementaci. Jedná se o dvoustupňové vyhledávání. Nejprve se z vektorové databáze stáhne velký počet segmentů (chunks). Poté se využije specializovaný model, často cross encoder, který identifikuje ty segmenty, které jsou skutečně relevantní k dotazu. LLM je nakonec dodána pouze malá, ale nejpřesnější sada segmentů.
Výhoda: Umožňuje zvážit širší spektrum znalostí, aniž by došlo k přehlcení LLM, které by se jinak stalo, kdybychom mu předali hned 20, 50 nebo více segmentů. Nevýhoda: Je mírně nákladnější kvůli volání druhého specializovaného modelu.
2. Agentic RAG (Agentní RAG)
Tato strategie poskytuje AI agentovi možnost vybrat si způsob prohledávání znalostní báze. Agent se může rozhodnout pro klasické sémantické vyhledávání, nebo si může zvolit přečtení celého textu jednotlivého dokumentu. To umožňuje agentovi přepínat mezi tabulkou pro segmenty a tabulkou s informacemi o dokumentu na vyšší úrovni, na základě položené otázky.
Výhoda: RAG systém je velmi flexibilní. Nevýhoda: Systém je méně předvídatelný, proto je nutné poskytnout agentovi velmi jasné instrukce, kdy a jak má různé typy prohledávání použít.
3. Knowledge Graphs (Grafy znalostí)
Knowledge Graphs kombinují tradiční vektorové vyhledávání s novým typem databáze – grafovou databází. Tato databáze ukládá vztahy mezi entitami. Agent tak může kromě vyhledávání podobnosti (similarity search) prohledávat i vztahy definované ve znalostní bázi. Tyto grafy se často budují pomocí LLM, které extrahují entity a vztahy ze surového textu.
Výhoda: Fantastické pro práci s vzájemně propojenými daty. Nevýhoda: Tvorba grafů pomocí LLM je pomalejší a dražší proces.
4. Contextual Retrieval (Kontextuální vyhledávání)
Tato strategie, intenzivně zkoumaná například společností Anthropic, využívá LLM k obohacení každého segmentu. Na začátek každého segmentu se přidá informace, která popisuje, jak daný segment zapadá do zbytku dokumentu. Tento obohacený text je následně embeddován spolu s původním obsahem.
Výhoda: Každý uložený segment obsahuje více kontextu. Nevýhoda: Využití LLM pro obohacení každého segmentu činí proces pomalejším a nákladnějším, podobně jako u Knowledge Graphs.
5. Query Expansion (Rozšíření dotazu)
Jedna z nejjednodušších strategií. Před odesláním uživatelského dotazu do vyhledávání se použije LLM k jeho rozšíření, aby byl specifičtější. Cílem je zvýšit přesnost a zajistit, že vyhledávání vrátí relevantnější segmenty. Instrukce pro LLM definují, jak má dotaz vylepšit přidáním relevantních detailů.
Nevýhoda: Vyžaduje dodatečné volání LLM před každým vyhledáváním, což zpomaluje proces.
6. Multi-Query RAG (Vícenásobné dotazy RAG)
Podobná a jednoduchá strategie jako Query Expansion. Místo rozšíření jednoho dotazu se LLM použije k vygenerování několika různých variant původního dotazu, které jsou poté odeslány do vyhledávání paralelně.
Výhoda: Poskytuje komplexnější pokrytí znalostní báze. Nevýhoda: Zvyšuje náklady a čas kvůli vícenásobnému volání LLM a většímu počtu dotazů do databáze.
7. Self-Reflective RAG (Sebe-reflexivní RAG)
Tato strategie zavádí smyčku sebe-korigujícího vyhledávání. Po provedení prvního vyhledávání se zavolá LLM, které na základě nalezených segmentů a původního dotazu vygeneruje hodnocení (např. na škále 1 až 5). Pokud hodnocení nedosáhne požadované úrovně (např. méně než 3), RAG nástroj se zavolá znovu s zpřesněným vyhledávacím dotazem.
Výhoda: Samokorekce a získání relevantnějších výsledků. Nevýhoda: Zvyšuje počet volání LLM, protože po každém vyhledávání je nutné volat sekundární LLM pro hodnocení a potenciální opakování.
Strategie pro Fázi Přípravy Dat (Chunking)
Pro efektivní RAG systémy je klíčové mít pevné strategie pro přípravu dat, protože přesné embeddingy a efektivní využití kontextu závisí na správném rozdělení dokumentů.
8. Context-Aware Chunking (Kontextově citlivá segmentace)
Tato strategie se zaměřuje na to, jak rozdělujeme dokumenty pro vložení do znalostní báze. Je nezbytné rozdělovat dokumenty na menší části, jinak jsou embeddingy nepřesné a agent stahuje příliš mnoho informací. Nicméně je kritické zachovat strukturu dokumentu. Context-Aware Chunking využívá embedding model k nalezení přirozených hranic v dokumentu, kde je vhodné rozdělení provést.
Výhoda: Zachovává strukturu dokumentu; je rychlé a bezplatné.
Implementace: Knihovna dockling v Pythonu usnadňuje implementaci Hybrid Chunking, což je forma Context-Aware Chunking.
9. Late Chunking (Pozdní segmentace)
Jde o velmi komplexní, avšak fascinující strategii. Na rozdíl od většiny metod se embedding model aplikuje na celý dokument předtím, než dojde k jeho segmentaci. Segmentace se následně aplikuje na tokenové embeddingy.
Výhoda: Každý segment si lépe uchovává kontext zbytku dokumentu, což maximalizuje využití plného kontextu dokumentu a využívá modely s delším kontextem. Nevýhoda: Je implementačně velmi složité.
10. Hierarchical RAG (Hierarchický RAG)
V této strategii jsou ve znalostní databázi uloženy různé vrstvy znalostí, které umožňují vztahy typu „rodič-dítě“ mezi segmenty. Tyto vztahy se obvykle ukládají jako metadata k segmentům. Lze tak vyhledávat malé, přesné jednotky (např. jednotlivé odstavce), ale poté načíst celý dokument, který s nalezeným segmentem souvisí.
Výhoda: Balancuje mezi přesností (vyhledávání malých jednotek) a kontextem (návrat velkého kontextu). Je vynikající, pokud potřebujeme precizní vyhledávání, ale zároveň chceme vidět větší kontext, za předpokladu, že dokumenty nejsou příliš rozsáhlé. Nevýhoda: Přidává komplexitu a mírnou nepředvídatelnost, podobně jako Agentic RAG.
Strategie pro Jádro Modelu
11. Fine-Tuned Embeddings (Jemně laděné embeddingy)
Tato technika se aplikuje jak během procesu dotazu, tak během indexování. Spočívá v jemném doladění embeddingových modelů na doménově specifických datových sadách – například pro medicínské nebo právní texty.
Výhoda: Z výzkumů vyplývá, že lze dosáhnout zisků přesnosti 5 až 10 %. Menší, otevřené modely tak mohou překonat větší a obecnější modely pro konkrétní uživatelské scénáře. Umožňuje také změnit kritéria podobnosti, například z sémantické podobnosti na podobnost založenou na sentimentu (např. dotaz „má objednávka dorazila pozdě“ může být podobný spíše „položky jsou vždy vyprodané“, protože se oba zaměřují na negativní sentiment, nikoli na položky objednávky). Nevýhoda: Vyžaduje velké množství dat pro trénink a průběžnou údržbu infrastruktury, protože se jedná o vlastní embedding model.
Doporučení pro Start
Optimalizace RAG je proces, který často vyžaduje kombinaci 3 až 5 strategií pro dosažení nejvyšších metrik přesnosti.
Pokud teprve začínáte s optimalizací, doporučuji zaměřit se na následující tři taktické strategie:
- Re-ranking (pro zajištění přesnosti kontextu pro LLM).
- Agentic RAG (pro flexibilní vyhledávání v rámci znalostní báze).
- Context-Aware Chunking (specificky Hybrid RAG, pro robustní přípravu dat a zachování struktury dokumentů).
Tyto tři pilíře tvoří skvělý základ pro budování vysoce efektivních a spolehlivých AI agentů, které dokáží pracovat s vašimi kritickými daty. Mnoho zdrojů, pseudokódů a příkladů implementace s využitím Postgress a PG Vector pro RAG agenty je k dispozici v doprovodném GitHub repozitáři.