zisky:
- Numericky vyhodnoťte velikost chunků, překrývání a sémantické chunking kompromisy
- Výběr vhodné strategie rozdělení pro různé typy dokumentů (PDF, tabulka, kód, protokol chatu)
- Zvyšte kvalitu vyhledávání a filtrování přidáním metadat do každého bloku
Toto je nejvíce přehlížený, ale nejrozhodnější krok v RAG: jak rozebrat dokument. Tomu se říká chunking. Dokonce i když dáte stejný dokument stejnému modelu, kvůli špatnému rozřezání vrátí zpět nesprávný kus a model nikdy nevytvoří skvělou odpověď. V této jednotce pokryjeme strategie fragmentace, jak je upravit podle typu dokumentu a jak ke každému fragmentu přidat smysluplná metadata.
Proč skartujeme?
Důvody jsou tři. Za prvé, modely vkládání převedou text do určité délky na smysluplný vektor; Pokud je celá 40stránková kapitola nacpaná do jediného vektoru, význam se stává „rozmazaným“. Za druhé, chceme dát modelu pouze tu část, která je potřeba jako kontext; předání celého dokumentu je drahé a rušivé. Za třetí, aby bylo vyhledávání přesné, musí být vyhledávací jednotka malá a zaměřená.
Takže kus je nejmenší jednotka vyhledávání. Neměl by být příliš velký ani příliš malý – tak akorát.
Velikost kusu a vyvážení překrytí
Existují dvě hlavní nastavení: velikost bloku (kolik tokenů/slov bude v bloku) a překrytí (část sdílená sousedními bloky).
Velmi malé části (např. 100 tokenů): zaměřené, ale odpojené od kontextu. Říká „na 14 dní“, ale to, co je 14 dní, zbývá v předchozí větě. Velmi velké bloky (např. 2000 tokenů): zachovává kontext, ale mnoho vláken je zamícháno; vkládání se zamotává a nepodstatná témata se spojují.
Překrývání řeší problém s hranicemi. Padne-li věta přesně na hranici dvou částí, je rozdělena na dvě bez překrývání a ztrácí se její význam. Překrytí 50-100 tokenů zajišťuje, že informace spadající do limitu zůstanou alespoň v jedné části nedotčené.
Velikost kousku
Výhoda
Nevýhoda
vhodný obsah
Malé (100–250 žetonů)
Vysoká citlivost, zaostřeno
Kontext se může zlomit
FAQ, krátké články, definice
Střední (300–600 tokenů)
Zůstatek; většina scénářů
—
Postupy, texty zásad
Velké (800–1500 tokenů)
Integrita kontextu
rozmazané vkládání
Vyprávění, dlouhé vysvětlování
Tip: Pokud nevíte, kde začít, začněte s 400–500 bloky tokenů a 50–80 překrytím tokenů; poté změřte a upravte pomocí vlastních dat. "Správná" velikost není univerzální, záleží na kontextu.
Strategie chunkingu
Pevná velikost: Ořízne text po každých N tokenech. Je to jednoduché a rychlé, ale může přerušit střed věty.
Na základě oddělovače (rekurzivní/oddělovač): Dělí podle hranic odstavce a poté vět; Lépe zachovává integritu významu. Většina výrobních systémů začíná tímto.
Sémantické členění: Dívá se na vložení vět a rozděluje je tam, kde dochází ke změně předmětu. Je to nejkvalitnější, ale nejdražší metoda; S velkými objemy se zvyšují transakční náklady.
S ohledem na strukturu: Používá strukturu dokumentu, jako jsou nadpisy, sekce, tabulky. Například rozdělení dokumentu Markdown podle nadpisů zajistí, že každá část bude mít svůj vlastní nadpis.
Úprava podle typu dokumentu
Ne každý dokument je stejný. Strategie se liší podle typu:
- PDF/text zásad: Na základě záložek, střední velikost. Vymazat horní/dolní opakování stránky (záhlaví/zápatí).
- Tabulky: Nevytrhávejte řádek z kontextu; ponechat každý řádek s informacemi v záhlaví ("Položka: X, Cena: Y, Sklad: Z"). Převod surové tabulky na prostý text je často nezbytný.
- Kód: Rozdělení podle hranic funkcí/tříd; Neodstraňujte žádnou funkci z cesty.
- Nahrávání chatu/vstupenky: Rozdělení podle zprávy nebo kola konverzace; Udržujte si povědomí o tom, kdo co řekl.
# chunking založené na závorkách (koncepční) kusy = bol( text, target_size=450, # token overlap=70, # token brackets=["\n\n", "\n", ". ", " "] # odstavec první, slovo poslední)
Přidejte metadata do každé stopy
Chunking není jen "rozdělit"; je obohatit každý kousek. Každá značka, kterou ke stopě připojíte, má cenu zlata pro budoucí filtrování a citování zdroje.
# Obohacený kus (koncepční){ "text": "Roční placená dovolená je 14 dní s 1-5 lety služby...", "metadata": { "source": "ik_el_kitabi_v7.pdf", "section": "5,2 Roční dovolená", "page": 23, "date": "2025-06", "y"}}: "IK": "2025-06", "y"}:
Další mocnou technikou je přidávání kontextového záhlaví: psaní názvu kapitoly, ke které patří, na začátek každého dílu. Tedy i nesouvislý kus jako „Na 14 dní“ je lépe zakomponovaný a smysluplnější jako „Roční dovolená – 14 dní“.
Slabé trhání / silné trhání
Slabé (slepý hardcut, žádná metadata):
Zkraťte text každých 1000 znaků. Ponechte si pouze text.# Výsledek: tabulky jsou rozděleny uprostřed, "14 dní" zůstává bez kontextu,# není známo, z jakého dokumentu pochází, nelze provést filtr.
Výkonné (s ohledem na strukturu + záhlaví + metadata):
Rozdělte dokument podle nadpisů; přidat název oddílu ke každé části;připojit zdroj, stránku, datum a metadata ochrany osobních údajů; převést tabulky na prostý text s jejich záhlavími.# Výsledek: zaměřený, kontextový, filtrovatelný, zdrojový.
Tři mini pouzdra
Případ 1 – Malířská katastrofa. Finanční tým rozdělil 200stránkový ceník slepým tvrdým řezáním; řádky tabulky byly náhodně rozděleny. "Jaká je cena produktu X?" Model přečetl špatný řádek a uvedl špatnou cenu (9 z 12 případů je chybných). Když jsem převedl řádky tabulky na prostý text ve formátu „Produkt: … | Cena: … | Jednotka: …“, chyba se snížila na 0 z 12.
Případ 2 – Extrémně velký kus. Na wiki se každá stránka skládá z jednoho kusu (někteří říkají 3000 tokenů). Vložení je rozmazané, protože na jedné stránce je „dovolená“, „přesčas“ a „mzdy“; Ohledně otázky dovolené vstoupila do hry také sekce pracovní doby. Když byly stránky rozděleny do střední velikosti podle názvu, vzrůst @ 5 z 64 % na 91 %.
Případ 3 – Zkrácená věta bez překrývání. Pevný střih 250 tokenů pro právní tým, žádné překrývání. Kritická definice padla přímo na hranici dvou částí a rozdělila se na dvě; Ani jedno, ani druhé neobsahuje úplnou odpověď. Když bylo přidáno 60 překrytí tokenů, stejná definice zůstala nedotčena v jednom kuse a byla vrácena správná odpověď.
Časté chyby
- Slepý pevný řez: Rozdělí věty a tabulky uprostřed; smysl se ztrácí.
- Ponechání překrytí na nule: Informace, které spadají na hranici, jsou rozděleny a ztraceny.
- Bez přidávání metadat: Filtrování a zobrazení zdroje se stanou nemožnými.
- Ponechání tabulek nezpracované: Model nemůže vyřešit strukturu tabulky; Převeďte řádky na prostý text.
- Zavedení jedné strategie: PDF, kód a tabulka nejsou rozděleny stejnou metodou; Přizpůsobte se žánru.
Upozornění: Chunking nenastavujte jednou a zapomeňte na něj. Znovu změřte kvalitu vyhledávání s příchodem nových typů dokumentů (vstupenky z nového systému, naskenované soubory PDF). Špatná vstupní data znamenají špatnou odezvu ("odpadky dovnitř, odpadky ven").
V souhrnu
- Chunk je nejmenší jednotka vyhledávání; Ani příliš velký, ani příliš malý – měl by být vyvážený podle obsahu.
- Velikost bloku označuje vyvážení zaměření a kontextu; Překrývání řídí ztrátu hranice.
- Rozdělování založené na závorkách a s ohledem na strukturu je výchozím bodem většiny generačních systémů; sémantické rozdělení je kvalitní, ale drahé.
- Typy jako tabulka, skript a chat vyžadují vlastní strategie; Převeďte tabulky na prostý text.
- Přidejte zdroj/datum/kapitolu/osobní metadata a název sekce ke každé skladbě; To je základ filtrování a citování.
Aplikační úkol
Rozdělte část dokumentu, kterou si vyberete, na tři různé způsoby: (1) malé kousky 200 žetonů, (2) střední kousky 500 žetonů (70 žetonů se překrývají), (3) jednotlivé velké kusy. Položte stejné 3 otázky pro každou strategii, ručně označte, kterou část chcete přinést, a zapište si zdůvodnění, která strategie pro daný dokument funguje nejlépe. Poté přidejte ke každé stopě alespoň čtyři pole metadat a „název kapitoly“. Pokud dokument obsahuje tabulku, převeďte řádek tabulky na prostý text ve formátu "pole:hodnota".
kontrolní seznam
- [ ] Mohu říci, že chunk je nejmenší jednotka vyhledávání a velikost je rovnováha ohniska a kontextu.
- [ ] Vím, proč Overlap zabraňuje ztrátě hranic.
- [ ] Dokážu rozlišit mezi chunkingem založeným na závorkách, sémantickým a strukturovaným.
- [ ] Umím přizpůsobit strategii pro tabulku, kód a chat.
- [ ] Posiluji vyhledávání přidáním metadat a názvu kapitoly ke každé stopě.