Enota 3 / 11

Razdelitev in priprava dokumentov

Dobički:

  • Numerično ocenite velikost kosov, prekrivanje in semantične kompromise pri razdeljevanju na kose
  • Izbira ustrezne strategije razčlenjevanja za različne vrste dokumentov (PDF, tabela, koda, dnevnik klepeta)
  • Izboljšajte kakovost pridobivanja in filtriranje z dodajanjem metapodatkov vsakemu kosu

To je najbolj spregledan, a najbolj odločilen korak v RAG: kako razdelite dokument. To se imenuje chunking. Tudi če daste isti dokument istemu modelu, bo zaradi slabega razdeljevanja na kose iskanje vrnilo napačen del in model nikoli ne bo dal odličnega odgovora. V tej enoti obravnavamo strategije fragmentacije, kako jih prilagoditi glede na vrsto dokumenta in kako vsakemu fragmentu dodati pomembne metapodatke.

Zakaj Shred?

Razlogi so trije. Prvič, modeli vdelave pretvorijo besedilo do določene dolžine v smiseln vektor; Če celotno poglavje na 40 straneh stlačimo v en sam vektor, postane pomen "zamegljen". Drugič, modelu želimo dati le tisti del, ki je potreben kot kontekst; predaja celotnega dokumenta je draga in moteča. Tretjič, da bi bilo iskanje natančno, mora biti iskalna enota majhna in osredotočena.

Kos je torej najmanjša enota za iskanje. Ne sme biti prevelik ali premajhen – ravno prav.

Velikost kosa in ravnovesje prekrivanja

Obstajata dve glavni nastavitvi: velikost kosa (koliko žetonov/besed bo v kosu) in prekrivanje (del, ki si ga delijo sosednji kosi).

Zelo majhni kosi (npr. 100 žetonov): osredotočeni, vendar nepovezani s kontekstom. Pravi "za 14 dni", kaj pa je 14 dni, je ostalo v prejšnjem stavku. Zelo veliki kosi (npr. 2000 žetonov): ohranja kontekst, vendar je vmešanih veliko niti; vdelava postane zmedena in nepomembne teme se združijo.

Prekrivanje rešuje problem meje. Če stavek pade točno na mejo dveh delov, se razdeli na dva brez prekrivanja in izgubi pomen. Prekrivanje 50–100 žetonov zagotavlja, da informacije, ki spadajo v mejo, ostanejo nedotaknjene vsaj v enem delu.

Velikost kosa

Prednost

Slabost

ustrezno vsebino

Majhna (100-250 žetonov)

Visoka občutljivost, osredotočenost

Kontekst se lahko zlomi

Pogosta vprašanja, kratki članki, definicije

Srednje (300–600 žetonov)

Ravnovesje; večina scenarijev

Postopki, besedila politik

Velika (800-1500 žetonov)

Celovitost konteksta

zamegljena vdelava

Pripoved, dolge razlage

Namig: če ne veste, kje začeti, začnite s kosom žetonov 400–500 in prekrivanjem 50–80 žetonov; nato izmerite in prilagodite z lastnimi podatki. »Prava« velikost ni univerzalna, odvisna je od konteksta.

Strategije drobljenja

Fiksna velikost: Obreže besedilo vsakih N žetonov. Je preprost in hiter, vendar lahko prekine sredi stavka.

Na podlagi ločila (rekurzivno/ločilo): razdeli glede na odstavke in nato meje stavkov; Bolje ohranja celovitost pomena. Večina proizvodnih sistemov se začne s tem.

Pomensko razčlenjevanje: pregleda vdelane stavke in jih razdeli, kjer pride do spremembe predmeta. Je najkakovostnejša, a najdražja metoda; Z velikimi količinami se transakcijski stroški povečajo.

Upošteva strukturo: uporablja strukturo dokumenta, kot so naslovi, razdelki, tabele. Na primer, razdelitev dokumenta Markdown po naslovih zagotavlja, da ima vsak del svoj naslov.

Prilagoditev glede na vrsto dokumenta

Ni vsak dokument enak. Strategija se razlikuje glede na vrsto:

  • PDF/besedilo pravilnika: na podlagi zaznamkov, srednje velikosti. Počisti zgornje/spodnje ponovitve (glava/noga).
  • Tabele: Ne jemljite vrstice iz konteksta; obdržite vsako vrstico z informacijami o glavi ("Predmet: X, Cena: Y, Zaloga: Z"). Pretvorba neobdelane tabele v golo besedilo je pogosto nujna.
  • Koda: razdeljena po mejah funkcije/razreda; Ne odrežite funkcije s poti.
  • Snemanje klepeta/vstopnic: Razdeljeno po krogu sporočil ali pogovorov; Ohranite znanje o tem, kdo je kaj rekel.

# kosi (konceptualni) na podlagi oklepajev = bol( besedilo, target_size=450, # prekrivanje žetonov=70, # oklepaji žetonov=["\n\n", "\n", ". ", " "] # prvi odstavek, zadnja beseda)

Dodajte metapodatke vsaki skladbi

Razdelitev ni le "razdelitev"; je obogatiti vsak kos. Vsaka oznaka, ki jo pritrdite na skladbo, je vredna zlata za prihodnje filtriranje in navajanje vira.

# Obogateni kos (konceptualno){ "text": "Letni plačani dopust je 14 dni z 1-5 leti delovne dobe ...", "metapodatki": { "vir": "ik_el_kitabi_v7.pdf", "section": "5.2 Letni dopust", "page": 23, "date": "2025-06", "department": "IK", "privacy": "notranje" }}

