autor: Petr Sovadina10 min čtení1861 slov

Přehled strategií RAG: 11 ověřených cest k přesnějším odpovědím

Technology
Technology

Komplexní přehled klíčových strategií pro Retrieval-Augmented Generation (RAG), což je metoda, která umožňuje AI systémům vyhledávat a využívat externí znalostní báze a dokumenty. Optimální implementace RAG systému obvykle spočívá v kombinaci tří až pěti různých strategií, které se zaměřují jak na fázi přípravy dat, tak na samotný proces dotazování a získávání informací.

Dokument detailně rozebírá jedenáct hlavních strategií. Mezi ně patří techniky pro zlepšení relevance výsledků, jako jsou Re-ranking a Self-reflective RAG, metody pro flexibilnější vyhledávání, například Agentic RAG a Hierarchical RAG, a strategie pro obohacení dotazů, jako Query Expansion a Multi-query RAG. Zvláštní pozornost je věnována také přípravě dat, zejména strategiím jako Context-aware Chunking a inovativní, i když komplexní, Late Chunking. Dále jsou popsány přístupy využívající alternativní datové struktury, jako jsou Knowledge Graphs, a techniky pro hlubší přizpůsobení, například Fine-tuned Embeddings.

Strategie_RAG_Mind_Map.png

Pro počáteční implementaci se jako nejefektivnější výchozí bod doporučuje kombinace tří klíčových strategií: Re-ranking pro zvýšení přesnosti, Agentic RAG pro flexibilní vyhledávání a Context-aware Chunking pro inteligentní přípravu dat.

Úvod do RAG

Retrieval-Augmented Generation (RAG) je proces, který se skládá ze dvou hlavních fází. Cílem je poskytnout velkému jazykovému modelu (LLM) dodatečný kontext z externích zdrojů, aby mohl generovat přesnější a informovanější odpovědi.

Příprava dat (Data Preparation):

- **Chunking:** Zdrojové dokumenty jsou rozděleny na menší, stravitelné části informací (chunky).
- **Embedding:** Každý chunk je převeden na numerickou reprezentaci (vektor embedding) pomocí embedding modelu.
- **Ukládání:** Tyto vektory jsou uloženy a indexovány ve vektorové databázi (např. Postgres s rozšířením PGVector) nebo případně v znalostním grafu.

**Proces dotazování (Query Process):**

- **Embedding dotazu:** Dotaz uživatele je rovněž převeden na vektor embedding.
- **Vyhledávání:** Systém prohledá vektorovou databázi a najde chunky, jejichž vektory jsou nejvíce podobné vektoru dotazu.
- **Augmentace a generování:** Nalezené relevantní chunky jsou předány LLM jako dodatečný kontext spolu s původním dotazem. LLM na základě tohoto obohaceného vstupu vygeneruje odpověď.

Detailní Analýza RAG Strategií

Následující kapitola podrobně popisuje jedenáct odlišných strategií pro optimalizaci RAG systémů, včetně jejich principů fungování, výhod a nevýhod.

  1. Re-ranking

Tato strategie zavádí dvoufázový proces vyhledávání pro zvýšení relevance konečných výsledků.

  • Princip: V první fázi je z vektorové databáze načten velký počet potenciálně relevantních chunků. Ve druhé fázi je použit specializovaný model (často tzv. cross-encoder) k přehodnocení této širší sady a výběru pouze několika nejrelevantnějších chunků, které jsou následně předány LLM.
  • Výhody: Umožňuje zvážit širší spektrum informací, aniž by došlo k zahlcení LLM, což vede k přesnějším výsledkům.
  • Nevýhody: Proces je mírně nákladnější a pomalejší kvůli zapojení druhého modelu.
  1. Agentic RAG

Tento přístup dává AI agentovi autonomii při volbě způsobu, jakým prohledává znalostní bázi.

  • Princip: Agent se může na základě povahy dotazu rozhodnout, zda provede klasické sémantické vyhledávání v chuncích, nebo zda například přečte celý text jednoho konkrétního dokumentu. Systém může mít různé tabulky, např. jednu pro chunky a druhou pro metadata celých dokumentů, a agent si mezi nimi vybírá.
  • Výhody: Značná flexibilita při vyhledávání.
  • Nevýhody: Nižší předvídatelnost výsledků. Vyžaduje velmi jasné instrukce pro agenta, kdy má kterou metodu vyhledávání použít.
  1. Knowledge Graphs (Znalostní grafy)

Tato strategie kombinuje tradiční vektorové vyhledávání s databází založenou na grafech, která ukládá vztahy mezi entitami.

  • Princip: Kromě sémantické podobnosti může agent prohledávat také explicitně definované vztahy mezi entitami (osoby, místa, koncepty) extrahovanými z textu. Znalostní graf je obvykle budován pomocí LLM, který extrahuje entity a jejich vztahy ze surových dat.
  • Výhody: Vynikající pro vysoce propojená data, kde jsou vztahy klíčové.
  • Nevýhody: Vytvoření grafu je výrazně pomalejší a nákladnější, protože vyžaduje zpracování dokumentů pomocí LLM. Pro práci se znalostními grafy se doporučuje knihovna Graffiti.
  1. Contextual Retrieval

