Vienetas 3 / 11

Dalijimas ir dokumentų ruošimas

Pelnas:

  • Skaitmeniškai įvertinkite gabalo dydį, persidengimą ir semantinius suskirstymo kompromisus
  • Tinkamos skirstymo strategijos pasirinkimas skirtingiems dokumentų tipams (PDF, lentelė, kodas, pokalbių žurnalas)
  • Pagerinkite gavimo kokybę ir filtravimą pridėdami metaduomenų prie kiekvienos dalies

Tai labiausiai nepastebėtas, bet lemiamas RAG žingsnis: kaip suskaidote dokumentą. Tai vadinama pjaustymu. Net jei pateikiate tą patį dokumentą tam pačiam modeliui, dėl blogo suskirstymo gavimas grąžina netinkamą gabalą ir modelis niekada nepateiks puikaus atsakymo. Šiame skyriuje aptariame suskaidymo strategijas, kaip jas pritaikyti pagal dokumento tipą ir kaip prie kiekvieno fragmento pridėti reikšmingų metaduomenų.

Kodėl mes susmulkiname?

Yra trys priežastys. Pirma, įterpimo modeliai paverčia tekstą iki tam tikro ilgio į prasmingą vektorių; Jei visas 40 puslapių skyrius sugrūstas į vieną vektorių, prasmė tampa „neryški“. Antra, norime modeliui pateikti tik tą dalį, kuri reikalinga kaip kontekstas; viso dokumento perdavimas yra brangus ir blaško dėmesį. Trečia, kad paieška būtų tiksli, paieškos vienetas turi būti mažas ir sutelktas.

Taigi gabalas yra mažiausias gavimo vienetas. Jis neturėtų būti per didelis ar per mažas – kaip tik.

Gabalo dydis ir persidengimo balansas

Yra du pagrindiniai nustatymai: gabalo dydis (kiek žetonų / žodžių bus gabale) ir sutapimas (gretimų dalių dalijama dalis).

Labai maži gabaliukai (pvz., 100 žetonų): sufokusuoti, bet atsieti nuo konteksto. Sako „už 14 dienų“, bet kokios 14 dienų lieka, ankstesniame sakinyje. Labai dideli gabalai (pvz., 2000 žetonų): išsaugo kontekstą, bet sumaišoma daug gijų; įterpimas tampa painus ir susijungia nesusijusios temos.

Persidengimas išsprendžia ribos problemą. Jei sakinys patenka tiksliai ant dviejų dalių ribos, jis nepersidengdamas dalijamas į dvi ir prarandama prasmė. 50–100 žetonų sutapimas užtikrina, kad informacija, patenkanti į ribą, išliks nepažeista bent vienoje dalyje.

Dalies dydis

Privalumas

Trūkumas

atitinkamą turinį

Mažas (100–250 žetonų)

Didelis jautrumas, susikaupęs

Kontekstas gali nutrūkti

DUK, trumpi straipsniai, apibrėžimai

Vidutinis (300–600 žetonų)

Balansas; dauguma scenarijų

Procedūros, politikos tekstai

Didelis (800–1500 žetonų)

Konteksto vientisumas

neryškus įterpimas

Pasakojimas, ilgi paaiškinimai

Patarimas: jei nežinote, nuo ko pradėti, pradėkite nuo 400–500 žetonų gabalo ir 50–80 žetonų persidengimo; tada išmatuokite ir koreguokite pagal savo duomenis. „Teisingas“ dydis nėra universalus, priklauso nuo konteksto.

Suskirstymo strategijos

Fiksuotas dydis: apkarpomas tekstas kas N žetonų. Tai paprasta ir greita, bet gali nutraukti sakinio vidurį.

Atskyriklis pagrįstas (rekursyvus / separatorius): skirstoma pagal pastraipą ir tada sakinio ribas; Taip geriau išsaugomas prasmės vientisumas. Dauguma gamybos sistemų prasideda nuo to.

Semantinis grupavimas: žiūrima į sakinių įterpimus ir padalija juos ten, kur pasikeičia tema. Tai aukščiausios kokybės, bet brangiausias būdas; Esant dideliems kiekiams, didėja sandorių kaštai.

