Sdílet prostřednictvím


Fáze rozšiřování bloků dat RAG

Po rozdělení dokumentů do kolekce bloků dat je dalším krokem obohacení každého bloku tím, že ho vyčistíte a rozšíříte o metadata. Čištění bloků dat umožňuje dosáhnout lepších shod pro sémantické dotazy ve vektorovém vyhledávání. Přidání metadat umožňuje podporovat vyhledávání bloků dat, které překračují sémantické vyhledávání. Čištění i rozšiřování zahrnuje rozšíření schématu pro blok dat.

Tento článek popisuje různé způsoby rozšíření bloků dat, včetně některých běžných operací čištění, které můžete provádět na blocích za účelem zlepšení porovnání vektorů. Popisuje také některá běžná pole metadat, která můžete přidat do bloků dat pro rozšíření indexu vyhledávání.

Tento článek je součástí série. Tady je úvodní.

Následující ukázka kódu ukazuje části, které jsou obohaceny daty.

diagram, který zobrazuje záznamy JSON Rozšiřuje se jedno pole.

Čištění dat

Vytváření bloků dat pomáhá vašemu pracovnímu zatížení najít ty nejrelevantnější segmenty, obvykle prostřednictvím vektorizace těchto segmentů a jejich uložení do vektorové databáze. Optimalizované vektorové vyhledávání vrátí pouze řádky v databázi, které mají nejbližší sémantické shody dotazu. Cílem čištění dat je podporovat shody blízkosti odstraněním potenciálních rozdílů, které nejsou zásadní pro význam textu. Následuje několik běžných čisticích postupů.

Poznámka

Jako výsledek dotazu byste měli vrátit původní nečistý blok dat, takže byste měli přidat další pole pro uložení vyčištěných a vektorizovaných dat.

  • Implementujte strategie převodu na malá písmena. Použití malých písmen umožňuje, aby slova, která jsou na začátku věty velkými písmeny, se shodovala se stejnými slovy uvnitř věty. Vektory se obvykle rozlišují podle malých a velkých písmen, takže "Cheetah" a "cheetah" by vedlo ke vzniku různých vektorů pro stejné slovo. Například pro vnořený dotaz "co je rychlejší, gepard nebo puma?" je zakódované heslo "gepardové jsou rychlejší než pumy" bližší shodou než "Gepardi jsou rychlejší než pumy." Některé strategie pro použití malých písmen mění všechna slova, včetně správných podstatných jmen, zatímco jiné strategie mění pouze první slova ve větách na malá písmena.

  • Odeberte slova stop. Stop slova jsou slova jako "a", "an" a "the". Odebráním stop slov můžete snížit dimenzi výsledného vektoru. Pokud odstraníte stop slova v předchozím příkladu, "gepard je rychlejší než puma" a "gepard je rychlejší než gepard" jsou vektoricky rovny "gepard rychlejší puma." Je ale důležité pochopit, že některá stop slova mají sémantický význam. Například slovo "not" může být považováno za stopové slovo, ale má významný sémantický význam. Je potřeba otestovat účinek odebrání stop slov.

  • Opravte pravopisné chyby. Chybně napsané slovo se neshoduje s správně napsaným slovem v modelu vkládání. Například "cheatah" není to samé jako "cheetah" ve vektorovém prostoru. Při řešení tohoto problému byste měli opravit pravopisné chyby.

  • Odeberte znaky Unicode. Odebrání znaků Unicode může snížit šum v blocích dat a snížit počet dimenzí. Podobně jako stop slova můžou některé znaky Unicode obsahovat relevantní informace. Je důležité provést testování, abyste pochopili dopad odebrání znaků Unicode.

  • Normalizovat text. Normalizace textu podle standardů, jako jsou rozšíření zkratek, převod čísel na slova a rozšíření kontrakcí, například rozšíření "I'm" na "I am", může pomoct zvýšit výkon vektorových hledání.

Rozšiřování částí

