Opdeling i bidder (chunking)
Også kendt som: tekstopdeling
At skære lange dokumenter op i mindre afsnit, før de gemmes, så en søgning kan hente netop den del, der besvarer et spørgsmål.
Kladde - dette opslag er endnu ikke gennemgået.
Formelt
Det trin, der deler kildedokumenter op i stykker af en valgt størrelse, målt i tokens og ofte med lidt overlap, hvor hvert stykke får sin egen embedding og gemmes og findes for sig.
Forklaret enkelt
Som at klippe en lang avisartikel i stykker til en mappe - hvert stykke er hurtigt at finde, men klip det forkerte sted, og ét stykke mister slutningen.
I praksis
En IT-medarbejder i en kommune deler den 200 sider lange personalehåndbog op langs overskrifterne i stykker på cirka 500 tokens, så et spørgsmål om ferie henter feriereglerne og ikke hele bogen.
Hvorfor det betyder noget
Dårlige snit er en stille og almindelig årsag til dårlige svar - en regel, der er skilt fra sine undtagelser, læses som hele sandheden, og for store stykker spilder kontekstvinduet.
Teknisk uddybning
Den enkleste strategi er et glidende vindue af fast størrelse: Tokenstrømmen deles for hver N tokens med et overlap på M tokens, så en sætning, der skæres over ved en grænse, står helt i mindst ét stykke. Rekursiv opdeling, som er standard i flere RAG-frameworks, prøver et hierarki af skilletegn (sektionsskift, tomme linjer, sætningsslut og til sidst mellemrum) og går kun videre til et finere skilletegn, når et stykke stadig er for stort. Strukturbevidst chunking bruger dokumentets egen opmærkning: Markdown- eller HTML-overskrifter, DOM'en, layoutanalyse af PDF'er og regler som aldrig at dele en tabel, en nummereret liste eller en kodeblok. Semantisk chunking laver embeddings af sætningerne i rækkefølge og starter et nyt stykke, hvor ligheden mellem naboer falder under en tærskel. Ingen af dem er bedst i alle tilfælde; valget afhænger af dokumenttypen og skal måles.
De hårde begrænsninger kommer fra embedding-modellen og kontekstvinduet. Mange BERT-afledte embedding-modeller tager højst 512 tokens og afkorter alt længere uden varsel, så et stykke, der ser fint ud målt i tegn, kan miste sin anden halvdel, når embeddingen laves; antallet af tokens skal tælles med embedding-modellens egen tokenizer, ikke generatorens. Meget små stykker giver præcise embeddings, men mister den omgivende kontekst, mens store stykker udvander embeddingen med flere emner og bruger af kontekstbudgettet. Parent-child- eller "small-to-big"-retrieval løser en del af den spænding ved at indeksere små stykker til matchning, men sende hele det omsluttende afsnit til modellen.
To teknikker går direkte efter den tabte kontekst. Late chunking (Günther m.fl., 2024) kører først en embedding-model med lang kontekst over hele dokumentet og samler derefter token-embeddings pr. stykke, så hver stykkevektor er påvirket af teksten omkring den. Contextual retrieval, som Anthropic offentliggjorde i september 2024, bruger en sprogmodel til at sætte en kort, dokumentbevidst beskrivelse foran hvert stykke, før der laves embedding og BM25-indeks; i Anthropics evaluering reducerede det andelen af mislykkede top-20-genfindinger med 49 % og med 67 % i kombination med genrangering.
I praksis bør hvert stykke bære metadata: kildedokumentets ID og version, titel og overskriftssti, side eller anker til kildehenvisninger, sprog og kildens adgangsmærkater. Uden dem kan forankrede svar ikke henvise præcist, rettighedsfiltrering kan ikke anvendes ved forespørgslen, og sletning eller opdatering af et dokument kan ikke fjerne dets stykker. Typiske stille fejl er PDF-udtræk, der fletter to spalter sammen eller gentager sidehoveder og -fødder, pronominer som "kassen", der mister deres henvisning, når et stykke skæres væk fra sin overskrift, og overlap, der giver næsten identiske stykker og spilder kontekstvinduet. Enhver ændring af chunking-strategien kræver, at hele korpusset får nye embeddings, så strategier sammenlignes bedst offline på et sæt mærkede spørgsmål med genfindingsrecall ved k.
Hvad du bør lære først
Alt det, dette bygger på - grundlaget først.
- Token
- →Kontekstvindue
- →Opdeling i bidder (chunking)
Relationer
- Forudsætter
- TokenKontekstvindue
- Bruges sammen med
- Embedding-model
Kilder og videre læsning
Officiel dokumentation
- Introducing Contextual Retrieval · Anthropic
Opslagsværker
- Gao et al. (2023), Retrieval-Augmented Generation for Large Language Models - A Survey
- Lewis et al. (2020), Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
Hvor dataene kommer fra
Dette opslag er skrevet af en AI ud fra kilderne ovenfor og er endnu ikke gennemgået af et menneske. Brug det som udgangspunkt, og tjek alt vigtigt mod kilderne.
Se gennemgangskøenForeslå en rettelse på GitHubDette begreb som JSON
Test dig selv
Indlæser…