Atsižvelgiama į struktūrą: naudoja dokumentų struktūrą, pvz., antraštes, skyrius, lenteles. Pavyzdžiui, suskaidžius žymėjimo dokumentą pagal antraštes, užtikrinama, kad kiekviena dalis turės savo antraštę.

Pritaikymas pagal dokumento tipą

Ne kiekvienas dokumentas yra vienodas. Strategija skiriasi priklausomai nuo tipo:

  • PDF / politikos tekstas: pagal žymes, vidutinio dydžio. Išvalyti puslapio viršuje / apačioje pasikartojimus (antraštę / poraštę).
  • Lentelės: Neištraukite eilutės iš konteksto; palikti kiekvieną eilutę su antraštės informacija ("Prekė: X, Kaina: Y, Sandėlis: Z"). Neapdorotos lentelės konvertavimas į paprastą tekstą dažnai yra būtinas.
  • Kodas: padalintas pagal funkcijų/klasių ribas; Nenutraukite funkcijos.
  • Pokalbių / bilietų įrašymas: padalintas žinute arba pokalbio ratu; Išsaugokite žinias apie tai, kas ką pasakė.

# skliausteliuose pagrįsti gabalėliai (konceptualūs) gabalai = bol( text, target_size=450, # token overlap=70, # token brackets=["\n\n", "\n", ". ", " "] # pastraipa pirma, žodis paskutinis)

Pridėkite metaduomenis prie kiekvieno takelio

Suskaidymas nėra tik „padalinti“; yra praturtinti kiekvieną gabalą. Kiekviena žyma, kurią pridedate prie takelio, yra aukso vertės, kad ateityje būtų galima filtruoti ir nurodyti šaltinį.

# Praturtintas gabalas (konceptualus){ "text": "Kasmetinės mokamos atostogos yra 14 dienų su 1-5 metų darbo stažu...", "metadata": { "source": "ik_el_kitabi_v7.pdf", "section": "5.2 Annual Leave", "page": 23, "date": "2025", IK"-":", 2025 m. }}

Kita galinga technika yra kontekstinės antraštės pridėjimas: kiekvieno kūrinio pradžioje įrašomas skyriaus, kuriam jis priklauso, pavadinimas. Taigi net toks nesusijęs kūrinys kaip „14 dienų“ yra geriau įterptas ir prasmingesnis kaip „Kasmetinės atostogos – 14 dienų“.

Silpnas skilimas / stiprus skilimas

Silpnas (aklas griežtas, be metaduomenų):

Sutrumpinkite tekstą kas 1000 simbolių. Išsaugokite tik tekstą.# Rezultatas: lentelės suskaidomos per vidurį, "14 dienų" lieka be konteksto,# nežinia iš kokio dokumento atkeliavo, filtro padaryti negalima.

Galingas (suvokianti struktūrą + antraštė + metaduomenys):

Padalinkite dokumentą antraštėmis; prie kiekvienos dalies pridėkite skyriaus pavadinimą; pridėkite šaltinį, puslapį, datą ir privatumo metaduomenis; konvertuoti lentelės eilutes į paprastą tekstą su jų antraštėmis.# Rezultatas: sutelktas, kontekstinis, filtruojamas, gaunamas šaltinis.

Trys mini dėklai

1 atvejis – tapybos nelaimė. Finansų komanda 200 puslapių kainoraštį suskirstė aklai sunkiai pjaustydama; lentelės eilutės buvo padalintos atsitiktinai. "Kokia yra produkto X kaina?" Modelis perskaitė neteisingą eilutę ir nurodė neteisingą kainą (9 iš 12 atvejų yra klaidingi). Kai konvertavau lentelės eilutes į paprastą tekstą formatu „Produktas: … | Kaina: … | Vienetas: …“, klaida sumažėjo iki 0 iš 12.

