Co je RAG? Retrieval-Augmented Generation jednoduše vysvětleno
RAG (retrieval-augmented generation) je způsob, jak nechat AI model odpovídat na otázky pomocí vašich vlastních informací. Když se někdo zeptá, vaše aplikace nejdřív prohledá dokumenty a najde nejrelevantnější pasáže. Ty pak spolu s otázkou předá modelu. Model napíše odpověď z tohoto textu, místo aby se spoléhal jen na to, co se náhodou naučil při trénování.
Proč na RAG záleží, když stavíte s AI
Velký jazykový model ví hodně o světě obecně, ale nic o vašem byznysu: o vašich cenách, zásadách, návodu k produktu nebo o minulotýdenních podpůrných tiketech. Má také datum konce trénování, takže neví nic nového. Když se ho přesto zeptáte, může vám dát sebejistou, věrohodně znějící a špatnou odpověď.
K nápravě máte tři hlavní možnosti:
| Přístup | Co dělá | Hodí se pro |
|---|---|---|
| Vložit všechno do promptu | Posílat všechny dokumenty s každou otázkou | Malé množství textu, několik stran |
| RAG | Prohledat dokumenty a poslat jen relevantní části | Větší nebo měnící se sbírky: centra nápovědy, návody, poznámky |
| Fine-tuning | Dál trénovat model na příkladech | Tón, formát a opakující se úkoly, ne fakta, která se mění |
Moderní modely přijímají dlouhé prompty, takže u krátkého FAQ je první možnost často v pořádku. RAG se vyplatí, když máte víc textu, než chcete posílat pokaždé, protože každé slovo, které pošlete, stojí peníze a čas (viz jak se účtují LLM API).
Pokud stavíte funkci „chat s naší dokumentací“, asistenta podpory nebo interní nástroj znalostí, téměř jistě stavíte nějakou formu RAG.
Každodenní přirovnání
Představte si zkoušku s otevřenou knihou. Student, který musí odpovídat z paměti, si může něco popletl nebo blufovat. Student, který smí nejdřív otevřít správné stránky, je přečíst a pak odpovědět, je mnohem spolehlivější, pokud ty správné stránky najde.
- Student je jazykový model.
- Učebnice jsou vaše dokumenty.
- Otevření správných stránek je vyhledávání.
- Napsání odpovědi z těchto stránek je generování.
RAG je verze s otevřenou knihou. A stejně jako u zkoušky kvalita odpovědi silně závisí na tom, zda se našly správné stránky.
Jak RAG funguje, krok za krokem
Typické nastavení RAG má dvě fáze.
Příprava dokumentů (dělá se předem):
- Shromáždit zdrojový materiál: články nápovědy, PDF, zásady, data o produktech.
- Rozdělit je na části: dlouhé dokumenty rozdělte na menší kousky, často po několika odstavcích, aby vyhledávání mohlo vrátit jen relevantní část.
- Převést na embeddingy každou část: pošlete ji do modelu embeddingů, který text převede na embedding, tedy dlouhý seznam čísel zachycujících jeho význam. Texty o podobných věcech dostanou podobná čísla.
- Uložit části a jejich embeddingy do databáze, která umí hledat podle podobnosti (často se jí říká vektorová databáze nebo vektorový index).
Odpověď na otázku (dělá se pokaždé):
- Převést otázku na embedding stejným modelem.
- Získat části, jejichž embeddingy jsou nejblíž embeddingu otázky, řekněme prvních pět.
- Sestavit prompt: pokyny, nalezené části a otázku.
- Generovat: jazykový model napíše odpověď na základě těchto částí, ideálně s uvedením, které použil.
Vyhledávání podle významu je to, co celé funguje: otázka na „vrácení peněz“ najde část nazvanou „Zásady vrácení“, i když nesdílejí žádné stejné slovo.
Praktický příklad: asistent nápovědy posilovny
Řekněme, že posilovna má 40 článků nápovědy a chce na svém webu chatovacího asistenta. Člen se zeptá: „Můžu si pozastavit členství, když cestuju?“
Aplikace převede otázku na embedding a najde tři nejbližší části. Jedna z nich zní:
Zmrazení členství: Členové s měsíčním tarifem si mohou členství
zmrazit až na 2 měsíce za rok. Požádat o to lze na recepci
nebo v aplikaci nejpozději 7 dní před začátkem zmrazení.
Prompt odeslaný modelu pak vypadá zhruba takto:
Jsi asistent nápovědy pro posilovnu Northside Gym.
Odpovídej pouze z níže uvedených zdrojů. Pokud odpověď v nich není,
řekni, že to nevíš, a navrhni kontakt na recepci.
Uveď, který zdroj jsi použil.
[Zdroj 1: Zmrazení členství] Členové s měsíčním tarifem mohou zmrazit...
[Zdroj 2: Zrušení členství] ...
[Zdroj 3: Hostovské vstupy] ...
Otázka: Můžu si pozastavit členství, když cestuju?
Model pak odpoví: „Ano, s měsíčním tarifem můžete členství zmrazit až na dva měsíce v roce. Požádejte o to na recepci nebo v aplikaci nejpozději 7 dní předem (zdroj: Zmrazení členství).“
Posilovna nic nepřetrénovala. Když změní zásady zmrazení, upraví článek, aplikace znovu vytvoří embedding té části a další odpověď to odrazí.
Klíčové pojmy
| Pojem | Význam |
|---|---|
| LLM | Velký jazykový model, AI, která píše odpověď. Viz co je LLM. |
| Embedding | Seznam čísel představujících význam kusu textu. |
| Model embeddingů | Model, který vytváří embeddingy. Obvykle je oddělený od chatovacího modelu a je mnohem levnější. |
| Část (chunk) | Kus dokumentu, dimenzovaný tak, aby šel vyhledat samostatně. |
| Vektorová databáze / vektorové vyhledávání | Úložiště, které najde položky s podobnými embeddingy. Některé běžné databáze to nabízejí také, například Postgres přes rozšíření pgvector. |
| Top-k | Kolik částí se získá na jednu otázku. |
| Hybridní vyhledávání | Kombinace vyhledávání podle významu s obyčejným vyhledáváním podle klíčových slov, které pomáhá u přesných výrazů, jako jsou kódy produktů. |
| Kontextové okno | Maximální množství textu, které model zvládne přijmout v jednom požadavku. |
| Ukotvení / citace | Navázání odpovědi na konkrétní nalezené zdroje a jejich zobrazení. |
Časté mylné představy
- „RAG trénuje model na mých datech.“ Netrénuje. Model se nemění; jen v okamžiku dotazu přečte dodatečný text.
- „RAG znamená žádné halucinace.“ Znamená to méně halucinací. Pokud vyhledávání minulo správnou část, nebo odpověď ve vašich dokumentech není, model může stále hádat. Nastavte mu, aby řekl „nevím“, a testujte ho otázkami, jejichž odpovědi znáte.
- „Potřebuji speciální vektorovou databázi.“ Často ne. Pro skromné množství dat může stačit vektorové rozšíření databáze, kterou už máte, nebo i obyčejné vyhledávání klíčových slov.
- „Větší části jsou lepší.“ Příliš velké části pošlou spoustu nerelevantního textu (víc nákladů, víc zmatení); příliš malé části ztratí kontext, který je dělal smysluplnými. Počítejte s laděním.
- „Prostě nahrajte všechno.“ Zastaralé, duplicitní nebo protichůdné dokumenty dávají protichůdné odpovědi. Vyčištění zdrojového materiálu bývá nejvíc, co můžete zlepšit.
- „Každý může vidět každý dokument.“ Jen pokud to tak postavíte. Pokud jsou některé dokumenty soukromé pro určité uživatele, musí samotné vyhledávání filtrovat podle toho, kdo se ptá. Jinak asistent může citovat data jednoho zákazníka jinému.
Kolik to stojí
Funkce RAG má obvykle tři průběžné náklady: embeddingy vašich dokumentů (malé a většinou jednorázové), embedding každé otázky (zanedbatelný) a volání jazykového modelu (hlavní náklad, který roste s počtem odeslaných částí). K tomu přibývá úložiště ve vaší databázi. Váš poskytovatel AI tyto náklady účtuje na váš účet, takže nastavte limit výdajů přímo tam.
Na co se ptát svého AI nástroje
- „Než začneme stavět RAG, ověř: je náš obsah dost malý na to, aby se prostě vložil do promptu?“
- „Rozděl články nápovědy na části po několika odstavcích, u každé části ponech nadpis a odkaz na zdroj a embeddingy ulož do naší databáze.“
- „Použij hybridní vyhledávání, tedy podle významu plus podle klíčových slov, aby se kódy produktů pořád shodovaly.“
- „Řekni modelu, ať odpovídá jen z nalezených zdrojů, řekne, když něco neví, a pod každou odpovědí ukáže zdroje.“
- „Vyhledávej jen v dokumentech, které může přihlášený uživatel vidět.“
- „Při každé úpravě dokumentu ho automaticky znovu převeď na embedding.“
- „Klíč k poskytovateli AI drž na serveru v tajném úložišti, nikdy v prohlížeči.“
- „Zaznamenávej každou otázku, nalezené části a odpověď, abych mohl kontrolovat špatné odpovědi.“
RAG v Mythexu
Mythex neobsahuje hotový produkt pro znalostní bázi nebo RAG. Napíše za vás kód pro něj uvnitř vaší aplikace: přinesete své dokumenty a vlastní klíč k poskytovateli AI, uložený jako tajná hodnota projektu, a agent postaví část pro vyhledávání a chat, přičemž pro ukládání použije Postgres databázi projektu. Využití poskytovatele se účtuje na váš účet u poskytovatele, ne v kreditech Mythexu. Dokumentace doporučuje začít jednou jednoduchou funkcí AI a přidat RAG, až bude fungovat. Viz vytváření aplikace s AI a naše průvodce stavbou aplikace s AI chatbotem a přidáváním funkcí AI.
Otázky
Co je RAG jednoduše řečeno?
RAG (retrieval-augmented generation) je způsob, jak nechat AI model odpovídat z vašich vlastních informací. Dřív než model odpoví, aplikace prohledá vaše dokumenty, najde pasáže nejrelevantnější k otázce a zařadí je do promptu. Odpověď tak vychází z tohoto textu, a ne jen z toho, co se model naučil při trénování.
Trénuje RAG AI na mých datech?
Ne. RAG vůbec nemění model. V okamžiku, kdy se položí otázka, vyhledá relevantní text a předá ho modelu spolu s otázkou. Když upravíte dokument, může další odpověď použít novou verzi hned.
Je RAG totéž co fine-tuning?
Ne. Fine-tuning mění chování modelu tím, že ho dál trénujete na příkladech. To je pomalejší a hodí se spíš pro styl nebo formát. RAG dává modelu fakta, která si přečte v okamžiku dotazu. To je lepší pro znalosti, které se mění, nebo musí být citovány přesně.
Zastaví RAG halucinace AI?
Snižuje je, ale úplně neodstraní. Pokud vyhledávání najde špatné pasáže, nebo odpověď ve vašich dokumentech vůbec není, model může pořád hádat. Dobré RAG aplikace říkají modelu, aby řekl, když něco neví, a ukazují zdroje, ze kterých čerpaly.