Tato technika obohacuje každý chunk o další kontextové informace popisující jeho roli v rámci celého dokumentu.

  • Princip: Před samotný obsah každého chunku je pomocí LLM vložen text, který popisuje, jak daný chunk zapadá do širšího kontextu dokumentu. Tento dodatečný text je následně součástí embeddingu.
  • Výhody: Podle výzkumu společnosti Anthropic tato metoda výrazně zlepšuje celkový proces vyhledávání.
  • Nevýhody: Podobně jako u znalostních grafů je proces vytváření chunků pomalejší a nákladnější kvůli nutnosti použití LLM pro každý chunk.
  1. Query Expansion (Rozšíření dotazu)

Jedna z jednodušších strategií, která se zaměřuje na vylepšení původního dotazu uživatele.

  • Princip: Před odesláním dotazu do vyhledávacího systému je použit LLM, aby dotaz rozšířil o další relevantní detaily a specifikace, což zvyšuje jeho přesnost.
  • Výhody: Může vést k nalezení relevantnějších chunků.
  • Nevýhody: Zpomaluje proces odpovědi, protože každý dotaz vyžaduje jedno volání LLM navíc.
  1. Multi-query RAG

Podobně jako Query Expansion, i tato strategie modifikuje původní dotaz, ale odlišným způsobem.

  • Princip: Místo rozšíření jednoho dotazu je LLM použit k vygenerování několika různých variant původního dotazu. Tyto varianty jsou následně odeslány do vyhledávacího systému paralelně.
  • Výhody: Poskytuje komplexnější pokrytí a zvyšuje šanci na nalezení relevantních informací z různých úhlů pohledu.
  • Nevýhody: Vyšší náklady kvůli volání LLM a většímu počtu dotazů do databáze.
  1. Context-aware Chunking

Tato strategie se zaměřuje na fázi přípravy dat s cílem zachovat strukturální integritu dokumentů.

  • Princip: Místo mechanického dělení textu (např. po 1000 znacích) se používá embedding model k identifikaci "přirozených hranic" v dokumentu. Dělení pak probíhá na těchto sémantických předělech. Pro implementaci této techniky (konkrétně formy zvané "hybrid chunking") se doporučuje Python knihovna Docling.
  • Výhody: Proces je rychlý, bezplatný a lépe zachovává kontext a strukturu původního dokumentu.
  • Nevýhody: Implementace je složitější než u jednoduchých metod dělení textu.
  1. Late Chunking

Nejkomplexnější a nejméně rozšířená strategie, která radikálně mění tradiční postup.

  • Princip: Embedding model se aplikuje na celý dokument před jeho rozdělením na chunky. Následně se dělí až samotné tokenové embeddingy.
  • Výhody: Každý výsledný chunk si díky tomuto postupu zachovává kontext celého dokumentu. Strategie využívá embedding modely s delším kontextovým oknem.
  • Nevýhody: Extrémně vysoká komplexnost implementace.
  1. Hierarchical RAG

Tento přístup organizuje data v databázi do více vrstev, typicky s využitím vztahů "rodič-dítě".

  • Princip: Systém ukládá vztahy mezi chunky, například mezi jednotlivými odstavci (dítě) a celým dokumentem (rodič). To umožňuje provádět vyhledávání na jemné úrovni (malé chunky pro přesnost), ale v případě potřeby načíst širší kontext (celý dokument). Tento vztah lze uložit jako metadata chunku.
  • Výhody: Vyvažuje přesnost vyhledávání s potřebou dostatečného kontextu.
  • Nevýhody: Zvyšuje komplexitu a nepředvídatelnost systému, podobně jako Agentic RAG.
  1. Self-reflective RAG

Jednodušší strategie, která zavádí smyčku pro sebeopravu vyhledávání.

  • Princip: Po úvodním vyhledávání je spuštěn LLM, který na základě dotazu a nalezených chunků udělí hodnocení (např. na škále 1-5). Pokud je hodnocení pod stanovenou hranicí (např. 3), systém provede nové, upřesněné vyhledávání.
  • Výhody: Schopnost systému automaticky korigovat a zlepšovat relevanci výsledků.
  • Nevýhody: Zvyšuje počet volání LLM, protože po každém vyhledávání je nutné provést hodnocení a potenciálně i opakovat celý proces.
  1. Fine-tuned Embeddings

Tato pokročilá strategie se týká přizpůsobení samotného embedding modelu pro specifickou doménu.

  • Princip: Embedding model je dodatečně trénován na specifickém datovém souboru (např. právním, lékařském). Tímto procesem se model naučí lépe chápat nuance a terminologii dané oblasti.
  • Výhody:
    • Může přinést zvýšení přesnosti o 5-10 %.
    • Menší, open-source modely mohou po fine-tuningu překonat větší, obecné modely.
    • Umožňuje změnit základ pro posuzování podobnosti (např. z sémantické podobnosti na podobnost sentimentu).
  • Nevýhody: Vyžaduje velké množství trénovacích dat, specializovanou infrastrukturu a průběžnou údržbu vlastního modelu.

Klíčová Doporučení a Závěr

Pro dosažení nejlepších výsledků se doporučuje nekombinovat co nejvíce strategií, ale pečlivě vybrat sadu tří až pěti, které nejlépe odpovídají danému případu použití.

Jako vysoce efektivní výchozí bod pro většinu aplikací je doporučena následující trojice strategií:

  1. Re-ranking: Pro zajištění maximální relevance výsledků předaných LLM.
  2. Agentic RAG: Pro poskytnutí flexibility při volbě nejvhodnějšího způsobu vyhledávání.
  3. Context-aware Chunking: Konkrétně implementace "hybrid RAG" s knihovnou Docling pro inteligentní přípravu dat, která zachovává kontext.