2 atvejis – itin didelis gabalas. Wiki kiekvienas puslapis sudarytas iš vieno gabalo (kai kurie sako, kad 3000 žetonų). Įterpimas neryškus, nes viename puslapyje yra „atostogos“, „viršvalandžiai“ ir „darbo užmokestis“; Darbo valandų skyrius taip pat buvo įtrauktas į atostogų klausimą. Kai puslapiai buvo suskirstyti į vidutinio dydžio pagal pavadinimą, prisiminimas@5 padidėjo nuo 64% iki 91%.

3 atvejis. Sutrumpintas sakinys be persidengimo. 250 žetonų fiksuotas sumažinimas teisinei komandai, be persidengimo. Kritinis apibrėžimas krito tiesiai ant dviejų dalių ribos ir suskilo į dvi dalis; Nei viename, nei kitame nėra išsamaus atsakymo. Pridėjus 60 žetonų persidengimo, tas pats apibrėžimas liko nepakitęs ir buvo grąžintas teisingas atsakymas.

Dažnos klaidos

  • Aklas fiksuotas pjūvis: suskaido sakinius ir lenteles per vidurį; prasmė prarasta.
  • Persidengimo palikimas ties nuliu: informacija, kuri patenka į ribą, yra padalinta ir prarandama.
  • Nepridedama metaduomenų: filtravimas ir šaltinio rodymas tampa neįmanomi.
  • Lentelių palikimas neapdorotas: modelis negali išspręsti lentelės struktūros; Konvertuoti eilutes į paprastą tekstą.
  • Vienos strategijos primetimas: PDF, kodas ir lentelė nėra skaidomi tuo pačiu metodu; Prisitaikykite prie žanro.
Atsargiai: nenustatykite Chunking vieną kartą ir nepamirškite. Iš naujo išmatuokite gavimo kokybę, kai atsiranda naujų dokumentų tipų (bilietai iš naujos sistemos, nuskaityti PDF failai). Blogi įvesties duomenys reiškia blogą atsakymą („šiukšlės įvedamos, išvežtos šiukšlės“).

Apibendrinant

  • Gabalas yra mažiausias paieškos vienetas; Nei per didelis, nei per mažas – reikėtų subalansuoti pagal turinį.
  • Gabalo dydis rodo fokuso ir konteksto balansą; Persidengimas valdo ribos praradimą.
  • Skliausteliais pagrįstas ir struktūros suvokimas yra daugelio kartos sistemų pradžios taškas; semantinis gabalas yra geros kokybės, bet brangus.
  • Tokiems tipams kaip lentelė, scenarijus ir pokalbis reikalauja savo strategijų; Konvertuoti lenteles į paprastą tekstą.
  • Prie kiekvieno takelio pridėkite šaltinio / datos / skyriaus / privatumo metaduomenis ir skyriaus pavadinimą; Tai yra filtravimo ir citavimo pagrindas.

Taikymo užduotis

Padalinkite pasirinktą dokumento dalį į tris skirtingus būdus: (1) mažas 200 žetonų dalis, (2) vidutines 500 žetonų dalis (70 žetonų sutampa), (3) atskiras dideles dalis. Užduokite tuos pačius 3 klausimus kiekvienai strategijai, rankiniu būdu pažymėkite, kurią dalį įtraukti, ir užrašykite motyvus, dėl kurių strategija geriausiai tinka tam dokumentui. Tada prie kiekvieno takelio pridėkite bent keturis metaduomenų laukus ir „skyriaus pavadinimą“. Jei dokumente yra lentelė, konvertuokite lentelės eilutę į paprastą tekstą formatu „laukas:reikšmė“.

kontrolinis sąrašas

  • [ ] Galiu pasakyti, kad gabalas yra mažiausias atkūrimo vienetas, o dydis yra židinio ir konteksto balansas.
  • [ ] Žinau, kodėl persidengimas apsaugo nuo ribų praradimo.
  • [ ] Galiu atskirti skliausteliuose pagrįstą, semantinį ir struktūros suvokimą.
  • [ ] Galiu pritaikyti lentelės, kodo ir pokalbių strategiją.
  • [ ] Sustiprinu atgavimą pridėdamas metaduomenų ir skyriaus pavadinimą prie kiekvieno takelio.