zisky:
- Numericky vyhodnoťte veľkosť chunku, prekrytie a kompromisy sémantického chunkingu
- Výber vhodnej stratégie rozdeľovania pre rôzne typy dokumentov (PDF, tabuľka, kód, chat log)
- Posilnite kvalitu vyhľadávania a filtrovanie pridaním metadát do každého bloku
Toto je najviac prehliadaný, ale najrozhodnejší krok v RAG: ako rozložíte dokument. Toto sa nazýva chunking. Dokonca aj keď dáte rovnaký dokument rovnakému modelu, v dôsledku zlého rozdelenia sa pri vyhľadávaní vráti nesprávny kus a model nikdy neprinesie skvelú odpoveď. V tejto časti sa venujeme stratégiám fragmentácie, ako ich prispôsobiť podľa typu dokumentu a ako ku každému fragmentu pridať zmysluplné metadáta.
Prečo skartujeme?
Dôvody sú tri. Po prvé, modely vkladania konvertujú text do určitej dĺžky na zmysluplný vektor; Ak je celá 40-stranová kapitola vtesnaná do jedného vektora, význam sa stáva „rozmazaným“. Po druhé, chceme dať modelu len tú časť, ktorá je potrebná ako kontext; odovzdanie celého dokumentu je drahé a rušivé. Po tretie, aby bolo vyhľadávanie presné, vyhľadávacia jednotka musí byť malá a zameraná.
Takže kus je najmenšia jednotka vyhľadávania. Nemalo by byť príliš veľké ani príliš malé – tak akurát.
Veľkosť časti a vyváženie prekrývania
Existujú dve hlavné nastavenia: veľkosť kúska (koľko tokenov/slov bude v kúsku) a prekrytie (časť zdieľaná susednými kúskami).
Veľmi malé časti (napr. 100 tokenov): sústredené, ale odpojené od kontextu. Hovorí „na 14 dní“, ale to, čo je 14 dní, zostáva v predchádzajúcej vete. Veľmi veľké časti (napr. 2 000 tokenov): zachováva kontext, ale veľa vlákien je zmiešaných; vkladanie sa zamotáva a spájajú sa nepodstatné témy.
Prekrytie rieši problém hraníc. Ak veta padne presne na hranicu dvoch častí, rozdelí sa na dve bez prekrývania a jej význam sa stratí. Prekrytie 50-100 tokenov zaisťuje, že informácie spadajúce do limitu zostanú nedotknuté aspoň v jednej časti.
Veľkosť kúska
Výhoda
Nevýhoda
vhodný obsah
Malé (100 – 250 žetónov)
Vysoká citlivosť, zaostrené
Kontext sa môže zlomiť
FAQ, krátke články, definície
Stredné (300 – 600 tokenov)
Zostatok; väčšina scenárov
—
Postupy, texty zásad
Veľké (800 – 1 500 tokenov)
Integrita kontextu
rozmazané vkladanie
Rozprávanie, dlhé vysvetlenia
Tip: Ak neviete, kde začať, začnite s kúskom 400 – 500 tokenov a prekrytím 50 – 80 tokenov; potom zmerajte a upravte pomocou vlastných údajov. "Správna" veľkosť nie je univerzálna, závisí od kontextu.
Chunking stratégie
Pevná veľkosť: Orezáva text po každých N tokenoch. Je to jednoduché a rýchle, ale môže prerušiť stred vety.
Na základe oddeľovača (rekurzívny/oddeľovač): Rozdeľuje podľa hraníc odsekov a potom viet; Lepšie zachováva integritu významu. Väčšina výrobných systémov začína týmto.
Sémantické členenie: Pozerá sa na vloženie viet a rozdeľuje ich tam, kde dochádza k zmene predmetu. Je to najkvalitnejšia, ale najdrahšia metóda; Pri veľkých objemoch sa zvyšujú transakčné náklady.
S ohľadom na štruktúru: Používa štruktúru dokumentu, ako sú nadpisy, sekcie, tabuľky. Napríklad rozdelenie dokumentu Markdown podľa nadpisov zabezpečí, že každá časť bude mať svoj vlastný nadpis.
Úprava podľa typu dokumentu
Nie každý dokument je rovnaký. Stratégia sa líši podľa typu:
- PDF/text zásad: založený na záložkách, stredná veľkosť. Vymazať horné/dolné opakovania strany (hlavička/päta).
- Tabuľky: Nevytrhávajte riadok z kontextu; ponechajte každý riadok s informáciami v hlavičke ("Tovar: X, Cena: Y, Sklad: Z"). Konverzia surovej tabuľky na obyčajný text je často nevyhnutná.
- Kód: Rozdelenie podľa hraníc funkcie/triedy; Neodstraňujte funkciu z cesty.
- Nahrávanie chatu/vstupenky: Rozdelenie podľa správy alebo kola konverzácie; Udržujte si vedomosť o tom, kto čo povedal.
# chunking založené na zátvorkách (koncepčné) kusy = bol( text, cieľová_veľkosť=450, # prekrytie tokenu=70, # hranaté zátvorky=["\n\n", "\n", ". ", " "] # prvý odsek, posledné slovo)
Pridajte metadáta do každej stopy
Chunking nie je len "rozdelenie"; je obohatiť každý kúsok. Každá značka, ktorú pripojíte k trati, má cenu zlata pre budúce filtrovanie a citovanie zdroja.
# Obohatený kus (koncepčný){ "text": "Ročná platená dovolenka je 14 dní s 1-5 rokmi služby...", "metadata": { "source": "ik_el_kitabi_v7.pdf", "section": "5,2 Ročná dovolenka", "page": 23, "date": "2025-06", "y"}}: "IK": "2025-06", "y"}}:
Ďalšou účinnou technikou je pridanie kontextovej hlavičky: na začiatok každej časti sa napíše názov kapitoly, do ktorej patrí. Preto aj nesúvislý kus ako „Na 14 dní“ je lepšie vložený a zmysluplnejší ako „Ročná dovolenka – 14 dní“.
Slabé trhanie / silné trhanie
Slabé (slepý zostrih, žiadne metadáta):
Skráťte text každých 1 000 znakov. Ponechajte len text.# Výsledok: tabuľky sú rozdelené v strede, "14 dní" zostáva bez kontextu,# nie je známe, z ktorého dokumentu pochádza, nedá sa urobiť žiadny filter.
Výkonné (so zreteľom na štruktúru + hlavička + metadáta):
Rozdeľte dokument podľa nadpisov; pridajte názov sekcie ku každej časti; pripojte zdroj, stránku, dátum a metadáta ochrany osobných údajov; konvertovať riadky tabuľky na obyčajný text s ich hlavičkami.# Výsledok: zameraný, kontextový, filtrovateľný, zdrojový.
Tri mini puzdrá
Prípad 1 – Maliarska katastrofa. Finančný tím rozdelil 200-stranový cenník slepým tvrdým rezom; riadky tabuľky boli rozdelené náhodne. "Aká je cena produktu X?" Model prečítal nesprávny riadok a uviedol nesprávnu cenu (9 z 12 prípadov je nesprávnych). Keď som skonvertoval riadky tabuľky na obyčajný text vo formáte „Produkt: … | Cena: … | Jednotka: …“, chyba sa znížila na 0 z 12.
Prípad 2 – Extrémne veľký kus. Vo wiki sa každá stránka skladá z jedného kusu (niektorí hovoria o 3 000 tokenoch). Vkladanie je rozmazané, pretože na jednej stránke je „dovolenka“, „nadčas“ a „mzdy“; K otázke dovolenky prišla aj sekcia pracovného času. Keď sa strany rozdelili na strednú veľkosť podľa názvu, počet vyvolaných @5 sa zvýšil zo 64 % na 91 %.
Prípad 3 – Skrátená veta bez prekrývania. Pevný rez 250 žetónov pre právnický tím, bez prekrývania. Kritická definícia padla presne na hranicu dvoch častí a rozdelila sa na dve časti; Ani jedno, ani druhé neobsahuje úplnú odpoveď. Keď sa pridalo prekrytie 60 tokenov, rovnaká definícia zostala nedotknutá v jednom kuse a vrátila sa správna odpoveď.
Časté chyby
- Slepý pevný strih: Rozdeľuje vety a tabuľky v strede; zmysel sa stráca.
- Ponechanie prekrytia na nule: Informácie, ktoré spadajú na hranicu, sú rozdelené a stratené.
- Nepridávanie metadát: Filtrovanie a zobrazenie zdroja je nemožné.
- Ponechanie tabuliek neupravené: Model nedokáže vyriešiť štruktúru tabuľky; Previesť riadky na obyčajný text.
- Zavedenie jednej stratégie: PDF, kód a tabuľka nie sú rozdelené rovnakou metódou; Prispôsobte sa žánru.
Pozor: Chunking nenastavujte raz a zabudnite na to. Opätovne zmerajte kvalitu načítania, keď prídu nové typy dokumentov (lístky z nového systému, naskenované súbory PDF). Zlé vstupné dáta znamenajú zlú reakciu ("odpadky dovnútra, odpadky von").
V súhrne
- Chunk je najmenšia jednotka vyhľadávania; Ani príliš veľký, ani príliš malý – mal by byť vyvážený podľa obsahu.
- Veľkosť bloku označuje vyváženie zamerania a kontextu; Prekrytie riadi stratu hraníc.
- Rozdeľovanie založené na zátvorkách a štruktúre je východiskovým bodom väčšiny generačných systémov; sémantické členenie je kvalitné, ale drahé.
- Typy ako tabuľka, skript a chat vyžadujú svoje vlastné stratégie; Previesť tabuľky na obyčajný text.
- Pridajte zdroj/dátum/kapitolu/privátne metadáta a názov sekcie ku každej skladbe; Toto je základ filtrovania a citovania.
Aplikačná úloha
Rozdeľte časť dokumentu, ktorú si vyberiete, na tri rôzne spôsoby: (1) malé kúsky po 200 žetónov, (2) stredné kúsky po 500 žetónov (70 žetónov sa prekrýva), (3) jednotlivé veľké kúsky. Opýtajte sa rovnaké 3 otázky pre každú stratégiu, ručne označte, ktorý kúsok chcete priniesť, a zapíšte si zdôvodnenie, ktorá stratégia je pre daný dokument najvhodnejšia. Potom pridajte ku každej skladbe aspoň štyri polia metadát a „názov kapitoly“. Ak dokument obsahuje tabuľku, skonvertujte riadok tabuľky na obyčajný text vo formáte „field:value“.
kontrolný zoznam
- [ ] Môžem povedať, že chunk je najmenšia jednotka vyhľadávania a veľkosť je vyváženosť zamerania a kontextu.
- [ ] Viem, prečo Prekrytie zabraňuje strate hraníc.
- [ ] Dokážem rozlíšiť medzi sémantickým a štruktúrovaným chunkingom založeným na zátvorkách.
- [ ] Dokážem prispôsobiť stratégiu pre tabuľku, kód a chat.
- [ ] Posilňujem vyhľadávanie pridaním metadát a názvu kapitoly ku každej skladbe.