Vienība 3 / 11

Sadalīšana un dokumentu sagatavošana

Ieguvumi:

  • Skaitliski novērtējiet gabala lielumu, pārklāšanos un semantisko sadalīšanas kompromisus
  • Piemērotas sadalīšanas stratēģijas izvēle dažādiem dokumentu tipiem (PDF, tabula, kods, tērzēšanas žurnāls)
  • Uzlabojiet izguves kvalitāti un filtrēšanu, pievienojot metadatus katram gabalam

Šis ir visvairāk aizmirstais, bet izšķirīgākais solis RAG: kā jūs sadalāt dokumentu. To sauc par sadalīšanu. Pat ja jūs piešķirat vienu un to pašu dokumentu vienam un tam pašam modelim, nepareizas sadalīšanas dēļ izguve atgriež nepareizo daļu un modelis nekad nesniegs lielisku atbildi. Šajā nodaļā mēs aplūkojam sadrumstalotības stratēģijas, kā tās pielāgot dokumenta veidam un kā katram fragmentam pievienot nozīmīgus metadatus.

Kāpēc mēs sasmalcinām?

Ir trīs iemesli. Pirmkārt, iegulšanas modeļi pārvērš tekstu līdz noteiktam garumam jēgpilnā vektorā; Ja vesela 40 lappušu nodaļa ir saspiesta vienā vektorā, nozīme kļūst "izplūdusi". Otrkārt, mēs vēlamies modelim piešķirt tikai to daļu, kas ir nepieciešama kā konteksts; visa dokumenta nodošana ir dārga un novērš uzmanību. Treškārt, lai izguve būtu precīza, meklēšanas vienībai jābūt mazai un fokusētai.

Tātad gabals ir mazākā izguves vienība. Tam nevajadzētu būt pārāk lielam vai pārāk mazam – tieši tā.

Daļas lielums un pārklāšanās līdzsvars

Ir divi galvenie iestatījumi: gabala lielums (cik marķieru/vārdu būs daļā) un pārklājums (daļa, ko koplieto blakus esošie gabali).

Ļoti mazi gabali (piemēram, 100 marķieri): fokusēti, bet atdalīti no konteksta. Viņš saka "uz 14 dienām", bet tās 14 dienas ir atstātas iepriekšējā teikumā. Ļoti lieli gabali (piem., 2000 marķieri): saglabā kontekstu, bet tiek sajaukti daudzi pavedieni; iegulšana kļūst neskaidra, un tiek apkopotas neatbilstošas ​​tēmas.

Pārklāšanās atrisina robežproblēmu. Ja teikums nokrīt tieši uz divu daļu robežas, tas tiek sadalīts divās daļās, nepārklājoties un zūd tā nozīme. 50–100 marķieru pārklāšanās nodrošina, ka informācija, kas ietilpst limitā, paliek neskarta vismaz vienā daļā.

Gabala izmērs

Priekšrocība

Trūkums

atbilstošs saturs

Mazs (100–250 žetoni)

Augsta jutība, fokuss

Konteksts var sabojāt

FAQ, īsi raksti, definīcijas

Vidējs (300–600 žetonu)

Līdzsvars; vairums scenāriju

Procedūras, politikas teksti

Liels (800–1500 žetonu)

Konteksta integritāte

neskaidra iegulšana

Stāstījums, gari skaidrojumi

Padoms. Ja nezināt, ar ko sākt, sāciet ar 400–500 marķiera gabalu un 50–80 marķieru pārklāšanos; pēc tam izmēriet un pielāgojiet ar saviem datiem. "Pareizais" izmērs nav universāls, tas ir atkarīgs no konteksta.

Sadalīšanas stratēģijas

Fiksēts izmērs: apgriež tekstu ik pēc N marķieriem. Tas ir vienkārši un ātri, taču var pārtraukt teikuma vidu.

Balstīts uz atdalītāju (rekursīvs/atdalītājs): sadala atbilstoši rindkopas un pēc tam teikuma robežām; Tas labāk saglabā nozīmes integritāti. Lielākā daļa ražošanas sistēmu sākas ar to.