Druga močna tehnika je dodajanje kontekstualne glave: pisanje naslova poglavja, ki mu pripada, na začetku vsakega dela. Tako je tudi nepovezan komad, kot je "Za 14 dni", hkrati bolje vpet in bolj pomenljiv kot "Letni dopust - 14 dni."

Šibko drobljenje/močno drobljenje

Šibko (slepi trdi izrez, brez metapodatkov):

Skrajšajte besedilo na vsakih 1000 znakov. Ohrani samo besedilo.# Rezultat: tabele so razdeljene na sredino, "14 dni" ostane brez konteksta,# ni znano, iz katerega dokumenta prihaja, filtra ni mogoče narediti.

Zmogljivo (z upoštevanjem strukture + glava + metapodatki):

Razdelite dokument po naslovih; vsakemu delu dodajte naslov razdelka; pripnite vir, stran, datum in metapodatke o zasebnosti; pretvori vrstice tabel v golo besedilo z njihovimi glavami.# Rezultat: osredotočen, kontekstualen, filtriran, dostopen vir.

Trije mini kovčki

Primer 1 – Slikarska katastrofa. Finančna ekipa je 200-stranski cenik razdelila s slepim trdim rezanjem; Vrstice tabele so bile naključno razdeljene. "Kakšna je cena izdelka X?" Model je prebral napačno vrstico in dal napačno ceno (9 od 12 primerov je napačnih). Ko sem vrstice tabele pretvoril v golo besedilo v obliki "Izdelek: … | Cena: … | Enota: …", se je napaka zmanjšala na 0 od 12.

Primer 2 – Izjemno velik kos. V wikiju je vsaka stran sestavljena iz enega kosa (nekateri pravijo, da 3000 žetonov). Vdelava je zabrisana, ker je na eni strani "dopust", "nadurno delo" in "plača"; Delovni čas je prišel v poštev tudi pri vprašanju dopusta. Ko so bile strani razdeljene na srednje velikosti po naslovu, se je recall@5 povečal s 64 % na 91 %.

Primer 3 – Skrajšan stavek brez prekrivanja. 250 žetonov fiksni prirez za pravno ekipo, brez prekrivanja. Kritična definicija je padla prav na mejo dveh delov in se razcepila na dvoje; Ne eno ne drugo ne vsebuje popolnega odgovora. Ko je bilo dodano prekrivanje 60 žetonov, je ista definicija ostala nedotaknjena v enem kosu in vrnjen je bil pravilen odgovor.

Pogoste napake

  • Slepi fiksni rez: razdeli stavke in tabele na sredino; pomen se izgubi.
  • Puščanje prekrivanja na nič: Informacije, ki padejo na mejo, so razdeljene in izgubljene.
  • Brez dodajanja metapodatkov: Filtriranje in prikaz vira postaneta nemogoča.
  • Pustiti tabele neobdelane: model ne more razrešiti strukture tabele; Pretvori vrstice v golo besedilo.
  • Vsiljevanje ene strategije: PDF, koda in tabela niso razdeljeni po isti metodi; Prilagodite se žanru.
Pozor: Ne nastavite Chunkinga enkrat in ga pozabite. Ponovno izmerite kakovost iskanja, ko prispejo nove vrste dokumentov (vstopnice iz novega sistema, skenirani PDF-ji). Slab vhodni podatek pomeni slab odziv ("smeti noter, smeti ven").

Če povzamem

  • Kos je najmanjša enota za iskanje; Ne prevelika ne premajhna – naj bo vsebinsko uravnotežena.
  • Velikost kosa označuje ravnovesje med fokusom in kontekstom; Prekrivanje upravlja izgubo meje.
  • Združevanje na oklepajih in strukturi, ki se zaveda strukture, je izhodišče večine sistemov za generiranje; semantično razdeljevanje je kakovostno, a drago.
  • Vrste, kot so tabela, skript in klepet, zahtevajo lastne strategije; Pretvorite tabele v golo besedilo.
  • Vsaki skladbi dodajte metapodatke o viru/datumu/poglavju/zasebnosti in naslov razdelka; To je osnova filtriranja in citiranja.

Aplikacijska naloga

Del dokumenta, ki ga izberete, razdelite na tri različne načine: (1) majhne koščke po 200 žetonov, (2) srednje velike kose po 500 žetonov (70 žetonov se prekriva), (3) posamezne velike kose. Postavite enaka 3 vprašanja za vsako strategijo, ročno označite, kateri del želite dodati, in zapišite utemeljitev, katera strategija je najboljša za ta dokument. Nato vsaki skladbi dodajte vsaj štiri metapodatkovna polja in »naslov poglavja«. Če dokument vsebuje tabelo, pretvorite vrstico tabele v golo besedilo v formatu "polje:vrednost".

kontrolni seznam

  • [ ] Lahko rečem, da je kos najmanjša enota za iskanje, velikost pa je ravnovesje fokus-kontekst.
  • [ ] Vem, zakaj prekrivanje preprečuje izgubo meje.
  • [ ] Razlikujem med razčlenjevanjem na podlagi oklepajev, semantičnim in strukturno ozaveščanjem.
  • [ ] Znam prilagoditi strategijo za mizo, kodo in klepet.
  • [ ] Pridobivanje okrepim tako, da vsaki skladbi dodam metapodatke in naslov poglavja.