Sémantické vyhledávání na vektorizovaných blocích funguje dobře pro některé typy dotazů, ale ne pro jiné. V závislosti na typech dotazů, které potřebujete podporovat, budete možná muset rozšířit bloky dat o další informace. Všechna další pole metadat jsou uložená ve stejném řádku jako vložené položky a dají se použít ve vyhledávacím řešení buď jako filtry, nebo jako součást hledání.

Následující obrázek ukazuje JSON plně rozšířeného obsahu a popisuje, jak můžou být metadata používána vyhledávací platformou.

diagram, který ukazuje JSON plně rozšířeného obsahu a způsob použití metadat vyhledávací platformou.

Sloupce metadat, které potřebujete přidat, závisí na vaší problémové doméně, včetně typu dat, která máte, a typů dotazů, které chcete podporovat. Potřebujete analyzovat uživatelské prostředí, dostupná data a kvalitu výsledků, které se snažíte dosáhnout. Odtud můžete určit, která metadata vám můžou pomoct vyřešit požadavky vaší úlohy.

Následují některá běžná pole metadat spolu s původním textem bloků dat a pokyny k jejich potenciálním použitím a nástroji nebo technikami, které se běžně používají k vygenerování obsahu metadat.

  • ID. ID jednoznačně identifikuje blok dat. Jedinečné ID je užitečné při zpracování k určení, zda blok dat již v úložišti existuje. ID může být hashovací hodnota některého klíčového pole. Tools: Hashovací knihovna.

  • Název. Název je užitečná návratová hodnota pro blok dat. Poskytuje rychlý souhrn obsahu v bloku dat. Souhrn může být také užitečný pro dotazování s indexovaným vyhledáváním, protože může obsahovat klíčová slova pro porovnávání. Tools: Jazykový model.

  • Shrnutí. Souhrn se podobá názvu v tom, že se jedná o běžnou návratovou hodnotu a dá se použít v indexovaných vyhledáváních. Souhrny jsou obecně delší než názvy. Tools: Jazykový model.

  • Přeformulování části textu. Přeformulování bloku může být užitečné jako pole pro vyhledávání vektoru, protože zachycuje variace v jazyce, jako jsou synonyma a parafrázování. Tools: Jazykový model.

  • Klíčová slova. Hledání klíčových slov je užitečné pro data, která nejsoukontextová, hledá přesnou shodu a kdy je důležitý konkrétní termín nebo hodnota. Například výrobce automobilů může mít recenze nebo údaje o výkonu jednotlivých modelů pro několik let. Recenze produktu X za rok 2009 je sémanticky podobná recenzi produktu X za rok 2010 a recenzi produktu Y za rok 2009. V tomto případě je efektivnější zaměřit se na klíčová slova pro produkt a rok. Tools: Jazykový model, RAKE, KeyBERT, Multi-Rake.

  • Entity. Entity jsou určité informace, jako jsou lidé, organizace a umístění. Podobně jako klíčová slova jsou entity vhodné pro přesné vyhledávání nebo pokud jsou důležité konkrétní entity. Tools: spaCy, Stanford Named Entity Recognizer (Stanford NER), scikit-learn, Natural Language Toolkit (NLTK).

  • Vyčištěný text části. Text vyčištěného bloku dat. Tools: Jazykový model.

  • Otázky, na které může blok dat odpovědět. Někdy se vložený dotaz neshoduje s vloženým blokem dat. Dotaz může být například malý vzhledem k velikosti bloku dat. Může být lepší formulovat dotazy, na které může blok dat odpovídat a provádět vektorové vyhledávání mezi skutečným dotazem uživatele a předem formulovanými dotazy. Tools: Jazykový model.

  • Zdroj. Zdroj bloku dat může být cenný jako návrat pro dotazy. Vrácení zdroje umožňuje dotazovacímu nástroji citovat původní zdroj.

  • Jazyk. Jazyk bloku dat může být užitečný jako filtr v dotazech.

Náklady na rozšiřování

Použití některých jazykových modelů pro rozšiřování bloků dat může být nákladné. Potřebujete vypočítat náklady na každé obohacení, které zvažujete, a vynásobit je odhadovaným počtem částí v průběhu času. Tyto informace byste měli použít společně s testováním obohacených polí k určení nejlepšího obchodního rozhodnutí.

Další krok