Semantiskā sadalīšana: tiek aplūkoti teikumu ieguljumi un tie tiek sadalīti vietās, kur notiek tēmas maiņa. Tā ir augstākās kvalitātes, bet visdārgākā metode; Pie lieliem apjomiem palielinās darījumu izmaksas.

Apzinoties struktūru: izmanto dokumentu struktūru, piemēram, virsrakstus, sadaļas, tabulas. Piemēram, Markdown dokumenta sadalīšana pēc virsrakstiem nodrošina, ka katrai daļai ir savs virsraksts.

Pielāgošana pēc dokumenta veida

Ne katrs dokuments ir vienāds. Stratēģija atšķiras atkarībā no veida:

  • PDF/politikas teksts: balstīts uz grāmatzīmēm, vidēja izmēra. Notīrīt lapas augšdaļas/apakšas atkārtojumus (galveni/kājeni).
  • Tabulas: neizņemiet līniju no konteksta; Saglabājiet katru rindu ar galvenes informāciju ("Prece: X, Cena: Y, Stock: Z"). Neapstrādātas tabulas pārveidošana par vienkāršu tekstu bieži ir būtiska.
  • Kods: sadalīts pēc funkciju/klases robežām; Neizslēdziet funkciju.
  • Tērzēšanas/biļešu ierakstīšana: Sadalīts pēc ziņas vai sarunas kārtas; Saglabājiet zināšanas par to, kurš ko teica.

# uz iekavām balstīti gabali (konceptuāli) gabali = bol( teksts, mērķa_izmērs=450, # marķiera pārklāšanās = 70, # marķiera iekavas =["\n\n", "\n", ". ", " "] # rindkopa pirmais, vārds pēdējais)

Pievienojiet metadatus katram ierakstam

Sadalīšana nav tikai "sadalīt"; ir bagātināt katru gabalu. Katrs ierakstam pievienotais tags ir zelta vērts turpmākai filtrēšanai un avota atsaucei.

# Enriched chunk (conceptual){ "text": "Ikgadējais apmaksātais atvaļinājums ir 14 dienas ar 1–5 gadu stāžu...", "metadata": { "source": "ik_el_kitabi_v7.pdf", "section": "5.2 Annual Leave", "page": 23, "date": "2025", IK"-":", }}

Vēl viens spēcīgs paņēmiens ir kontekstuālas galvenes pievienošana: katra gabala sākumā ierakstiet tās nodaļas nosaukumu, kurai tā pieder. Tādējādi pat nesadalīts gabals, piemēram, “14 dienas”, ir gan labāk iegults, gan nozīmīgāks kā “Ikgadējais atvaļinājums — 14 dienas”.

Vāja šķelšanās / spēcīga šķelšanās

Vāji (akls cietais griezums, bez metadatiem):

Saīsināt tekstu ik pēc 1000 rakstzīmēm. Saglabājiet tikai tekstu.# Rezultāts: tabulas tiek sadalītas pa vidu, "14 dienas" paliek bez konteksta,# nav zināms, no kura dokumenta tas nācis, filtru nevar izveidot.

Jaudīgi (apzinās struktūru + galvene + metadati):

Sadaliet dokumentu pēc virsrakstiem; pievienojiet sadaļas nosaukumu katrai daļai; pievienojiet avotu, lapu, datumu un konfidencialitātes metadatus; konvertēt tabulas rindas par vienkāršu tekstu ar to galvenēm.# Rezultāts: fokusēts, kontekstuāls, filtrējams, avotam.

Trīs mini futrāļi

1. gadījums — glezniecības katastrofa. Finanšu komanda sadalīja 200 lappušu cenrādi ar akli un cietu griezumu; tabulas rindas tika nejauši sadalītas. "Kāda ir produkta X cena?" Modelis nolasīja nepareizo rindiņu un deva nepareizu cenu (9 no 12 gadījumiem ir nepareizi). Kad es konvertēju tabulas rindas uz vienkāršu tekstu formātā "Produkts: … | Cena: … | Mērvienība: …", kļūda samazinājās līdz 0 no 12.

