Gå til indhold
atlas

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.

  1. Token
  2. →Kontekstvindue
  3. →Opdeling i bidder (chunking)

Relationer

Bruges sammen med
Embedding-model

Kilder og videre læsning

Officiel dokumentation

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…

Atlas er i beta.