Retrieval-augmented generation (RAG) (CS)
Retrieval-Augmented Generation (RAG) (čes. Generování doplněné vyhledáváním) — je metoda v oblasti umělé inteligence, při níž je generativní jazykový model (LLM) vybaven přístupem k externím zdrojům informací za účelem zvýšení přesnosti a věrohodnosti odpovědí. Jinými slovy, model před vygenerováním odpovědi provede vyhledávání relevantních dat (například v databázi dokumentů, na webové stránce nebo v DB) a využije nalezené informace při tvorbě odpovědi[1][2]. Tento přístup zajišťuje „doplnění" znalostmi z aktuálních zdrojů a pomáhá překonat omezení samotných LLM, spojená s omezenou „pamětí" a zastaralými informacemi[3]. RAG-systém může odkazovat na konkrétní dokumenty (například formou poznámek pod čarou) ve vygenerované odpovědi, což zvyšuje transparentnost a umožňuje uživateli ověřit fakta[1]. V důsledku toho se snižuje riziko výskytu halucinací — případů, kdy model sebejistě uvádí nepravdivé informace[1][3]. RAG rozšiřuje znalostní základnu LLM prakticky na neomezený objem a umožňuje modelům využívat nejnovější data bez přeučení[4].
Počátky a vývoj metody
Myšlenka kombinovat vyhledávání informací s automatickým generováním odpovědí vznikla dlouho před příchodem moderních LLM. Již v 70. letech 20. století byly podnikány pokusy o vytvoření systémů question-answering, které hledaly odpovědi v textových databázích na základě zadané otázky[1]. V 90. letech vznikla webová služba Ask Jeeves, která popularizovala vyhledávání odpovědí v přirozeném jazyce, a v roce 2011 systém IBM Watson předvedl možnosti AI, když porazil lidské účastníky v televizní soutěži Jeopardy![1].
Současná etapa vývoje je spojena se zaváděním neuronových jazykových modelů: Retrieval-Augmented Generation jako samostatný přístup byl navržen v roce 2020 skupinou výzkumníků z Facebook AI Research, University College London a dalších institucí pod vedením Patricka Lewise[1]. V jejich práci přijaté na NeurIPS 2020 je popsán model RAG — generativní seq2seq model (například BART) s diferencovatelným přístupem k externímu „neparametrickému" úložišti znalostí[5]. Autoři využili jako externí znalostní základnu celou anglickou Wikipedii, reprezentovanou jako vektorový index (~21 milionů textových fragmentů), v němž se vyhledávání provádí pomocí neuronového algoritmu Dense Passage Retrieval[5]. Pro příchozí dotaz model RAG extrahuje z indexu nejrelevantnější fragmenty a přidává je do kontextu generování odpovědi. Tento mechanismus umožnil dosáhnout nových rekordních výsledků (state-of-the-art) na úlohách s otevřenou znalostní základnou, například v testech Natural Questions, WebQuestions a dalších[2]. Bylo zaznamenáno, že odpovědi RAG modelu byly specifičtější a faktograficky správnější než u předchozích generativních přístupů, díky syntéze informací hned z několika zdrojů[2]. Brzy poté Facebook veřejně zveřejnil zdrojový kód RAG: model byl integrován do knihovny HuggingFace Transformers a přidruženého datasetu, což umožnilo vývojářům snadno aplikovat RAG ve svých projektech[2]. Od roku 2020 metodika RAG rychle získala popularitu — podle slov autora, navzdory ne příliš libozvučné zkratce, se přístup rozšířil, podnítil stovky vědeckých prací a stal se základem mnoha komerčních služeb[1].
Princip fungování RAG
Základní schéma Retrieval-Augmented Generation: vyhledávací modul (vlevo) extrahuje relevantní dokumenty ze znalostní základny, načež generativní model (vpravo) formuluje odpověď na základě dotazu uživatele s přihlédnutím k nalezeným informacím[6]. Tento přístup umožňuje LLM opírat se při generování odpovědi o aktuální externí data. Diagram ukazuje, jak je uživatelský dotaz převeden na vektor a použit k vyhledání podobných textových fragmentů; ty jsou poté připojeny ke kontextu modelu, čímž se „rozšíří" jeho znalosti a zvýší přesnost odpovědi.
RAG-systém se obvykle skládá ze dvou hlavních komponent: vyhledávacího modulu (retriever) a modulu generování odpovědi (generator)[6]. Ve fázi přípravy se buduje vektorový index znalostní základny: všechny dokumenty (texty) jsou rozděleny na fragmenty a modelem embeddingu převedeny na číselné vektory, které jsou uloženy ve specializované databázi pro následné vyhledávání[6]. Při příchodu dotazu uživatele tentýž embedding model zakóduje dotaz do vektoru; poté se provede vyhledávání nejbližších sousedů ve vektorovém prostoru — vybere se top K nejpodobnějších fragmentů z indexu znalostí (například K = 5)[6]. Tyto fragmenty jsou považovány za externí kontext obsahující pravděpodobné fakty k tématu dotazu.
V dalším kroku je sestavený kontext použit generativním modelem. Původní otázka spolu s nalezenými textovými fragmenty je předložena LLM (například transformeru typu seq2seq nebo instrukčně orientovanému modelu) k vygenerování výsledné odpovědi[2]. Jazykový model se tak podmíněně opírá nejen o své naučené (parametrické) znalosti, ale i o poskytnutá externí data. V původní implementaci RAG plnil roli generátoru předtrénovaný model BART a externí „paměť" byla reprezentována kolekcí Wikipedia indexovanou metodou DPR[5].
Fusion-přístup k integraci znalostí
Důležitou vlastností RAG je způsob, jakým model kombinuje informace z několika nalezených dokumentů. Na rozdíl od prostého zřetězení veškerého textu používá RAG přístup označovaný jako late fusion („pozdní sloučení výsledků") — generativní model paralelně zpracovává každý z K získaných fragmentů a pro každý z nich vytváří hypotetickou odpověď s hodnocením jistoty, načež tyto varianty agreguje do finálního výstupu[2]. Tato metoda umožňuje RAG syntetizovat odpověď i v případech, kdy žádný jednotlivý zdroj neobsahuje přímou a úplnou odpověď na otázku. Například pokud jsou potřebné informace rozloženy do různých článků, model je schopen spojit „stopy" z několika dokumentů do jediné odpovědi[2]. (Je zaznamenáno, že zvyšování počtu použitých dokumentů obvykle zlepšuje úplnost odpovědi za cenu mírného snížení koherence textu[7].)
Varianty implementace
V původní práci z roku 2020 jsou navrženy dvě modifikace architektury RAG[6]. V režimu RAG-Sequence generativní model obdrží pevnou sadu nalezených dokumentů a použije je k vygenerování celé odpovědi najednou. V režimu RAG-Token je naopak umožněna dynamická aktualizace: při každém kroku generování dalšího tokenu může model znovu provést vyhledávání a načíst další textový fragment, pokud je to nezbytné pro upřesnění odpovědi. Oba přístupy vykazují srovnatelně vysokou kvalitu; RAG-Sequence je jednodušší a rychlejší, zatímco RAG-Token teoreticky umožňuje zohlednit více různorodých informací u dlouhých odpovědí[6].
Výhody RAG
- Aktuálnost a faktická přesnost. Napojení na externí data umožňuje LLM poskytovat přesnější a lépe podložené odpovědi, opírající se o skutečné informace, a nejen o parametry modelu. To výrazně snižuje riziko zastaralých nebo jednoduše vymyšlených informací v odpovědi modelu[3][1]. Na rozdíl od modelů s pevným „řezem znalostí" může RAG odpovídat i na otázky týkající se událostí nebo faktů, které vznikly po dokončení trénování modelu — díky přístupu k čerstvým zdrojům dat[4].
- Transparentnost a důvěra uživatelů. RAG-systémy jsou schopny poskytovat odkazy na zdroje informací (například na články, zprávy nebo databáze), které sloužily jako základ odpovědi[1]. Model v podstatě formátuje své odpovědi podobně jako vědecká práce s poznámkami pod čarou, což umožňuje ověřit věrohodnost každého faktu. Přítomnost citovaných primárních zdrojů zvyšuje důvěru uživatelů a usnadňuje verifikaci získaných informací.
- Specializace na konkrétní oblast. Retrieval-augmentation umožňuje relativně snadno přizpůsobit práci modelu úzké znalostní doméně, aniž by bylo třeba měnit samotný jazykový model. K tomu stačí vybavit LLM specializovanou znalostní základnou k příslušné tematice — ať již jde o lékařské články, právní dokumenty nebo technické manuály společnosti. Model, který zůstává obecný svými parametry, začíná vystupovat v roli experta v dané oblasti, protože čerpá fakta z vybraného datasetu[4][8]. Například právní asistent založený na RAG může omezit oblast vyhledávání na jediný jurisdikční korpus (zákony konkrétní země), čímž zajistí, že odpovědi budou v souladu právě s tímto právním řádem[8].
- Flexibilita a aktualizovatelnost znalostí. V klasických modelech bylo pro přidání nových znalostí nebo opravu nesprávných faktů nutné provádět opakované trénování (fine-tuning) na rozšířeném datasetu, což je časově i zdrojově náročné. RAG tento problém řeší: aby bylo možné aktualizovat znalosti modelu, stačí aktualizovat externí databázi nebo připojit další zdroje a model okamžitě začne nové informace využívat[2]. To umožňuje snadno udržovat systém aktuální — data lze fakticky „za provozu" nahrazovat i v reálném čase bez přerušení chodu modelu[1].
- Efektivita a úspora zdrojů. Přístup RAG se často ukáže praktičtějším než trénování extrémně velkých modelů, které se snaží obsáhnout veškeré informace ve svých parametrech. Integrací vyhledávání lze dosáhnout srovnatelných výsledků s modelem střední velikosti, aniž by bylo třeba si pamatovat absolutně všechny fakty uvnitř samotné neuronové sítě[6]. Navíc implementace RAG pipeline je relativně nenáročná: existují hotové nástroje (frameworky, knihovny) a vývojáři ukazují, že základní prototyp RAG lze sestavit doslova v několika řádcích kódu[1]. RAG tak snižuje celkové náklady na nasazení AI: místo trénování nového modelu pro každý úkol stačí nakonfigurovat vyhledávací mechanismus a poskytnout vhodná data.
Problémy a omezení RAG
Navzdory zřejmým přednostem zdědil Retrieval-Augmented Generation omezení jak od vyhledávacích komponent, tak od samotných jazykových modelů[9]. Níže jsou uvedeny klíčové problémy, jež jsou vlastní RAG-systémům:
- Závislost na kvalitě vyhledávání. Získaná odpověď bude správná přesně v té míře, v jaké jsou extrahovaná data relevantní a spolehlivá. Pokud vyhledávací modul vrátí dokumenty, které se netýkají otázky nebo obsahují chyby, generativní model tyto fakty nemůže „opravit" — vygeneruje odpověď na jejich základě[8]. Kvalita a aktuálnost externí znalostní základny tedy přímo určuje přesnost RAG. Je třeba pravidelně aktualizovat index a ladit algoritmy řazení, aby výběr dokumentů zůstal relevantní.
- Vysoká složitost a náročnost na zdroje. RAG-systém ke svému fungování potřebuje nejen samotný LLM, ale také infrastrukturu pro vyhledávání: ukládání a aktualizaci rozsáhlé databáze, indexování, čas na provedení dotazu. To vše zvyšuje výpočetní náklady a může snižovat rychlost odpovědi v porovnání se samotným jazykovým modelem[8]. V nejhorším případě prodlevy ve fázi vyhledávání nebo zpracování velmi velkého množství dat systém zpomalí. V praxi je třeba vyvažovat kvalitu odpovědi a výkonnost, optimalizovat pipeline (například omezením velikosti znalostní základny nebo hloubky vyhledávání, aby doba odezvy zůstala v přijatelných mezích).
- Požadavky na data a jejich správu. Pro efektivní fungování RAG jsou nezbytná kvalitní, strukturovaná a dostupná externí data. Vyhledávací model může mít potíže s nacházením užitečných informací, pokud je externí znalostní základna špatně organizována nebo obsahuje šum[8]. Navíc potřebná data nejsou vždy volně dostupná nebo levná: společnosti musejí vytvářet a spravovat vlastní knowledge bases. To představuje dodatečné náklady a vyžaduje úsilí při aktualizaci dat (například přidávání nových dokumentů, odstraňování zastaralých informací). Slabým místem RAG je závislost na udržování znalostní základny v aktuálním stavu.
- Neodstranitelnost některých chyb LLM. Přestože RAG výrazně snižuje počet konfabulací, není vždy možné zcela vyloučit nesprávné odpovědi[9]. Generativní model může stále učinit logickou chybu nebo nesprávně zobecnit informace, zejména pokud poskytnutý kontext není dostatečně úplný nebo je rozporuplný[9]. RAG de facto přesouvá těžiště chyb: místo zjevně vymyšlených faktů („halucinací") se častěji vyskytují chyby integrace znalostí — model může například přehlédnout důležitý fragment nebo nesprávně propojit různé zdroje mezi sebou. Proto v případě odpovědných aplikací (medicína, právo) je stále nutná účast člověka při ověřování a korigování odpovědí systému.
Aplikace RAG
Metoda Retrieval-Augmented Generation nalezla uplatnění v mnoha scénářích spojených s extrakcí a využíváním znalostí. Níže jsou uvedeny hlavní oblasti, kde RAG prokazuje největší přínos:
- Systémy otázek a odpovědí a chatboti. RAG umožňuje vytvářet virtuální asistenty a chatboty, kteří odpovídají na otázky uživatelů s vysokou přesností a mohou poskytovat odkazy na zdroje. V oblasti zákaznické podpory takoví boti přistupují k interní znalostní základně společnosti (FAQ, nápověda) a poskytují okamžité odpovědi na dotazy zákazníků, čímž snižují zátěž zaměstnanců[8]. Na rozdíl od klasických FAQ systémů formulují RAG boti odpovědi živým jazykem, ale zároveň je „podpírají" aktuálními daty specifickými pro problém uživatele.
- Medicína a zdravotnictví. Generativní model doplněný specializovanou lékařskou databází (vědecké články, klinické protokoly, příručky) může sloužit jako inteligentní asistent lékaře nebo pacienta. Například systém dokáže odpovědět na otázku o vzácné diagnóze tím, že v lékařské literatuře nalezne nejnovější výzkumy k danému tématu[8]. Důležitou předností RAG v medicíně je možnost odkazovat na primární zdroje (například na výsledky klinických studií), což je nezbytné pro důvěru ze strany lékařů. Takové systémy se využívají pro podporu rozhodování, kontrolu příznaků, výuku studentů medicíny apod., přičemž zajišťují přístup k nejnovějším lékařským poznatkům.
- Právo a finance. V právní praxi a finanční analýze je obzvláště kritická přesnost a ověřitelnost informací. RAG-systémy mohou pomoci odborníkům rychle nacházet potřebné informace: například právník s pomocí modelu vyhledá a cituje precedenční soudní rozhodnutí nebo příslušné ustanovení zákona relevantní pro aktuální případ, a finanční analytik rychle získá výňatky z nejnovějších ekonomických zpráv nebo tržních zpráv[8]. Přitom každá odpověď modelu může obsahovat odkazy na konkrétní dokumenty (právní předpisy, zprávy, články), což odpovídá standardům odvětví a usnadňuje následnou ruční práci odborníka.
- Vědecký výzkum a tvorba obsahu. Novináři, výzkumníci a autoři mohou využívat RAG k urychlení vyhledávání faktů a zdrojů při přípravě materiálů. Například model dokáže na vyžádání „shromáždit" informace z několika důvěryhodných publikací a tím výrazně zkrátit čas věnovaný faktické kontrole a výběru citací[8]. Výzkumní asistenti založení na RAG automaticky extrahují odkazy na relevantní práce, data z otevřených databází (například statistiky z mezinárodních zpráv) a dokonce hrubé překlady, což autorům umožňuje soustředit se na analytickou část práce. Podobné nástroje nacházejí uplatnění v médiích, akademickém prostředí, při přípravě přehledů literatury apod.
- Firemní znalosti a vyhledávání v dokumentech. V mnoha organizacích je velký objem cenných informací uložen ve formě textových dokumentů: předpisy, příručky, zprávy, korespondence, log soubory. RAG poskytuje způsob interaktivního vyhledávání v takových nestrukturovaných datech pomocí přirozeného jazyka. Zaměstnanec může položit otázku („Co se říká o politice dovolené pro vzdálené zaměstnance?") — a model nalezne příslušnou část interního dokumentu, cituje ji a formuluje souhrnnou odpověď[1]. To zvyšuje efektivitu práce: noví zaměstnanci rychleji nacházejí odpovědi na otázky, oddělení podpory získávají nástroj pro rychlé vyhledávání v databázi incidentů a vedení — způsob analýzy nashromážděných textových dat. Velké IT společnosti již zavádějí RAG přístup v podnikových řešeních: technologie od Microsoftu, Google, IBM, AWS a dalších integrují LLM s vyhledáváním v datech organizace[1].
Perspektivy a další výzkum
Metoda Retrieval-Augmented Generation se aktivně rozvíjí a v nejbližších letech se očekává další rozšíření jejích možností. Jedním ze směrů je multimodální RAG, kde jako externí informace mohou sloužit nejen texty, ale také obrázky, audio/video nebo dokonce data ze senzorů. Experimenty ukazují perspektivnost kombinace jazykových modelů s vyhledáváním ve vizuálních databázích, což umožní například odpovídat na otázky o obsahu obrázků nebo videí na základě popisů a souvisejících textů[2]. Dalším důležitým směrem je simultánní využití více znalostních zdrojů: budoucí RAG systémy budou moci kombinovat data z různých databází (například Wikipedia, specializované encyklopedie, osobní poznámky uživatele) a syntetizovat odpovědi zohledňující všechny tyto různorodé informace[2].
Před výzkumníky stojí také úkol zvýšení spolehlivosti a bezpečnosti RAG. Je nutné minimalizovat riziko šíření předsudků a chyb, které mohou být obsaženy v externích datech, a také zajistit konzistentnost odpovědí. Tým vývojářů původního RAG již v tomto směru podnikal kroky — například omezením počáteční znalostní základny pouze na články Wikipedie jako relativně ověřeného a neutrálního zdroje[2]. V budoucnu se plánuje vytváření speciálních filtrů a metod výběru dokumentů, aby model získával zaručeně kvalitní kontext. Výzkum se kromě toho soustředí na zlepšení samotného vyhledávacího mechanismu: vyvíjejí se nové algoritmy řazení a sémantického indexování, schopné přesněji chápat dotazy a nacházet relevantní informace i k složitě nebo vágně formulovaným otázkám.
Konečně zajímavá je hlubší integrace RAG s procesem trénování jazykových modelů. Již se objevují přístupy, kdy jsou retrieval mechanismy využívány nejen ve fázi inference, ale také při předtrénování nebo fine-tuningu LLM[10]. To může ještě více zvýšit faktografičnost modelů a snížit jejich závislost na staticky zapsaných znalostech v parametrech. Podle přehledů publikovaných v roce 2024 vidí komunita velké perspektivy v rozvoji ekosystému RAG: od optimalizace infrastruktury (urychlení vyhledávání, snížení paměťových nároků) až po vytváření standardních benchmarků pro hodnocení kvality RAG-systémů[3]. To vše má za cíl učinit generativní modely přesnějšími, univerzálnějšími a bezpečnějšími při práci s neustále se aktualizujícími externími znalostmi, což je klíčovým krokem na cestě k spolehlivé umělé inteligenci nové generace.
Odkazy
- Co je Retrieval-Augmented Generation (RAG) — blog NVIDIA
- Retrieval-Augmented Generation for Large Language Models: A Survey — vědecký přehled na arXiv
- Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks — původní článek o RAG
- Co je RAG? Využití, omezení a výzvy — blog Bright Data
Literatura
- Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
- Karpukhin, V. et al. (2020). Dense Passage Retrieval for Open-Domain Question Answering. arXiv:2004.04906.
- Guu, K. et al. (2020). REALM: Retrieval-Augmented Language Model Pre-Training. arXiv:2002.08909.
- Qu, Y. et al. (2020). RocketQA: An Optimized Training Approach to Dense Passage Retrieval for Open-Domain Question Answering. arXiv:2010.08191.
- Izacard, G.; Grave, E. (2021). Leveraging Passage Retrieval with Generative Models for Open Domain Question Answering. arXiv:2007.01282.
- Borgeaud, S. et al. (2022). Improving Language Models by Retrieving from Trillions of Tokens. arXiv:2112.04426.
- Wei, J. et al. (2022). Chain of Thought Prompting Elicits Reasoning in Large Language Models. arXiv:2201.11903.
- Wang, X. et al. (2022). Self-Consistency Improves Chain of Thought Reasoning in Language Models. arXiv:2203.11171.
- Kojima, T. et al. (2022). Large Language Models are Zero-Shot Reasoners. arXiv:2205.11916.
- Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629.
- Mialon, G. et al. (2023). Retrieval-Augmented Generation for Large Language Models: A Survey. arXiv:2312.10997.
- Madaan, A. et al. (2023). Self-Refine: Iterative Refinement with Self-Feedback. arXiv:2303.17651.
- Yang, Z. et al. (2023). Re-ViLM: Retrieval-Augmented Visual Language Model for Zero and Few-Shot Image Captioning. arXiv:2302.04858.
- Barnett, S. et al. (2024). Seven Failure Points When Engineering a Retrieval Augmented Generation System. arXiv:2401.05856.
- Wang, Y. et al. (2024). Self-Instruct: Aligning Language Models with Self-Generated Instructions. arXiv:2212.10560.
- Han, H. et al. (2025). Retrieval-Augmented Generation with Graphs (GraphRAG). arXiv:2501.00309.
Poznámky
- ↑ 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 «What Is Retrieval-Augmented Generation aka RAG». NVIDIA Blogs. [1]
- ↑ 2.00 2.01 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 2.10 «Facebook open-sources RAG, an AI model that retrieves documents to answer questions». VentureBeat. [2]
- ↑ 3.0 3.1 3.2 3.3 Mialon, Grégoire et al. «Retrieval-Augmented Generation for Large Language Models: A Survey». arXiv. [3]
- ↑ 4.0 4.1 4.2 «Applied AI Software Engineering: RAG». Pragmatic Engineer. [4]
- ↑ 5.0 5.1 5.2 Lewis, Patrick et al. «Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks». arXiv. [5]
- ↑ 6.0 6.1 6.2 6.3 6.4 6.5 6.6 «How RAG Makes LLMs Smarter». Exxact Blog. [6]
- ↑ «Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks». arXiv. [7]
- ↑ 8.0 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 «What Is RAG? Use Cases, Limitations, and Challenges». Bright Data Blog. [8]
- ↑ 9.0 9.1 9.2 Lewis, Patrick et al. «Seven Failure Points When Engineering a Retrieval Augmented Generation System». arXiv. [9]
- ↑ «Генерация, дополненная поиском». Википедия. [10]