Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek vysvětluje načítání rozšířené generace (RAG) a to, co vývojáři potřebují k sestavení řešení RAG připraveného pro produkční prostředí.
Další informace o dvou způsobech vytvoření aplikace "chat přes data" – jeden z nejlepších případů použití umělé inteligence pro firmy – najdete v tématu Rozšíření LLM pomocí RAG nebo vyladění.
Následující diagram znázorňuje hlavní kroky RAG:
Tento proces se nazývá naïve RAG. Pomůže vám pochopit základní části a role v chatovacím systému založeném na RAG.
Systémy RAG z reálného světa potřebují k zpracování článků, dotazů a odpovědí více předběžného zpracování a následného zpracování. Následující diagram znázorňuje realističtější nastavení označované jako pokročilé RAG:
Tento článek poskytuje jednoduchou architekturu pro pochopení hlavních fází v chatovacím systému založeném na rag na reálném světě:
- Fáze příjmu dat
- Fáze odvozování procesu
- Fáze vyhodnocení
Příjem dat
Příjem dat znamená ukládání dokumentů vaší organizace, abyste mohli rychle najít odpovědi pro uživatele. Hlavním úkolem je najít a používat části dokumentů, které nejlépe odpovídají jednotlivým otázekm. Většinasystémůch Lepší výsledky získáte, když rozumíte typu obsahu (jako jsou vzory a formát) a dobře uspořádáte svá data ve vektorové databázi.
Při nastavování příjmu dat se zaměřte na tyto kroky:
- Předběžné zpracování a extrakce obsahu
- Strategie vytváření bloků dat
- Uspořádání bloků dat
- Strategie aktualizace
Předběžné zpracování a extrakce obsahu
Prvním krokem ve fázi příjmu dat je předběžné zpracování a extrakce obsahu z dokumentů. Tento krok je zásadní, protože zajišťuje, aby byl text čistý, strukturovaný a připravený k indexování a načítání.
Čistý a přesný obsah zlepšuje fungování chatovacího systému založeného na RAG. Začněte tím, že se podíváte na tvar a styl dokumentů, které chcete indexovat. Řídí se nastaveným vzorem, jako je dokumentace? Pokud ne, na jaké otázky by tyto dokumenty mohly odpovědět?
Minimálně nastavte kanál příjmu dat na:
- Standardizace textových formátů
- Zpracování speciálních znaků
- Odebrání nesouvisejícího nebo starého obsahu
- Sledování různých verzí obsahu
- Zpracování obsahu pomocí karet, obrázků nebo tabulek
- Extrakce metadat
Některé z těchto informací, jako jsou metadata, můžou pomoct při načítání a vyhodnocování, pokud je uchováváte s dokumentem v databázi vektorů. Můžete ho také zkombinovat s textovým blokem, abyste zlepšili vkládání vektoru bloku.
Strategie vytváření bloků dat
Jako vývojář se rozhodněte, jak rozdělit velké dokumenty do menších bloků dat. Vytváření bloků dat pomáhá posílat nejrelevantnější obsah do LLM, aby mohl lépe odpovídat na otázky uživatelů. Zamyslete se také nad tím, jak po jejich získání použijete bloky dat. Vyzkoušejte běžné oborové metody a otestujte strategii vytváření bloků dat ve vaší organizaci.
Při vytváření bloků dat se zamyslete nad:
- Optimalizace velikosti bloků dat: Vyberte nejlepší velikost bloku dat a způsob rozdělení – podle oddílu, odstavce nebo věty.
- Překrývající se a posuvné bloky oken: Rozhodněte se, jestli mají být bloky oddělené nebo překrývající se. Můžete také použít posuvný přístup k oknem.
- Small2Big: Pokud rozdělíte podle věty, uspořádejte obsah tak, abyste našli blízké věty nebo celý odstavec. Poskytnutí tohoto dodatečného kontextu LLM může pomoct lépe odpovědět. Další informace najdete v další části.
Uspořádání bloků dat
Způsob uspořádání dat v vektorové databázi v systému RAG usnadňuje a rychleji vyhledá správné informace. Tady je několik způsobů, jak nastavit indexy a vyhledávání:
- Hierarchické indexy: Používejte vrstvy indexů. Souhrnný index nejvyšší úrovně rychle najde malou sadu pravděpodobných bloků dat. Index druhé úrovně odkazuje na přesná data. Toto nastavení urychlí hledání tím, že zpřesní možnosti a teprve potom se podíváte na podrobnosti.
- Specializované indexy: Vyberte indexy, které odpovídají vašim datům. Indexy založené na grafech můžete použít například v případě, že se vaše bloky dat vzájemně propojují, například v citačních sítích nebo ve znalostních grafech. Pokud jsou vaše data v tabulkách, použijte relační databáze a filtrujte je pomocí dotazů SQL.
- Hybridní indexy: Kombinování různých metod indexování Napřed použijte souhrnný index a pak index založený na grafu k prozkoumání připojení mezi bloky dat.
Optimalizace zarovnání
Zpřesněte načtené bloky dat tím, že je přiřaďte k typům otázek, na které odpovídají. Jedním ze způsobů je vytvoření ukázkové otázky pro každý blok dat, který ukazuje, jaká otázka odpovídá nejlépe. Tento přístup pomáhá několika způsoby:
- Vylepšené porovnávání: Během načítání systém porovná otázku uživatele s těmito ukázkovými otázkami, aby našel nejlepší blok dat. Tato technika zlepšuje význam výsledků.
- Trénovací data pro modely strojového učení: Tyto páry bloků otázek pomáhají trénovat modely strojového učení v systému RAG. Modely zjistí, které bloky odpovídají na jaké typy otázek.
- Přímé zpracování dotazů: Pokud otázka uživatele odpovídá ukázkové otázce, systém dokáže rychle najít a použít správný blok dat a urychlit odpověď.
Ukázková otázka každého bloku funguje jako popisek, který vede algoritmus načítání. Hledání se bude více soustředit a uvědomovat si kontext. Tato metoda funguje dobře, když bloky dat pokrývají mnoho různých témat nebo typů informací.
Aktualizace strategií
Pokud vaše organizace často aktualizuje dokumenty, musíte zachovat aktuální databázi, aby nástroj pro načítání vždy mohl najít nejnovější informace. Komponenta retrieveru je součástí systému, který prohledává vektorovou databázi a vrací výsledky. Tady je několik způsobů, jak udržovat vektorové databáze v aktualizovaném stavu:
přírůstkové aktualizace:
- Pravidelné intervaly: Nastavte aktualizace tak, aby se spouštěly podle plánu (například denního nebo týdenního) na základě toho, jak často se dokumenty mění. Tato akce udržuje databázi aktuální.
- Aktualizace založené na triggerech: Nastavte automatické aktualizace, když někdo přidá nebo změní dokument. Systém přeindexuje pouze ovlivněné části.
částečné aktualizace:
- Selektivní přeindexování: Aktualizujte pouze části databáze, které se změnily, ne celou věc. Tato technika šetří čas a prostředky, zejména u velkých datových sad.
- Rozdílové kódování: Ukládejte jenom změny mezi starými a novými dokumenty, což snižuje množství dat, která se mají zpracovat.
verze:
- Vytváření snímků: Ukládání verzí dokumentu nastavených v různých časech Tato akce umožňuje v případě potřeby vrátit zpět nebo obnovit starší verze.
- Správa verzí dokumentu: Pomocí systému správy verzí můžete sledovat změny a uchovávat historii dokumentů.
aktualizace v reálném čase:
- Zpracování datových proudů: Použití zpracování datových proudů k aktualizaci vektorové databáze v reálném čase při změně dokumentů.
- Živé dotazování: Pomocí živých dotazů získáte up-to- datum odpovědi, někdy míchání živých dat s výsledky uloženými v mezipaměti pro rychlost.
techniky optimalizace :
- Dávkové zpracování: Seskupte změny a použijte je společně, abyste ušetřili prostředky a snížili režii.
-
Hybridní přístupy: Kombinace různých strategií:
- Používejte přírůstkové aktualizace pro malé změny.
- Pro významné aktualizace použijte úplné přeindexování.
- Sledujte a zdokumentujte hlavní změny vašich dat.
Vyberte strategii aktualizace nebo kombinaci, která vyhovuje vašim potřebám. Přemýšlet o:
- Velikost korpusu dokumentu
- Četnost aktualizací
- Potřeby dat v reálném čase
- Dostupné prostředky
Projděte si tyto faktory pro vaši aplikaci. Každá metoda má kompromisy v složitosti, nákladech a tom, jak rychle se aktualizace zobrazují.
Kanál odvozování
Vaše články jsou teď blokované, vektorizované a uložené ve vektorové databázi. Dále se zaměřte na získání nejlepších odpovědí z vašeho systému.
Pokud chcete získat přesné a rychlé výsledky, zamyslete se nad těmito klíčovými otázkami:
- Je otázka uživatele jasná a pravděpodobně dostane správnou odpověď?
- Přeruší otázka nějaká firemní pravidla?
- Můžete otázku přepsat, abyste systému pomohli najít lepší shody?
- Odpovídají výsledky z databáze otázce?
- Měli byste výsledky před odesláním do LLM změnit, abyste měli jistotu, že je odpověď relevantní?
- Řeší odpověď LLM plně otázku uživatele?
- Dodržuje odpověď pravidla vaší organizace?
Celý kanál odvozování funguje v reálném čase. Neexistuje žádný správný způsob, jak nastavit kroky předběžného zpracování a následného zpracování. Používáte kombinaci volání kódu a LLM. Jedním z největších kompromisů je vyvážení přesnosti a dodržování předpisů s náklady a rychlostí.
Pojďme se podívat na strategie pro každou fázi kanálu odvozování.
Kroky předběžného zpracování dotazů
Předběžné zpracování dotazu se spustí hned po odeslání otázky uživatelem:
Tento postup vám pomůže zajistit, aby otázka uživatele odpovídala vašemu systému a je připravená najít nejlepší bloky článků pomocí kosinusového podobnosti nebo hledání "nejbližšího souseda".
Kontrola zásad: Použití logiky k zjištění a odebrání nebo označení nežádoucího obsahu, jako jsou osobní údaje, chybný jazyk nebo pokusy o porušení bezpečnostních pravidel (označovaných jako "jailbreaking").
Přepsání dotazu: V případě potřeby změňte otázku – rozbalte zkratky, odeberte slang nebo ho znovu nasuňte, abyste se mohli soustředit na větší nápady (výzva krok zpět).
Speciální verzí výzvy k vrácení zpět je hypotetické vkládání dokumentů (HyDE). HyDE má odpověď LLM na otázku, vytvoří vložení z této odpovědi a pak prohledá vektorovou databázi s ní.
Poddotazy
Poddotazy rozdělují dlouhou nebo složitou otázku na menší a jednodušší otázky. Systém odpoví na každou malou otázku a pak sloučí odpovědi.
Pokud se například někdo zeptá, "Kdo udělal důležitější příspěvky do moderní fyziky, Albert Einstein nebo Niels Bohr?", můžete ho rozdělit na:
- Poddotaz 1: "Co Albert Albert Einstein přispěl k moderní fyzikě?"
- Poddotaz 2: "Co niels Bohr přispěl k moderní fyzikě?"
Odpovědi můžou zahrnovat:
- Pro Einstein: teorie relativity, fotoelektrický efekt a E=mc^2.
- Pro Bohr: model atomu vodíku, práce na kvantové mechanikě a princip doplňkovosti.
Pak se můžete zeptat na následující otázky:
- Poddotaz 3: "Jak změnily teorie Einsteina moderní fyziku?"
- Poddotaz 4: "Jak Bohrovy teorie změnily moderní fyziku?"
Tyto následné kroky se dívají na účinek každého vědce, například:
- Jak práce Einsteina vedla k novým nápadům v kosmologii a kvantové teorii
- Jak nám bohrova práce pomohla pochopit atomy a kvantovou mechaniku
Systém kombinuje odpovědi a poskytuje úplnou odpověď na původní otázku. Tato metoda usnadňuje odpověď na složité otázky tím, že je rozdělí na jasné a menší části.
Směrovač dotazů
Někdy se váš obsah nachází v několika databázích nebo vyhledávacích systémech. V těchto případech použijte směrovač dotazů. Směrovač dotazů vybere nejlepší databázi nebo index, aby na každou otázku odpověděl.
Směrovač dotazů funguje poté, co uživatel položí otázku, ale než systém vyhledá odpovědi.
Takto funguje směrovač dotazů:
- Analýza dotazů: LLM nebo jiný nástroj se na otázku podívá, abyste zjistili, jaký druh odpovědi je potřeba.
- Výběr indexu: Směrovač vybere jeden nebo více indexů, které odpovídají otázce. Některé indexy jsou lepší pro fakta, jiné pro názory nebo speciální témata.
- Odeslání dotazu: Směrovač odešle otázku do zvoleného indexu nebo indexů.
- Agregace výsledků: Systém shromažďuje a kombinuje odpovědi z indexů.
- Generování odpovědí: Systém vytvoří jasnou odpověď s použitím nalezených informací.
Pro následující účely použijte různé indexy nebo vyhledávací weby:
- Specializace datových typů: Některé indexy se zaměřují na zprávy, jiné na akademické dokumenty nebo na speciální databáze, jako jsou lékařské nebo právní informace.
- Optimalizace typu dotazu: Některé indexy jsou rychlé pro jednoduchá fakta (například data), zatímco jiné zpracovávají složité nebo odborné otázky.
- Algoritmické rozdíly: Různé vyhledávací weby používají různé metody, jako je vektorové vyhledávání, vyhledávání klíčových slov nebo rozšířené sémantické vyhledávání.
Například v systému lékařských rad můžete mít:
- Index výzkumného dokumentu pro technické podrobnosti
- Index případové studie pro příklady z reálného světa
- Obecný index stavu pro základní otázky
Pokud se někdo zeptá na účinky nového léku, směrovač pošle otázku do výzkumného papírového indexu. Pokud se tato otázka týká běžných příznaků, použije pro jednoduchou odpověď obecný index stavu.
Kroky následného zpracování
Po načtení se zpracování provede, když systém najde bloky obsahu v vektorové databázi:
Dále zkontrolujte, jestli jsou tyto bloky dat užitečné pro výzvu LLM před jejich odesláním do LLM.
Mějte na paměti tyto věci:
- Další informace můžou skrýt nejdůležitější podrobnosti.
- Irelevantní informace můžou způsobit horší odpověď.
Dávejte pozor na jehlu v problému sena : LLMs často věnujte větší pozornost začátku a konce výzvy než uprostřed.
Nezapomeňte také, že okno maximálního kontextu LLM a počet tokenů potřebných pro dlouhé výzvy, zejména ve velkém měřítku.
Pokud chcete tyto problémy vyřešit, použijte kanál pro zpracování po načtení s postupem, jako je:
- Filtrování výsledků: Uchovávejte pouze bloky dat, které odpovídají dotazu. Při vytváření výzvy LLM ignorujte zbytek.
- Opětovné hodnocení: Na začátek a konec výzvy umístěte nejrelevavantnější bloky dat.
- Komprese výzvy: Pomocí malého levného modelu můžete shrnout a zkombinovat bloky dat do jediné výzvy před odesláním do LLM.
Kroky zpracování po dokončení
Zpracování po dokončení proběhne po zadání otázky uživatele a všechny bloky obsahu se přejdou do LLM:
Jakmile LLM odpoví, zkontrolujte jeho přesnost. Kanál zpracování po dokončení může zahrnovat:
- Kontrola faktů: V odpovědi vyhledejte příkazy, které tvrdí, že jsou fakty, a pak zkontrolujte, jestli jsou pravdivé. Pokud se kontrola faktů nezdaří, můžete se znovu zeptat LLM nebo zobrazit chybovou zprávu.
- Kontrola zásad: Ujistěte se, že odpověď neobsahuje škodlivý obsah pro uživatele nebo vaši organizaci.
Hodnocení
Vyhodnocení podobného systému je složitější než spouštění běžných testů jednotek nebo integračních testů. Zamyslete se nad těmito otázkami:
- Jsou uživatelé s odpověďmi spokojení?
- Jsou odpovědi přesné?
- Jak shromáždíte zpětnou vazbu uživatelů?
- Existují pravidla týkající se toho, jaká data můžete shromažďovat?
- Vidíte všechny kroky, které systém provedl, když se odpovědi pokazí?
- Uchováváte podrobné protokoly pro analýzu původní příčiny?
- Jak systém aktualizujete bez toho, aby se věci zhoršovaly?
Zachycení zpětné vazby uživatelů a jejich reakce
Spolupracujte s týmem pro ochranu osobních údajů vaší organizace a navrhněte nástroje pro zachytávání zpětné vazby, systémová data a protokolování pro forenzní a základní analýzu příčin relace dotazů.
Dalším krokem je vytvoření kanálu posouzení. Kanál posouzení usnadňuje a rychleji kontroluje zpětnou vazbu a zjišťuje, proč AI poskytla určité odpovědi. Zkontrolujte každou odpověď a podívejte se, jak ho AI vytvořila, jestli se použily správné bloky obsahu a jak se dokumenty rozdělily.
Vyhledejte také další kroky předběžného zpracování nebo následné zpracování, které by mohly zlepšit výsledky. Tato úzká kontrola často najde mezery v obsahu, zejména pokud pro otázku uživatele neexistuje žádná dobrá dokumentace.
Ke zvládnutí těchto úloh ve velkém potřebujete kanál posouzení. Dobrý kanál používá vlastní nástroje k měření kvality odpovědí. Pomůže vám zjistit, proč umělá inteligence poskytla konkrétní odpověď, které dokumenty použila, a jak dobře kanál odvozování fungoval.
Zlatá datová sada
Jedním ze způsobů, jak zkontrolovat, jak dobře funguje chatovací systém RAG, je použití zlaté datové sady. Zlatá datová sada je sada otázek se schválenými odpověďmi, užitečnými metadaty (jako je téma a typ otázky), odkazy na zdrojové dokumenty a různými způsoby, jak se uživatelé mohou zeptat na to samé.
Zlatá datová sada zobrazuje "nejlepší scénář případu". Vývojáři ho používají k tomu, aby viděli, jak dobře systém funguje, a spouštět testy, když přidají nové funkce nebo aktualizace.
Posouzení škod
Modelování škod pomáhá odhalit možná rizika v produktu a plánovat způsoby jejich snížení.
Nástroj pro posouzení škod by měl obsahovat tyto klíčové funkce:
- Identifikace zúčastněných stran: Pomáhá vypsat a seskupovat všechny osoby ovlivněné technologií, včetně přímých uživatelů, osob ovlivněných nepřímo, budoucích generací a dokonce i prostředí.
- Kategorie a popisy škod: Uvádí možné škody, jako je ztráta soukromí, emocionální tíseň nebo ekonomické škody. Provede vás příklady a pomůže vám přemýšlet o očekávaných i neočekávaných problémech.
- Posouzení závažnosti a pravděpodobnosti: Pomáhá posoudit, jak závažná a pravděpodobná je každá újma, abyste se mohli rozhodnout, co se má nejprve opravit. Data můžete použít k podpoře vašich voleb.
- Strategie zmírnění rizik: Navrhuje způsoby, jak snížit rizika, jako je změna návrhu systému, přidání ochranných opatření nebo použití jiných technologií.
- Mechanismy zpětné vazby: Umožňuje shromáždit zpětnou vazbu od zúčastněných stran, abyste mohli pokračovat v vylepšování procesu, jakmile se dozvíte více.
- Dokumentace a vytváření sestav: Usnadňuje vytváření sestav, které ukazují, co jste našli a co jste udělali, abyste snížili rizika.
Tyto funkce vám pomůžou najít a opravit rizika a také vám pomůžou vytvořit etičtější a zodpovědnější AI tím, že se zamyslete nad všemi možnými dopady od začátku.
Další informace najdete v těchto článcích:
Testování a ověření bezpečnostních opatření
Red-seskupování je klíčové – znamená to, že se chová jako útočník, aby v systému našli slabá místa. Tento krok je zvlášť důležitý k zastavení jailbreaku. Tipy pro plánování a správu červeného seskupování zodpovědné umělé inteligence najdete v tématu Plánování červeného seskupování pro velké jazykové modely (LLM) a jejich aplikace.
Vývojáři by měli otestovat ochranu systému RAG v různých scénářích, aby se ujistili, že fungují. Tento krok ztěžuje systém a také pomáhá vyladit odpovědi na dodržování etických norem a pravidel.
Konečné aspekty návrhu aplikace
Tady je několik klíčových věcí, které byste si měli pamatovat z tohoto článku, které vám můžou pomoct s návrhem aplikace:
- Neprediktovatelnost generování umělé inteligence
- Výzva uživatele ke změnám a jejich vlivu na čas a náklady
- Paralelní požadavky LLM pro rychlejší výkon
Pokud chcete vytvořit generující aplikaci AI, podívejte se na začínáme s chatem pomocí vlastní ukázky dat pro Python. Tento kurz je také k dispozici pro .NET, Javaa JavaScript.