Sdílet prostřednictvím


Zlepšení kvality datového kanálu RAG

Tento článek popisuje, jak experimentovat s volbami datových kanálů z praktického hlediska při implementaci změn datového kanálu.

Klíčové komponenty datového kanálu

Diagram datového kanálu a kvalitních uzlů

Základem jakékoli aplikace RAG s nestrukturovanými daty je datový kanál. Tento kanál zodpovídá za přípravu nestrukturovaných dat ve formátu, který může aplikace RAG efektivně využívat. I když se tento datový kanál může stát libovolně složitým, při prvním sestavení aplikace RAG je potřeba zvážit následující klíčové komponenty:

  1. Složení korpusu: Výběr správných zdrojů dat a obsahu na základě konkrétního případu použití.
  2. Analýza: Extrahování relevantních informací z nezpracovaných dat pomocí vhodných technik analýzy
  3. Bloky dat: Rozdělení analyzovaných dat do menších, spravovatelných bloků dat pro efektivní načítání
  4. Vkládání: Převod textových dat v bloku dat na číselnou vektorovou reprezentaci, která zachycuje sémantický význam.

Složení korpusu

Bez správného datového korpusu nemůže vaše aplikace RAG načíst informace potřebné k zodpovězení uživatelského dotazu. Správná data jsou zcela závislá na konkrétních požadavcích a cílech vaší aplikace, takže je nezbytné věnovat čas pochopení drobných odlišností dostupných dat (pokyny k tomu najdete v části věnované shromažďování požadavků).

Při vytváření robota zákaznické podpory můžete například zvážit následující:

  • Dokumenty znalostní báze
  • Nejčastější dotazy
  • Příručky a specifikace produktů
  • Průvodce řešením potíží

Zapojte odborníky na domény a zúčastněné strany od počátku jakéhokoli projektu, abyste mohli identifikovat a kurátorovat relevantní obsah, který by mohl zlepšit kvalitu a pokrytí vašeho datového korpusu. Můžou poskytnout přehled o typech dotazů, které budou uživatelé pravděpodobně odesílat, a pomoci určit prioritu nejdůležitějších informací, které se mají zahrnout.

Analýza

Po identifikaci zdrojů dat pro vaši aplikaci RAG je dalším krokem extrahování požadovaných informací z nezpracovaných dat. Tento proces označovaný jako analýza zahrnuje transformaci nestrukturovaných dat do formátu, který může aplikace RAG efektivně využívat.

Konkrétní techniky analýzy a nástroje, které používáte, závisí na typu dat, se kterými pracujete. Příklad:

  • Textové dokumenty (PDF, wordová dokumentace): Nestrukturované knihovny, jako jsou nestrukturované a PyPDF2 , můžou zpracovávat různé formáty souborů a poskytují možnosti pro přizpůsobení procesu analýzy.
  • Dokumenty HTML: Knihovny analýzy HTML, jako je BeautifulSoup , lze použít k extrakci relevantního obsahu z webových stránek. Pomocí nich můžete procházet strukturu HTML, vybrat konkrétní prvky a extrahovat požadovaný text nebo atributy.
  • Obrázky a naskenované dokumenty: Techniky optického rozpoznávání znaků (OCR) se obvykle vyžadují k extrakci textu z obrázků. Mezi oblíbené knihovny OCR patří Tesseract, Amazon Textract, Azure AI Vision OCR a Google Cloud Vision API.

Osvědčené postupy pro analýzu dat

Při analýze dat zvažte následující osvědčené postupy:

  1. Čištění dat: Předzpracuje extrahovaný text, aby se odebraly irelevantní nebo hlučné informace, jako jsou záhlaví, zápatí nebo speciální znaky. Mějte na paměti snížení množství nepotřebných nebo poškozených informací, které váš řetězec RAG potřebuje zpracovat.
  2. Zpracování chyb a výjimek: Implementujte mechanismy zpracování chyb a protokolování pro identifikaci a řešení jakýchkoli problémů, ke kterým došlo během procesu analýzy. Pomůže vám to rychle identifikovat a opravit problémy. To často odkazuje na nadřazené problémy s kvalitou zdrojových dat.
  3. Přizpůsobení logiky analýzy: V závislosti na struktuře a formátu dat možná budete muset přizpůsobit logiku analýzy, aby extrahovali nejrelevavantnější informace. I když to může vyžadovat další úsilí předem, investujte čas na to v případě potřeby – často brání mnoha problémům s kvalitou podřízenosti.
  4. Vyhodnocení kvality analýzy: Pravidelně vyhodnocujte kvalitu analyzovaných dat ruční kontrolou vzorku výstupu. To vám může pomoct identifikovat všechny problémy nebo oblasti pro zlepšení procesu analýzy.

Chunking

Diagram dat dokumentu blokovaných pro vektorový index

Po parsování nezpracovaných dat do strukturovanějšího formátu je dalším krokem rozdělení dat do menších jednotek, které se nazývají bloky dat. Segmentace velkých dokumentů do menších sémanticky soustředěných bloků dat zajišťuje, aby načtená data odpovídala kontextu LLM a současně minimalizovala zahrnutí rušivých nebo irelevantních informací. Volby provedené při vytváření bloků dat přímo ovlivní, jaká načtená data llM poskytuje, takže se jedná o jednu z prvních vrstev optimalizace v aplikaci RAG.

