Jedinica 3 / 11

Sečenje i priprema dokumenata

Dobici:

  • Numerički procijenite ustupke veličine komada, preklapanja i semantičkog komadanja
  • Odabir odgovarajuće strategije lomljenja za različite tipove dokumenata (PDF, tabela, kod, dnevnik razgovora)
  • Ojačajte kvalitet preuzimanja i filtriranje dodavanjem metapodataka svakom komadu

Ovo je najpreviđeniji, ali najodlučniji korak u RAG-u: kako raščlaniti dokument. Ovo se zove chunking. Čak i ako date isti dokument istom modelu, zbog lošeg lomljenja, preuzimanje vraća pogrešan dio i model nikada neće dati sjajan odgovor. U ovoj jedinici pokrivamo strategije fragmentacije, kako ih prilagoditi prema vrsti dokumenta i kako dodati smislene metapodatke svakom fragmentu.

Zašto usitnjavamo?

Postoje tri razloga. Prvo, modeli za ugrađivanje pretvaraju tekst do određene dužine u smisleni vektor; Ako se cijelo poglavlje od 40 stranica ugura u jedan vektor, značenje postaje "zamagljeno". Drugo, želimo modelu dati samo dio koji je potreban kao kontekst; predaja cijelog dokumenta je skupa i ometajuće. Treće, da bi pronalaženje bilo precizno, jedinica za pretragu mora biti mala i fokusirana.

Dakle, komad je najmanja jedinica za pronalaženje. Ne smije biti prevelika ili premala – taman.

Veličina komada i balans preklapanja

Postoje dvije glavne postavke: veličina dijela (koliko će tokena/riječi biti u komadu) i preklapanje (dio koji dijele susjedni dijelovi).

Vrlo mali komadi (npr. 100 tokena): fokusirani, ali odvojeni od konteksta. Kaže "14 dana", ali ono što je 14 dana je ostalo u prethodnoj rečenici. Vrlo veliki komadi (npr. 2000 tokena): čuva kontekst, ali su mnoge niti pomiješane; ugrađivanje se zbrka i nebitne teme se spajaju.

Preklapanje rješava granični problem. Ako rečenica pada tačno na granicu dva dela, deli se na dva bez preklapanja i gubi joj značenje. Preklapanje od 50-100 tokena osigurava da informacije koje spadaju u ograničenje ostaju netaknute u barem jednom dijelu.

Veličina komada

Prednost

Nedostatak

odgovarajući sadržaj

Mali (100-250 tokena)

Visoka osetljivost, fokusiran

Kontekst se može pokvariti

FAQ, kratki članci, definicije

Srednje (300-600 tokena)

Balans; većina scenarija

Procedure, tekstovi politika

Veliki (800-1500 tokena)

Integritet konteksta

mutno ugrađivanje

Narativ, duga objašnjenja

Savjet: Ako ne znate odakle da počnete, počnite s 400-500 komada tokena i 50-80 preklapanja tokena; zatim izmjerite i prilagodite svojim podacima. "Prava" veličina nije univerzalna, zavisi od konteksta.

Chunking Strategies

Fiksna veličina: Izrezuje tekst na svakih N tokena. Jednostavan je i brz, ali može prekinuti usred rečenice.

Zasnovano na separatoru (rekurzivno/separator): Podijeli prema granicama pasusa, a zatim rečenica; Bolje čuva integritet značenja. Većina proizvodnih sistema počinje s ovim.

Semantičko lomljenje: gleda na ugradnju rečenica i dijeli ih tamo gdje dolazi do promjene subjekta. To je najkvalitetnija ali najskuplja metoda; Sa velikim količinama, transakcioni troškovi rastu.

Svjestan strukture: Koristi strukturu dokumenta kao što su naslovi, odjeljci, tabele. Na primjer, dijeljenje Markdown dokumenta po naslovima osigurava da svaki dio nosi svoj naslov.

Adaptacija prema vrsti dokumenta

Nije svaki dokument isti. Strategija se razlikuje po vrsti:

  • PDF/tekst politike: baziran na oznakama, srednje veličine. Obrišite ponavljanja na vrhu/dole stranice (zaglavlje/podnožje).
  • Tabele: Ne vadite red iz konteksta; zadržite svaki red sa informacijama u zaglavlju ("Sredstvo: X, Cijena: Y, Zaliha: Z"). Pretvaranje neobrađene tabele u običan tekst je često neophodno.
  • Šifra: Podijeliti po granicama funkcije/klase; Nemojte skidati funkciju s puta.
  • Snimanje razgovora/ulaznice: Podijelite porukom ili krugom razgovora; Održavajte znanje o tome ko je šta rekao.

# chunks-based (konceptualni) chunks = bol( text, target_size=450, # token overlap=70, # token brackets=["\n\n", "\n", ". ", " "] # pasus prvi, riječ zadnja)

Dodajte metapodatke svakoj stazi

Komadovanje nije samo "podela"; je obogatiti svaki komad. Svaka oznaka koju pričvrstite na stazu je zlata vrijedna za buduće filtriranje i citiranje izvora.

# Obogaćeni dio (konceptualni){ "text": "Godišnje plaćeno odsustvo je 14 dana sa 1-5 godina radnog staža...", "metapodaci": { "izvor": "ik_el_kitabi_v7.pdf", "section": "5.2 Godišnji odmor", "stranica": 23, "datum": "2025": "2025"- " "interno" }}

