Chunking
Einleitung
Lange Dokumente passen nicht in ein Sprachmodell. Deshalb teilt man sie vor der Verarbeitung in kleinere Abschnitte. Dieser Schritt heißt Chunking. Gut gemachtes Chunking ist einer der wichtigsten Hebel, um die Qualität einer RAG-Pipeline zu verbessern.
Chunking - In A Nutshell
Chunking bedeutet, ein Dokument in Abschnitte bestimmter Länge zu zerlegen. Jeder Abschnitt wird später in einen Embedding-Vektor umgewandelt und in der Vektordatenbank gespeichert. Die Suche findet dann nicht das ganze Dokument, sondern den passenden Abschnitt.
Wichtig ist, dass die Abschnitte in sich sinnvoll sind. Ein mitten im Satz geschnittener Text liefert schlechte Treffer. Ein guter Chunk enthält einen Gedanken, eine Informationseinheit oder einen Absatz, der für sich verständlich ist.
Wichtige Begriffe und Komponenten
| Begriff | Bedeutung |
|---|---|
| Chunk | Einzelner Textabschnitt |
| Chunk Size | Maximale Größe eines Chunks in Zeichen oder Token |
| Chunk Overlap | Anzahl Zeichen oder Token, die zwei benachbarte Chunks teilen |
| Token | Verarbeitungseinheit des Sprachmodells |
| Semantic Chunking | Aufteilung nach Bedeutung statt fester Größe |
Praxisrelevanz
Warum ist Chunking so wichtig?
Schlechtes Chunking führt zu schlechten Antworten. Wenn ein Abschnitt mitten im Kontext endet, fehlen dem Modell wichtige Informationen. Wenn ein Chunk zu lang ist, verliert sich die Suche in generischen Passagen. Wenn er zu kurz ist, fehlen Zusammenhänge.
Ein gutes Beispiel ist ein Vertrag. Wenn ein Chunk am Ende von Paragraph 2.1 endet und Paragraph 2.2 im nächsten beginnt, könnte das Modell die Verknüpfung verpassen. Eine Überlappung oder eine Aufteilung nach Paragraphen hilft hier.
Häufige Chunking-Strategien
| Strategie | Beschreibung | Wann sinnvoll |
|---|---|---|
| Feste Größe | Jeder Chunk hat eine bestimmte Länge | Schnelle erste Version |
| Überlappung | Chunks überlappen sich um wenige Sätze | Zusammenhänge erhalten |
| Absatzweise | Aufteilung nach Absätzen | Strukturierte Dokumente |
| Semantisch | Aufteilung nach Bedeutungsgrenzen | Hohe Qualität, mehr Aufwand |
| Rekursiv | Beginne mit großen Einheiten, teile bei Bedarf | Flexible Anpassung |
Beispiel: Python mit LangChain
from langchain.text_splitter import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=500,
chunk_overlap=50,
separators=["\n\n", "\n", ". ", " ", ""]
)
chunks = text_splitter.split_text(document)
Dieses Beispiel teilt einen Text in Abschnitte von etwa 500 Zeichen. Bei Absätzen, Zeilenumbrüchen und Sätzen wird bevorzugt getrennt. Die Überlappung von 50 Zeichen sorgt dafür, dass Zusammenhänge am Übergang nicht verloren gehen.
Größenwahl
Eine typische Chunk-Größe liegt zwischen 200 und 1.000 Token. Kleine Chunks sind präziser bei der Suche, liefern aber weniger Kontext. Große Chunks geben mehr Kontext, können aber irrelevante Informationen enthalten.
Für deutsche Texte mit längeren Wortzusammensetzungen eignen sich oft 400 bis 800 Zeichen. Bei technischen Dokumentationen oder Gesetzestexten sind strukturierte Chunks nach Überschriften besser.
Hardware-, Kosten- und Sicherheitsbetrachtung
Chunking selbst ist ressourcensparend. Es verändert den Speicherbedarf der Vektordatenbank, weil mehr kleine Chunks gespeichert werden. Die Anzahl der Einträge steigt, die Größe der Embeddings bleibt pro Eintrag gleich. Kosten entstehen kaum. Sicherheitstechnisch ist alles lokal, solange Embeddings und Datenbank auf dem eigenen Rechner bleiben.
Weitere KI Infos und Themen
- Chunking teilt Dokumente in sinnvolle Abschnitte.
- Überlappungen bewahren Zusammenhänge am Chunk-Übergang.
- Strukturiertes Chunking nach Absätzen ist oft besser als reine Längenaufteilung.
- Die richtige Chunk-Größe hängt vom Dokumenttyp ab.
Mehr zu Embeddings findest Du in Embedding-Modelle und zu Vektordatenbanken in Vektordatenbanken.
FAQ - Typische Fragen zum Chunking
Was ist die beste Chunk-Größe?
Es gibt keine allgemein beste Größe. Für deutsche Texte sind oft 400 bis 800 Token brauchbar. Testen mit eigenen Fragen ist wichtig.
Sollte ich immer Überlappung verwenden?
Ja, eine kleine Überlappung von 10 bis 20 Prozent hilft, Zusammenhänge am Abschnittsübergang nicht zu verlieren.
Kann ich Chunks nach Überschriften bilden?
Ja, das ist oft besser als reine Längenaufteilung. Markdown- oder HTML-Strukturen eignen sich dafür besonders.
Was passiert bei zu großen Chunks?
Die Suche findet möglicherweise lange, generische Abschnitte. Das Modell bekommt zu viel Kontext und die Antworten werden ungenauer.
Tools und Weiterführendes
LangChain, LlamaIndex und unstructured bieten starke Chunking-Funktionen. Für einfache Fälle reichen auch Python-Skripte mit regulären Ausdrücken.
Quellen
- LangChain Text Splitter
- LlamaIndex Chunking-Dokumentation
- Unstructured Library