Při vytváření bloků dat zvažte následující faktory:

  1. Strategie vytváření bloků dat: Metoda, kterou použijete k rozdělení původního textu na bloky dat. To může zahrnovat základní techniky, jako je rozdělení podle vět, odstavců nebo počtu konkrétních znaků/tokenů, až po pokročilejší strategie rozdělení specifické pro dokument.
  2. Velikost bloku: Menší bloky dat se mohou zaměřit na konkrétní podrobnosti, ale ztratit některé okolní informace. Větší bloky dat můžou zachytit více kontextu, ale můžou obsahovat i irelevantní informace.
  3. Překrývat se mezi bloky dat: Pokud chcete zajistit, aby při rozdělení dat do bloků nedošlo ke ztrátě důležitých informací, zvažte zahrnutí některých překrývajících se mezi sousedními bloky dat. Překrývající se objekty můžou zajistit kontinuitu a zachování kontextu napříč bloky dat.
  4. Sémantická soudržnost: Pokud je to možné, snažte se vytvořit bloky, které jsou sémanticky koherentní, což znamená, že obsahují související informace a mohou stát na vlastní straně jako smysluplná jednotka textu. Toho lze dosáhnout zvážením struktury původních dat, jako jsou odstavce, oddíly nebo hranice tématu.
  5. Metadata: Zahrnutí relevantních metadat do jednotlivých bloků dat, jako je název zdrojového dokumentu, nadpis oddílu nebo názvy produktů, může zlepšit proces načítání. Tyto další informace v bloku dat vám můžou pomoct s hledáním dotazů na bloky dat.

Strategie vytváření bloků dat

Nalezení správné metody bloků dat je iterativní i kontextově závislé. Neexistuje žádný přístup, který by odpovídal jedné velikosti; optimální velikost a metoda bloků dat závisí na konkrétním případu použití a povaze zpracovávaných dat. Obecně řečeno, strategie vytváření bloků dat lze zobrazit jako následující:

  • Bloky s pevnou velikostí: Rozdělte text na bloky předem určené velikosti, například pevný počet znaků nebo tokenů (například LangChain CharacterTextSplitter). Rozdělení libovolným počtem znaků/tokenů je rychlé a snadno se nastavuje, ale obvykle nebude mít za následek konzistentní sémanticky koherentní bloky dat.
  • Bloky dat založené na odstavcích: K definování bloků dat použijte přirozené hranice odstavce v textu. Tato metoda může pomoci zachovat sémantickou soudržnost bloků dat, protože odstavce často obsahují související informace (například LangChain RecursiveCharacterTextSplitter).
  • Bloky dat specifické pro formát: Formáty, jako je markdown nebo HTML, mají v sobě vlastní strukturu, která se dá použít k definování hranic bloků dat (například hlavičky markdownu). K tomuto účelu lze použít nástroje, jako je MarkdownHeaderTextSplitter nebo oddíly hlavičekHTML jazyka LangChain./
  • Sémantické vytváření bloků dat: Techniky, jako je modelování témat, lze použít k identifikaci sémanticky koherentních oddílů v textu. Tyto přístupy analyzují obsah nebo strukturu každého dokumentu a určují nejvhodnější hranice bloků dat na základě posunů v tématu. I když je to více než více základních přístupů, sémantické vytváření bloků dat může pomoct vytvořit bloky, které jsou v souladu s přirozenými sémantických dělení v textu (příklad najdete v tématu LangChain SemanticChunker ).

Příklad: Oprava bloků dat velikosti

Obrázek znázorňující příklad vytvoření bloku dokumentu s pevnou velikostí

Příklad blokování s pevnou velikostí pomocí RecursiveCharacterTextSplitter jazyka LangChain s chunk_size=100 a chunk_overlap=20. ChunkViz poskytuje interaktivní způsob, jak vizualizovat, jak různá velikost bloku a bloky dat překrývají hodnoty pomocí rozdělovačů znaků Langchain vliv na výsledné bloky dat.

Vložený model

Diagram způsobu vektorizace datových bloků na základě sémantického významu

Po vytvoření bloku dat je dalším krokem převod textových bloků na vektorové znázornění pomocí vloženého modelu. Vložený model se používá k převodu každého textového bloku na vektorovou reprezentaci, která zachycuje jeho sémantický význam. Díky reprezentaci bloků dat jako hustých vektorů umožňují vkládání rychle a přesně načítat nejrelevantní bloky dat na základě jejich sémantické podobnosti s vyhledávacím dotazem. V době dotazu se dotaz na načtení transformuje pomocí stejného modelu vkládání, který se použil k vložení bloků dat do datového kanálu.

Při výběru modelu vkládání zvažte následující faktory:

  • Volba modelu: Každý vložený model má své nuance a dostupné srovnávací testy nemusí zachytávat konkrétní charakteristiky vašich dat. Experimentujte s různými modely vkládání mimo police, a to i s těmi, které můžou být méně seřazené na standardních tabulích výsledků, jako je MTEB. Mezi příklady, které je potřeba vzít v úvahu, patří:
  • Maximální počettokench Pokud předáte bloky, které tento limit překročí, zkrátí se a potenciálně ztratí důležité informace. Například bge-large-en-v1.5 má maximální limit tokenu 512.
  • Velikost modelu: Větší modely pro vkládání obecně nabízejí lepší výkon, ale vyžadují více výpočetních prostředků. Zajištění rovnováhy mezi výkonem a efektivitou na základě vašeho konkrétního případu použití a dostupných prostředků.
  • Jemné ladění: Pokud se vaše aplikace RAG zabývá jazykem specifickým pro doménu (např. interní zkratky nebo terminologie společnosti), zvažte vyladění modelu vkládání na data specifická pro doménu. To může modelu pomoct lépe zachytit nuance a terminologii vaší konkrétní domény a často vést ke zlepšení výkonu načítání.

< Předchozí: Zlepšení kvality aplikace RAG

Další: Zlepšení kvality řetězce RAG >