Još jedna moćna tehnika je dodavanje kontekstualnog zaglavlja: pisanje naslova poglavlja kojem pripada na početku svakog dijela. Stoga je čak i nepovezani komad poput "For 14 days" i bolje ugrađen i značajniji kao "Godišnji odmor - 14 dana".

Slabo lomljenje / jako lomljenje

Slab (slijepi hardcut, bez metapodataka):

Skratite tekst svakih 1000 znakova. Zadrži samo tekst.# Rezultat: tabele su podijeljene na sredini, "14 dana" ostaje bez konteksta,# ne zna se iz kojeg dokumenta dolazi, ne može se napraviti filter.

Moćan (svjestan strukture + zaglavlje + metapodaci):

Podijelite dokument po naslovima; dodajte naslov odjeljka svakom dijelu; priložite izvor, stranicu, datum i metapodatke o privatnosti; pretvoriti redove tabele u običan tekst sa njihovim zaglavljima.# Rezultat: fokusiran, kontekstualan, filtriran, izvorni.

Tri mini futrole

Slučaj 1 — Slikarska katastrofa. Finansijski tim podijelio je cjenovnik od 200 stranica slijepim rezanjem; redovi tabele su nasumično podeljeni. "Koja je cijena proizvoda X?" Model je pročitao pogrešnu liniju i dao pogrešnu cijenu (9 od 12 slučajeva je pogrešno). Kada sam konvertovao redove tabele u običan tekst u formatu „Proizvod: … | Cena: … | Jedinica: …“ greška se smanjila na 0 od 12.

Slučaj 2 — Izuzetno veliki komad. Na wikiju, svaka stranica je napravljena od jednog dijela (neki kažu 3.000 tokena). Ugradnja je zamagljena jer na jednoj stranici ima "odsustvo", "prekovremeni rad" i "platni spisak"; Odjeljak o radnom vremenu je također došao u igru ​​u vezi sa pitanjem odsustva. Kada su stranice podijeljene na srednje veličine prema naslovu, recall@5 se povećao sa 64% na 91%.

Slučaj 3 — Skraćena rečenica bez preklapanja. 250 tokena fiksni rez za pravni tim, bez preklapanja. Kritička definicija pala je tačno na granicu dva dela i podelila se na dva; Ni jedno ni drugo ne sadrži potpun odgovor. Kada se doda 60 preklapanja tokena, ista definicija je ostala netaknuta u jednom komadu i vraćen je tačan odgovor.

Uobičajene greške

  • Slijepi fiksni rez: dijeli rečenice i tabele u sredini; smisao je izgubljen.
  • Ostavljanje preklapanja na nuli: Informacije koje padaju na granicu se dijele i gube.
  • Nedodavanje metapodataka: Filtriranje i prikaz izvora postaju nemogući.
  • Ostavljanje tablica neobrađenih: model ne može riješiti strukturu tablice; Pretvorite redove u običan tekst.
  • Nametanje jedne strategije: PDF, kod i tabela se ne dele istom metodom; Prilagodite se žanru.
Oprez: Ne postavljajte Chunking jednom i zaboravite. Ponovo izmjerite kvalitetu preuzimanja kako stignu novi tipovi dokumenata (ulaznice iz novog sistema, skenirani PDF-ovi). Loši ulazni podaci znače loš odgovor („smeće ulazi, smeće izlazi“).

Ukratko

  • Komad je najmanja jedinica za pronalaženje; Ni prevelika ni premala – trebalo bi da bude uravnotežena prema sadržaju.
  • Veličina komada označava ravnotežu fokusa i konteksta; Preklapanje upravlja gubitkom granica.
  • Grupisanje zasnovano na zagradama i svesno strukture je početna tačka većine generacijskih sistema; semantičko razdvajanje je dobrog kvaliteta, ali skupo.
  • Tipovi kao što su tabela, skripta i chat zahtevaju sopstvene strategije; Pretvorite tabele u običan tekst.
  • Dodajte metapodatke o izvoru/datumu/poglavlju/privatnosti i naslovu odjeljka svakoj stazi; Ovo je osnova filtriranja i citiranja.

Zadatak aplikacije

Razdvojite dio dokumenta koji odaberete na tri različita načina: (1) mali komadi od 200 žetona, (2) srednji dijelovi od 500 žetona (70 tokena se preklapaju), (3) pojedinačni veliki dijelovi. Postavite ista 3 pitanja za svaku strategiju, ručno označite koji dio želite unijeti i zapišite obrazloženje koja strategija najbolje funkcionira za taj dokument. Zatim dodajte najmanje četiri polja metapodataka i “naslov poglavlja” svakoj stazi. Ako dokument sadrži tabelu, pretvorite red tabele u običan tekst u formatu "polje:vrijednost".

kontrolna lista

  • [ ] Mogu reći da je komad najmanja jedinica za pronalaženje, a veličina je balans fokus-kontekst.
  • [ ] Znam zašto Preklapanje sprečava gubitak granica.
  • [ ] Mogu razlikovati između zagrada zasnovanog, semantičkog i strukturno svjesnog komadanja.
  • [ ] Mogu prilagoditi strategiju za stol, kod i chat.
  • [ ] Pojačavam pronalaženje dodavanjem metapodataka i naslova poglavlja svakoj numeri.