2. gadījums — ļoti liels gabals. Wiki katra lapa ir veidota no viena gabala (daži saka, ka 3000 žetonu). Iegulšana ir izplūdusi, jo vienā lapā ir "atvaļinājums", "virsstundas" un "algas saraksts"; Darba laika sadaļa tika izmantota arī saistībā ar jautājumu par atvaļinājumu. Kad lapas tika sadalītas vidējā izmērā pēc nosaukuma, atmiņa@5 palielinājās no 64% līdz 91%.

3. gadījums — saīsināts teikums bez pārklāšanās. 250 žetonu fiksēts samazinājums juridiskai komandai, bez pārklāšanās. Kritiskā definīcija iekrita tieši uz divu daļu robežas un sadalījās divās daļās; Ne viens, ne otrs nesatur pilnīgu atbildi. Kad tika pievienoti 60 marķieru pārklāšanās, tā pati definīcija palika neskarta un tika atgriezta pareizā atbilde.

Biežas kļūdas

  • Akls fiksēts griezums: sadala teikumus un tabulas pa vidu; jēga ir zaudēta.
  • Pārklāšanās atstāšana uz nulles: informācija, kas atrodas uz robežas, tiek sadalīta un tiek zaudēta.
  • Nepievienot metadatus: filtrēšana un avota attēlošana kļūst neiespējama.
  • Tabulu atstāšana neapstrādātu: modelis nevar atrisināt tabulas struktūru; Pārvērst rindas uz vienkāršu tekstu.
  • Vienas stratēģijas uzlikšana: PDF, kods un tabula netiek sadalīti ar vienu un to pašu metodi; Pielāgojiet žanram.
Uzmanību! Neiestatiet Chunking vienreiz un neaizmirstiet to. Atkārtoti novērtējiet izguves kvalitāti, kad tiek saņemti jauni dokumentu veidi (biļetes no jaunas sistēmas, skenēti PDF faili). Slikti ievades dati nozīmē sliktu atbildi ("atkritumi iekšā, atkritumi ārā").

Rezumējot

  • Gabals ir mazākā izguves vienība; Ne par lielu, ne par mazu – jāsabalansē atbilstoši saturam.
  • Daļas lielums norāda fokusa un konteksta līdzsvaru; Pārklāšanās pārvalda robežu zudumu.
  • Uz iekavām balstīta un struktūru apzinoša sadalīšana ir sākumpunkts lielākajai daļai ģenerēšanas sistēmu; semantiskā sadalīšana ir laba kvalitāte, bet dārga.
  • Tādiem veidiem kā tabula, skripts un tērzēšana prasa savas stratēģijas; Pārveidojiet tabulas par vienkāršu tekstu.
  • Katram ierakstam pievienojiet avota/datuma/nodaļas/privātuma metadatus un sadaļas nosaukumu; Tas ir filtrēšanas un citēšanas pamatā.

Lietojumprogrammas uzdevums

Sadaliet izvēlētā dokumenta sadaļu trīs dažādos veidos: (1) mazos gabaliņos pa 200 marķieriem, (2) vidējiem 500 marķieriem (70 marķieru pārklājas), (3) atsevišķās lielās daļās. Uzdodiet tos pašus 3 jautājumus par katru stratēģiju, manuāli atzīmējiet, kuru daļu iekļaut, un pierakstiet pamatojumu, kura stratēģija šim dokumentam ir vispiemērotākā. Pēc tam katram ierakstam pievienojiet vismaz četrus metadatu laukus un “nodaļas nosaukumu”. Ja dokumentā ir tabula, konvertējiet tabulas rindu par vienkāršu tekstu formātā "lauks:vērtība".

kontrolsaraksts

  • [ ] Es varu pateikt, ka gabals ir mazākā izguves vienība, un lielums ir fokusa un konteksta līdzsvars.
  • [ ] Es zinu, kāpēc pārklāšanās novērš robežas zudumu.
  • [ ] Es varu atšķirt uz iekavām balstītu, semantisko un struktūru apzinošu sadalīšanu.
  • [ ] Es varu pielāgot stratēģiju galdam, kodam un tērzēšanai.
  • [ ] Es pastiprinu izguvi, pievienojot metadatus un nodaļas nosaukumu katram ierakstam.