Chunking
Bevor ein Dokument durchsuchbar wird, muss es in kleinere Stücke zerlegt werden — Chunks. Die Größe und der Überlapp sind die zwei wichtigsten Stellschrauben.
5 Chunks bei einer durchschnittlichen Länge von ~140 Zeichen.
Chunk 1
Retrieval-Augmented Generation kombiniert klassisches Information Retrieval mit moderner Generierung durch Large Language Models. Die zentrale Idee ist einfach: Bevor das Modell an
Chunk 2
le Idee ist einfach: Bevor das Modell antwortet, wird eine Wissensbasis nach relevanten Dokumenten durchsucht. Diese Dokumente werden dem Modell als Kontext mitgegeben.
Die Heraus
Chunk 3
dell als Kontext mitgegeben.
Die Herausforderung dabei: Wie zerlegt man die Wissensbasis in durchsuchbare Einheiten? Zu klein, und der Kontext geht verloren. Zu groß, und das Embe
Chunk 4
ext geht verloren. Zu groß, und das Embedding wird unscharf. Hier kommt Chunking ins Spiel.
Typische Chunk-Größen liegen zwischen 200 und 1000 Tokens. Ein Overlap zwischen aufeina
Chunk 5
000 Tokens. Ein Overlap zwischen aufeinanderfolgenden Chunks verhindert, dass wichtige Information genau an einer Grenze abgeschnitten wird.
Warum eigentlich? — Warum überhaupt überlappen?
Ohne Overlap kann ein wichtiger Satz genau an der Chunk-Grenze durchgeschnitten werden — das Embedding eines Chunks „…in den Prompt“ bedeutet etwas anderes als „in den Prompt eingebaut und mit Quellenangabe versehen“. Overlap (typischerweise 10–20 % der Chunk-Größe) sorgt dafür, dass beide Varianten an einem Chunk-Rand landen.
Häufiger Denkfehler — Naives zeichenbasiertes Chunking
Was du hier siehst, schneidet stumpf nach Zeichenzahl — Sätze, Absätze und sogar Wörter werden mitten durchgeschnitten. In der Praxis chunkt man besser semantisch: an Satz- oder Absatzgrenzen, Markdown-Headings, oder mit einem rekursiven Splitter (LangChain
RecursiveCharacterTextSplitter), der mehrere Separatoren durchprobiert.Tiefer rein — Token vs. Zeichen
LLMs zählen in Tokens, nicht in Zeichen. Ein Token ist durchschnittlich ~4 Zeichen (Englisch) bzw. ~2 Zeichen (Deutsch). Embedding-Modelle haben harte Token-Limits (typisch 8.192 für text-embedding-3-small). Wenn du Chunks an Token-Grenzen schneiden willst, brauchst du einen Tokenizer wie
tiktoken.