Model Retrieval-Augmented Generation (RAG) je standardní přístup k vytváření aplikací, které používají jazykové modely ke zpracování konkrétních nebo proprietárních dat, která model ještě nezná. Architektura je jednoduchá, ale návrh, experimentování s řešeními RAG a vyhodnocení řešení RAG, která se v této architektuře hodí, zahrnuje mnoho složitých aspektů, které mají prospěch z přísného vědeckého přístupu.
Tento článek představuje úvod do série. Každý článek v řadě popisuje konkrétní fázi návrhu řešení RAG.
Další články v této sérii se týkají následujících aspektů:
- Jak určit, které testovací dokumenty a dotazy se mají použít během vyhodnocení
- Jak zvolit strategii vytváření bloků dat
- Jak určit, které bloky dat byste měli rozšířit a jak je rozšířit
- Jak zvolit správný model vkládání
- Postup konfigurace indexu vyhledávání
- Jak určit, která hledání, jako jsou vektory, fulltext, hybridní a ruční více hledání, byste měli provést
- Jak vyhodnotit jednotlivé kroky
Architektura RAG
Tok aplikace RAG
Následující pracovní postup popisuje základní tok aplikace RAG.
- Uživatel vydá dotaz v inteligentním uživatelském rozhraní aplikace.
- Inteligentní aplikace volá rozhraní API orchestrátoru. Orchestrátor můžete implementovat pomocí nástrojů nebo platforem, jako jsou sémantické jádro, tok výzvy služby Azure Machine Learning nebo LangChain.
- Orchestrátor určuje, které hledání se má ve službě Azure AI Search provést, a vydá dotaz.
- Orchestrátor zabalí N výsledky dotazu. Zabalí nejlepší výsledky a dotaz jako kontext v rámci výzvy a odešle výzvu do jazykového modelu. Orchestrátor vrátí odpověď na inteligentní aplikaci, aby si uživatel přečetl.
Tok datového kanálu RAG
Následující pracovní postup popisuje základní tok datového kanálu, který poskytuje základní data pro aplikaci RAG.
- Dokumenty se buď nasdílí, nebo se přetáhnou do datového kanálu.
- Datový kanál zpracovává každý dokument jednotlivě provedením následujících kroků:
- Dokument bloku: Rozdělí dokument do sémanticky relevantních částí, které ideálně mají jednu myšlenku nebo koncept.
- Obohacení bloků dat: Přidá pole metadat, která kanál vytvoří na základě obsahu v blocích dat. Datový kanál kategorizuje metadata do samostatných polí, jako je název, souhrn a klíčová slova.
- Vložení bloků dat: Pomocí modelu vkládání vektorizuje blok dat a všechna další pole metadat, která se používají pro vektorové vyhledávání.
- Trvalé bloky dat: Ukládá bloky dat do indexu vyhledávání.
Aspekty návrhu a vyhodnocení RAG
Při návrhu řešení RAG musíte provést různá rozhodnutí o implementaci. Následující diagram znázorňuje některé otázky, které byste měli položit při rozhodování.
Následující seznam obsahuje stručný popis toho, co byste měli dělat během každé fáze vývoje řešení RAG.
Běhemfáze přípravy
byste měli: - Určete doménu řešení. Jasně definujte obchodní požadavky pro řešení RAG.
- Shromážděte reprezentativní testovací dokumenty. Shromážděte testovací dokumenty pro vaše řešení RAG, které představují kolekci dokumentů.
- Shromážděte testovací dotazy. Shromážděte informace a testujte dotazy a vygenerujte syntetické dotazy a dotazy, které vaše dokumenty nepokrývají.
Běhemfáze
bloků dat byste měli: - Porozumíte ekonomickému dělení dat. Seznamte se s faktory, které je potřeba vzít v úvahu při vyhodnocování celkových nákladů na řešení bloků dat pro kolekci textu.
- Proveďte analýzu dokumentu. Položte následující otázky, které vám pomůžou při rozhodování při analýze typu dokumentu:
- Jaký obsah v dokumentu chcete ignorovat nebo vyloučit?
- Jaký obsah chcete zachytit v blocích dat?
- Jak chcete tento obsah zatáčkovat?
- Seznamte se s přístupy k blokům dat. Seznamte se s různými přístupy k vytváření bloků dat, včetně přístupů založených na větách, pevné velikosti a vlastních přístupů nebo pomocí rozšíření jazykového modelu, analýzy rozložení dokumentů a modelů strojového učení.
- Seznamte se s tím, jak struktura dokumentu ovlivňuje bloky dat. Zvolte přístup pro vytváření bloků dat na základě stupně struktury, kterou dokument obsahuje.
Během fáze rozšiřování bloků datbyste měli:
- Vyčistěte bloky dat. Implementujte přístupy čištění, které eliminují rozdíly, které nemají vliv na význam textu. Tato metoda podporuje shody blízkosti.
- Rozšiřte bloky dat. Zvažte rozšíření dat bloku dat o běžná pole metadat a pochopení jejich potenciálních použití při hledání. Seznamte se s běžně používanými nástroji nebo technikami pro generování obsahu metadat.
Během fáze vkládáníbyste měli:
- Porozumíte důležitosti modelu vkládání. Model vkládání může významně ovlivnit levnost výsledků vektorového hledání.
- Zvolte správný model vkládání pro váš případ použití.
- Vyhodnocení vložených modelů Vyhodnoťte modely vkládání vizualizací vkládání a výpočtem vzdáleností vkládání.
Během fáze načítání informacíbyste měli:
- Vytvořte vyhledávací index. Použijte odpovídající konfigurace vektorového vyhledávání u vektorových polí.
- Seznamte se s možnostmi hledání. Zvažte různé typy hledání, včetně vektoru, fulltextu, hybridního a ručního více hledání. Přečtěte si, jak rozdělit dotaz na poddotazy a filtrovat dotazy.
- Vyhodnoťte hledání. K vyhodnocení řešení vyhledávání použijte metody vyhodnocení načítání.
Během fáze komplexního vyhodnocení jazykového modelu byste měli:
- Vysvětlení metrik vyhodnocení jazykového modelu Existuje několik metrik, včetně uzemnění, úplnosti, využití a levnosti, které můžete použít k vyhodnocení odpovědi jazykového modelu.
- Vysvětlení podobnosti a metrik vyhodnocení K vyhodnocení řešení RAG můžete použít metriky podobnosti a vyhodnocení.
- Seznamte se s důležitostí dokumentace, vytváření sestav a agregace. Zdokumentujte hyperparametry a výsledky vyhodnocení. Agregujte výsledky z více dotazů a vizualizovat výsledky.
- Použijte akcelerátor experimentu RAG. Úložiště RAG Experiment Accelerator na GitHubu můžete použít, abyste svému týmu pomohli najít nejlepší strategie implementace RAG spuštěním několika experimentů, zachováním a vyhodnocením výsledků.
Strukturovaný přístup
Vzhledem k počtu kroků a proměnných je důležité, abyste postup strukturovaného vyhodnocení vašeho řešení RAG postup řídili. Vyhodnoťte výsledky jednotlivých kroků a proveďte změny na základě vašich požadavků. Každý krok byste měli vyhodnotit nezávisle na optimalizaci, ale nezapomeňte, že konečným výsledkem je to, co vaši zákazníci mají. Než určíte vlastní kritéria přijetí jednotlivých kroků, ujistěte se, že rozumíte všem krokům v tomto procesu.
Přispěvatelé
Tento článek spravuje Microsoft. Původně byla napsána následujícími přispěvateli.
Hlavní autoři:
- Raouf Aliouat | Softwarový inženýr II
- Rob Bagby | Hlavní zájemce o obsah Centra architektury objektu zabezpečení
- Prabal Deb | Hlavní softwarový inženýr
- Chad Kittel | Hlavní softwarový inženýr
- Ritesh Modi | Hlavní inženýr
- Ryan Pfalz | Vedoucí technický programový manažer
- Randy Thurman | Hlavní architekt cloudového řešení AI
Pokud chcete zobrazit neveřejné profily LinkedIn, přihlaste se na LinkedIn.