Gevinster:
- Evaluer numerisk chunk-størrelse, overlapping og semantiske chunking-avveininger
- Velge passende chunking-strategi for ulike dokumenttyper (PDF, tabell, kode, chat-logg)
- Styrk gjenfinningskvalitet og filtrering ved å legge til metadata til hver del
Dette er det mest oversett, men mest avgjørende trinnet i RAG: hvordan du bryter ned dokumentet. Dette kalles chunking. Selv om du gir det samme dokumentet til samme modell, returnerer gjenfinningen feil stykke på grunn av dårlig chunking, og modellen vil aldri gi et godt svar. I denne enheten dekker vi fragmenteringsstrategier, hvordan du tilpasser dem etter dokumenttype, og hvordan du legger til meningsfulle metadata til hvert fragment.
Hvorfor makulerer vi?
Det er tre grunner. For det første konverterer innebygde modeller tekst opp til en viss lengde til en meningsfull vektor; Hvis et helt kapittel på 40 sider er stappet inn i en enkelt vektor, blir betydningen "uskarp". For det andre ønsker vi å gi modellen kun den delen som trengs som kontekst; å overlevere hele dokumentet er dyrt og distraherende. For det tredje, for at gjenfinning skal være presis, må søkeenheten være liten og fokusert.
Så chunk er den minste enheten for gjenfinning. Den skal ikke være for stor eller for liten – akkurat passe.
Klumpstørrelse og overlappingsbalanse
Det er to hovedinnstillinger: delstørrelse (hvor mange tokens/ord vil være i en del) og overlapping (delen som deles av nabobiter).
Svært små biter (f.eks. 100 tokens): fokusert, men frakoblet kontekst. Han sier «i 14 dager», men hva 14 dager er står igjen i forrige setning. Svært store biter (f.eks. 2000 tokens): bevarer konteksten, men mange tråder er blandet inn; innebygging blir rotete og irrelevante emner kommer sammen.
Overlapping løser grenseproblemet. Hvis en setning faller nøyaktig på grensen til to deler, deles den i to uten å overlappe og dens betydning går tapt. Overlapping av 50-100 tokens sikrer at informasjonen som faller innenfor grensen forblir intakt i minst én del.
Klump størrelse
Fordel
Ulempe
passende innhold
Liten (100–250 tokens)
Høy følsomhet, fokusert
Konteksten kan bryte
FAQ, korte artikler, definisjoner
Medium (300–600 tokens)
Balanse; de fleste scenarier
—
Prosedyrer, policytekster
Stor (800–1500 tokens)
Kontekstintegritet
uskarp innebygging
Narrativ, lange forklaringer
Tips: Hvis du ikke vet hvor du skal begynne, start med 400-500 token chunk og 50-80 token overlapping; mål og juster deretter med dine egne data. Den "riktige" størrelsen er ikke universell, det avhenger av konteksten.
Chunking Strategier
Fast størrelse: Trimmer teksten for hvert N-tegn. Det er enkelt og raskt, men kan avbryte midt i setningen.
Separatorbasert (rekursiv/separator): Deler etter avsnitt og deretter setningsgrenser; Det bevarer integriteten til mening bedre. De fleste produksjonssystemer starter med dette.
Semantisk chunking: Den ser på innebyggingen av setningene og deler dem der emneforandringen skjer. Det er den høyeste kvaliteten, men den dyreste metoden; Med store volumer øker transaksjonskostnadene.
Strukturbevisst: Bruker dokumentstruktur som overskrifter, seksjoner, tabeller. For eksempel, å dele et Markdown-dokument etter overskrifter sikrer at hver del har sin egen overskrift.
Tilpasning etter dokumenttype
Ikke alle dokumenter er like. Strategien varierer etter type:
- PDF/policytekst: Bokmerkebasert, middels størrelse. Fjern gjentakelser fra topp/bunn (topptekst/bunntekst).
- Tabeller: Ikke ta linjen ut av kontekst; hold hver rad med overskriftsinformasjon ("Vare: X, Pris: Y, Lager: Z"). Konvertering av råtabellen til ren tekst er ofte viktig.
- Kode: Delt etter funksjon/klassegrenser; Ikke kutt en funksjon ut av veien.
- Chat/billettopptak: Delt etter melding eller samtalerunde; Opprettholde kunnskap om hvem som sa hva.
# brakett-baserte chunking (konseptuelle) chunks = bol( text, target_size=450, # token overlapp=70, # token brackets=["\n\n", "\n", ". ", " "] # avsnitt først, ordet sist)
Legg til metadata til hvert spor
Chunking er ikke bare "deling"; er å berike hvert stykke. Hver tag du fester til sporet er gull verdt for fremtidig filtrering og kildehenvisning.
# Enriched chunk (konseptuell){ "text": "Årlig betalt permisjon er 14 dager med 1-5 års tjeneste...", "metadata": { "source": "ik_el_kitabi_v7.pdf", "section": "5.2 Årlig permisjon", "page": 23, "date": "6", "IK:privacy", "2025:privacy "internt" }}
En annen kraftig teknikk er å legge til en kontekstuell overskrift: skriv tittelen på kapitlet den tilhører i begynnelsen av hvert stykke. Dermed er selv et usammenhengende stykke som "For 14 days" både bedre innebygd og mer meningsfylt som "Annual Leave - 14 days."
Svak Chunking / Sterk Chunking
Svak (blind hardcut, ingen metadata):
Kutt av tekst hvert 1000. tegn. Behold kun teksten.# Resultat: Tabeller er delt på midten, "14 dager" forblir uten kontekst,# det er ikke kjent hvilket dokument det kom fra, ingen filter kan lages.
Kraftig (strukturbevisst + overskrift + metadata):
Del dokumentet etter overskrifter; legg til seksjonstittel til hver del; legg ved kilde, side, dato og personvernmetadata; konverter tabellrader til ren tekst med overskriftene.# Resultat: fokusert, kontekstuell, filtrerbar, kildevennlig.
Tre minivesker
Tilfelle 1 - Malerikatastrofe. Et økonomiteam delte den 200 sider lange prislisten med blind hard cutting; tabellrader ble delt tilfeldig. "Hva er prisen på produkt X?" Modellen leste feil linje og ga feil pris (9 av 12 tilfeller er feil). Da jeg konverterte tabellradene til ren tekst i formatet "Produkt: … | Pris: … | Enhet: …” reduserte feilen til 0 av 12.
Tilfelle 2 — Ekstremt stor del. I en wiki er hver side laget av en enkelt del (noen sier 3000 tokens). Innebyggingen er uskarp fordi det er "permisjon", "overtid" og "lønn" på én side; Arbeidstidsseksjonen kom også inn når det gjelder permisjonsspørsmålet. Når sidene ble delt inn i middels størrelse etter tittel, økte recall@5 fra 64 % til 91 %.
Sak 3 — Avkuttet setning uten overlapping. 250 token fast kutt for et juridisk team, ingen overlapping. En kritisk definisjon falt rett på grensen til to deler og delt i to; Verken det ene eller det andre inneholder det fullstendige svaret. Når 60 tokens overlapping ble lagt til, forble den samme definisjonen intakt i ett stykke, og det riktige svaret ble returnert.
Vanlige feil
- Blind fast kutt: Deler setninger og tabeller på midten; mening går tapt.
- La overlappingen stå på null: Informasjon som faller på grensen deles og går tapt.
- Legger ikke til metadata: Filtrering og kildevisning blir umulig.
- Forlater tabeller rå: Modellen kan ikke løse tabellstrukturen; Konverter linjer til ren tekst.
- Påtvinge én strategi: PDF, kode og tabell deles ikke med samme metode; Tilpass seg sjangeren.
Forsiktig: Ikke still Chunking én gang og glem det. Mål gjenfinningskvaliteten på nytt etter hvert som nye dokumenttyper kommer (billetter fra et nytt system, skannede PDF-er). Dårlige inndata betyr dårlig respons ("søppel inn, søppel ut").
Oppsummert
- Chunk er den minste enheten for gjenfinning; Verken for stor eller for liten – den bør balanseres etter innholdet.
- Klumpstørrelse indikerer fokus-kontekstbalanse; Overlapping styrer grensetap.
- Brakettbasert og strukturbevisst chunking er utgangspunktet for de fleste generasjonssystemer; semantisk chunking er god kvalitet, men dyrt.
- Typer som tabell, skript og chat krever sine egne strategier; Konverter tabeller til ren tekst.
- Legg til kilde/dato/kapittel/personvernmetadata og seksjonstittel til hvert spor; Dette er grunnlaget for filtrering og sitering.
Søknadsoppgave
Bryt en del av dokumentet du velger på tre forskjellige måter: (1) små biter med 200 tokens, (2) mellomstore biter på 500 tokens (70 tokens overlapper), (3) enkle store brikker. Still de samme 3 spørsmålene for hver strategi, merk manuelt hvilken del du skal ta med, og skriv ned begrunnelsen for hvilken strategi som fungerer best for det dokumentet. Legg deretter til minst fire metadatafelt og en "kapitteltittel" til hvert spor. Hvis dokumentet inneholder en tabell, konverter en tabellrad til ren tekst i formatet "felt:verdi".
sjekkliste
- [ ] Jeg kan fortelle at chunk er den minste enheten for gjenfinning og størrelse er fokus-kontekstbalansen.
- [ ] Jeg vet hvorfor overlapping forhindrer grensetap.
- [ ] Jeg kan skille mellom brakett-basert, semantisk og strukturbevisst chunking.
- [ ] Jeg kan tilpasse strategien for tabell, kode og chat.
- [ ] Jeg forsterker gjenfinningen ved å legge til metadata og kapitteltittel til hvert spor.