{"licence":{"name":"CC BY-SA 4.0","spdx":"CC-BY-SA-4.0","url":"https://creativecommons.org/licenses/by-sa/4.0/","attribution":"Atlas, a bilingual technical dictionary (https://cmaintz.github.io/tech-atlas/)"},"id":"ai/chunking","url":{"en":"https://cmaintz.github.io/tech-atlas/en/terms/ai/chunking/","da":"https://cmaintz.github.io/tech-atlas/da/terms/ai/chunking/"},"term":{"en":"Chunking","da":"Opdeling i bidder (chunking)"},"aka":{"en":["text splitting"],"da":["tekstopdeling"]},"domain":["ai"],"cluster":"retrieval","layer":"application","status":"current","summary":{"en":"Cutting long documents into smaller passages before storing them, so a search can return just the part that answers a question.","da":"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."},"body":{"formal":{"en":"The step that splits source documents into pieces of a chosen size, counted in tokens and often overlapping a little, each of which gets its own embedding and is stored and found on its own.","da":"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."},"plain":{"en":"Like cutting a long newspaper story into clippings for a folder - each clipping is quick to find, but cut in the wrong place and one clipping loses the ending.","da":"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."},"inPractice":{"en":"An IT employee in a municipality splits the 200-page staff handbook along its headings into pieces of about 500 tokens, so a question about holiday brings up the holiday rules, not the whole book.","da":"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."},"whyItMatters":{"en":"Bad cuts are a quiet, common reason for poor answers - a rule split from its exceptions reads as the full truth, and pieces that are too big waste the context window.","da":"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."}},"deepDive":{"en":"The simplest strategy is a fixed-size sliding window: split the token stream every N tokens with an overlap of M tokens so that a sentence cut at a boundary appears whole in at least one chunk. Recursive splitting, the default in several RAG frameworks, tries a hierarchy of separators (section breaks, blank lines, sentence ends, then spaces) and only falls back to a finer separator when a piece is still too large. Structure-aware chunking uses the document's own markup: Markdown or HTML headings, the DOM, PDF layout analysis, and rules such as never splitting a table, a numbered list or a code block. Semantic chunking embeds consecutive sentences and starts a new chunk where the similarity between neighbours drops below a threshold. None of these is universally best; the right choice depends on document type and must be measured.\n\nHard constraints come from the embedding model and the context window. Many BERT-derived embedding models accept at most 512 tokens and silently truncate anything longer, so a chunk that looks fine in characters may lose its second half at embedding time; token counts must be computed with the embedding model's own tokenizer, not the generator's. Very small chunks embed precisely but lose surrounding context, while large chunks dilute the embedding with several topics and consume context budget. Parent-child or \"small-to-big\" retrieval resolves part of this tension by indexing small chunks for matching but passing the enclosing section to the model.\n\nTwo techniques address lost context directly. Late chunking (Günther et al., 2024) runs a long-context embedding model over the whole document first and then pools token embeddings per chunk, so each chunk vector is conditioned on the text around it. Contextual retrieval, published by Anthropic in September 2024, uses a language model to prepend a short, document-aware description to every chunk before embedding and BM25 indexing; in Anthropic's evaluation this reduced the top-20 retrieval failure rate by 49 %, and by 67 % when combined with reranking.\n\nIn practice each chunk should carry metadata: source document ID and version, title and heading path, page or anchor for citations, language, and the access-control labels of the source. Without them grounded answers cannot cite precisely, permission filtering cannot be applied at query time, and deleting or updating a document cannot remove its chunks. Common silent failures include PDF extraction that interleaves two columns or repeats headers and footers, pronouns such as \"the fund\" that lose their referent when a chunk is cut away from its heading, and overlap that returns near-duplicate chunks and wastes the context window. Any change of chunking strategy requires re-embedding the whole corpus, so strategies are best compared offline on a labelled question set using retrieval recall at k.","da":"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.\n\nDe 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.\n\nTo 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.\n\nI 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."},"edges":[{"type":"requires","to":"ai/token","confidence":"high","strength":"normal"},{"type":"requires","to":"ai/context-window","why":{"en":"Piece size is chosen so that the handful of pieces found for a question fit in the context window next to the question itself.","da":"Stykkernes størrelse vælges, så den håndfuld stykker, der findes til et spørgsmål, kan være i kontekstvinduet sammen med selve spørgsmålet."},"confidence":"high","strength":"primary"},{"type":"part-of","to":"ai/retrieval-augmented-generation","why":{"en":"Documents are cut into pieces when they are loaded, before anything can be stored or searched.","da":"Dokumenterne skæres i stykker, når de lægges ind, før noget kan gemmes eller søges i."},"confidence":"high","strength":"normal"},{"type":"used-with","to":"ai/embedding-model","confidence":"high","strength":"normal"}],"depth":2,"sources":[{"title":"Gao et al. (2023), Retrieval-Augmented Generation for Large Language Models - A Survey","tier":"reference"},{"title":"Lewis et al. (2020), Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks","tier":"reference"},{"title":"Introducing Contextual Retrieval","url":"https://www.anthropic.com/engineering/contextual-retrieval","tier":"official-doc","publisher":"Anthropic"}],"draft":true}