RAG (načítání rozšířené generace) v Azure Databricks
Důležité
Tato funkce je ve verzi Public Preview.
Agent Framework se skládá ze sady nástrojů v Databricks navržené tak, aby vývojářům pomohly sestavovat, nasazovat a vyhodnocovat agenty umělé inteligence v produkční kvalitě, jako jsou aplikace RAG (Retrieval Augmented Generation).
Tento článek popisuje, co je RAG a jaké jsou výhody vývoje aplikací RAG v Azure Databricks.
Agent Framework umožňuje vývojářům rychle iterovat všechny aspekty vývoje RAG pomocí kompletního pracovního postupu LLMOps.
Požadavky
- Pro váš pracovní prostor musí být povolené funkce usnadnění AI využívající Azure AI.
- Všechny komponenty aplikace agentů musí být v jednom pracovním prostoru. Například v případě aplikace RAG musí být obslužný model a instance vektorového vyhledávání ve stejném pracovním prostoru.
Co je RAG?
RAG je metoda návrhu generující AI, která vylepšuje rozsáhlé jazykové modely (LLM) s externími znalostmi. Tato technika zlepšuje LLM následujícími způsoby:
- Proprietární znalosti: RAG může obsahovat proprietární informace, které se zpočátku nepoužívají k trénování LLM, jako jsou memo, e-maily a dokumenty pro zodpovězení otázek specifických pro doménu.
- Aktuální informace: Aplikace RAG může poskytnout LLM s informacemi z aktualizovaných zdrojů dat.
- Citace zdrojů: RAG umožňuje LLM citovat konkrétní zdroje, což uživatelům umožňuje ověřit faktickou přesnost odpovědí.
- Seznamy řízení přístupu a zabezpečení dat (ACL): Krok načítání lze navrhnout tak, aby selektivně načítal osobní nebo proprietární informace na základě přihlašovacích údajů uživatele.
Složené systémy AI
Aplikace RAG je příkladem složeného systému AI: rozšiřuje možnosti jazyka LLM tím, že ho zkombinuje s dalšími nástroji a postupy.
V nejjednodušší podobě aplikace RAG provede následující:
- Načtení: Požadavek uživatele se používá k dotazování mimo úložiště dat, jako je úložiště vektorů, vyhledávání textových klíčových slov nebo databáze SQL. Cílem je získat podpůrná data pro odpověď LLM.
- Rozšíření: Načtená data se kombinují s požadavkem uživatele, často pomocí šablony s dalšími formátováními a pokyny k vytvoření výzvy.
- Generování: Výzva se předá LLM, která pak vygeneruje odpověď na dotaz.
Nestrukturovaná a strukturovaná data RAG
Architektura RAG může pracovat s nestrukturovanými nebo strukturovanými podpůrnými daty. Data, která používáte s RAG, závisí na vašem případu použití.
Nestrukturovaná data: Data bez konkrétní struktury nebo organizace Dokumenty, které obsahují text a obrázky nebo multimediální obsah, například zvuk nebo videa.
- Soubory PDF
- Dokumenty Google nebo Office
- Wikiweby
- Obrázky
- Videa
Strukturovaná data: Tabulková data uspořádaná do řádků a sloupců s určitým schématem, jako jsou tabulky v databázi.
- Záznamy zákazníků v systému BI nebo datového skladu
- Transakční data z databáze SQL
- Data z rozhraní API aplikací (např. SAP, Salesforce atd.)
Následující části popisují aplikaci RAG pro nestrukturovaná data.
Datový kanál RAG
Datový kanál RAG zpracovává předběžné procesy a indexuje dokumenty pro rychlé a přesné načítání.
Následující diagram znázorňuje ukázkový datový kanál pro nestrukturovanou datovou sadu pomocí sémantického vyhledávacího algoritmu. Úlohy Databricks orchestrují jednotlivé kroky.
- Příjem dat – Ingestování dat z vašeho vlastního zdroje Tato data můžete uložit do tabulky Delta nebo svazku katalogu Unity.
- Zpracování dokumentů: Tyto úlohy můžete provádět pomocí úloh Databricks, poznámkových bloků Databricks a dynamických tabulek Delta.
- Parsování nezpracovaných dokumentů: Transformujte nezpracovaná data do použitelného formátu. Například extrahování textu, tabulek a obrázků z kolekce souborů PDF nebo použití technik optického rozpoznávání znaků k extrakci textu z obrázků.
- Extrahování metadat: Extrahujte metadata dokumentu, jako jsou názvy dokumentů, čísla stránek a adresy URL, aby byl dotaz na krok načítání přesnější.
- Dokumenty bloků dat: Rozdělte data do bloků dat, které se vejdou do kontextového okna LLM. Načtení těchto zaměřených bloků dat, nikoli celých dokumentů, dává LLM cílenější obsah pro generování odpovědí.
- Vkládání bloků dat – vložený model využívá bloky dat k vytvoření číselných reprezentací informací, které se nazývají vektorové vkládání. Vektory představují sémantický význam textu, nejen klíčová slova na úrovni povrchu. V tomto scénáři vypočítáte vložené objekty a použijete obsluhu modelu pro vložení.
- Úložiště pro vložení – Uložte vektorové vkládání a text bloku do tabulky Delta synchronizované s vektorovým vyhledáváním.
- Vektorová databáze – V rámci vektorového vyhledávání se vkládání a metadat indexují a ukládají do vektorové databáze pro snadné dotazování agentem RAG. Když uživatel vytvoří dotaz, jeho požadavek se vloží do vektoru. Databáze pak pomocí vektorového indexu vyhledá a vrátí nejvíce podobné bloky dat.
Každý krok zahrnuje technická rozhodnutí, která ovlivňují kvalitu aplikace RAG. Například výběr správné velikosti bloku dat v kroku (3) zajistí, že LLM obdrží konkrétní kontextové informace, zatímco výběr vhodného modelu vložení v kroku (4) určuje přesnost bloků dat vrácených během načítání.
Hledání vektorů Databricks
Podobnost výpočtů je často výpočetně náročná, ale vektorové indexy, jako je Databricks Vector Search, optimalizují tuto funkci efektivním uspořádáním vkládání. Vektorové vyhledávání rychle řadí nejrelevavantnější výsledky, aniž by se jednotlivé vkládání porovnávaly s dotazem uživatele jednotlivě.
Vektorové vyhledávání automaticky synchronizuje nové vložené položky přidané do tabulky Delta a aktualizuje index Vector Search.
Co je agent RAG?
Agent RAG (Retrieval Augmented Generation) je klíčovou součástí aplikace RAG, která vylepšuje možnosti velkých jazykových modelů (LLM) integrací načítání externích dat. Agent RAG zpracovává dotazy uživatelů, načítá relevantní data z vektorové databáze a předává tato data do LLM, aby vygeneroval odpověď.
Nástroje, jako je LangChain nebo Pyfunc, propojují tyto kroky propojením jejich vstupů a výstupů.
Následující diagram znázorňuje agenta RAG pro chatovacího robota a funkce Databricks používané k sestavení jednotlivých agentů.
- Předběžné zpracování dotazu – Uživatel odešle dotaz, který se pak předzpracuje, aby byl vhodný pro dotazování vektorové databáze. To může zahrnovat umístění požadavku do šablony nebo extrahování klíčových slov.
- Vektorizace dotazů – Pomocí služby Model Serving můžete vložit požadavek pomocí stejného modelu vložení, který se používá k vložení bloků dat do datového kanálu. Tato vkládání umožňují porovnání sémantické podobnosti mezi požadavkem a předzpracovanými bloky dat.
- Fáze načítání – retriever, aplikace zodpovědná za načítání relevantních informací, přebírá vektorizovaný dotaz a provádí vyhledávání vektorové podobnosti pomocí vektorového vyhledávání. Nejdůležitější datové bloky jsou seřazené a načtené na základě jejich podobnosti s dotazem.
- Rozšíření výzvy – Retriever kombinuje načtené datové bloky s původním dotazem, aby poskytoval další kontext LLM. Výzva je pečlivě strukturovaná, aby se zajistilo, že LLM rozumí kontextu dotazu. LLM často obsahuje šablonu pro formátování odpovědi. Tento proces úpravy výzvy se označuje jako příprava výzvy.
- Fáze generování LLM – LLM vygeneruje odpověď pomocí rozšířeného dotazu obohaceného výsledky načítání. LLM může být vlastní model nebo základní model.
- Následné zpracování – Odpověď LLM může být zpracována za účelem použití další obchodní logiky, přidání citací nebo jiného upřesnění generovaného textu na základě předdefinovaných pravidel nebo omezení.
V rámci tohoto procesu se můžou použít různé mantinely, aby se zajistilo dodržování podnikových zásad. To může zahrnovat filtrování pro příslušné požadavky, kontrolu uživatelských oprávnění před přístupem ke zdrojům dat a použití technik kon režim stanu ration u vygenerovaných odpovědí.
Vývoj agenta RAG na úrovni produkčního prostředí
Pomocí následujících funkcí můžete rychle iterovat vývoj agentů:
Vytvářejte a protokolovat agenty pomocí libovolné knihovny a MLflow. Parametrizujte agenty, abyste mohli rychle experimentovat a iterovat při vývoji agentů.
Nasaďte agenty do produkčního prostředí s nativní podporou streamování tokenů a protokolování požadavků a odpovědí a integrovanou revizní aplikaci pro získání zpětné vazby uživatelů pro vašeho agenta.
Trasování agentů umožňuje protokolovat, analyzovat a porovnávat trasování napříč kódem agenta, abyste mohli ladit a pochopit, jak agent reaguje na požadavky.
Vyhodnocení a monitorování
Vyhodnocení a monitorování vám pomůže určit, jestli vaše aplikace RAG splňuje vaše požadavky na kvalitu, náklady a latenci. Vyhodnocení probíhá během vývoje, zatímco monitorování probíhá po nasazení aplikace do produkčního prostředí.
RAG nad nestrukturovanými daty má mnoho komponent, které mají vliv na kvalitu. Změny formátování dat můžou například ovlivnit načtené bloky dat a schopnost LLM generovat relevantní odpovědi. Proto je důležité kromě celkové aplikace vyhodnotit i jednotlivé komponenty.
Další informace najdete v tématu Co je Hodnocení agenta AI pro Mozaiku?.
Regionální dostupnost
Informace o regionální dostupnosti rozhraní Agent Framework najdete v tématu Funkce s omezenou regionální dostupností.