Fortgeschritten 11 Min.Optimierung

Strategien für chunking

Direkte Antwort

Für ein lokales RAG beginnen Sie mit Chunks von 300 bis 500 Tokens und einer Überlappung von 0 bis 10 %. Teilen Sie den Text an Absatz- und Überschriftengrenzen statt nach einzelnen Zeichen auf und messen Sie die Ergebnisse anhand Ihrer eigenen Fragen, bevor Sie die Einstellungen anpassen. Für semantisches Chunking ist nicht nachgewiesen, dass sich der Aufwand lohnt: Eine Studie aus dem Jahr 2024 kommt zu dem Schluss, dass die Verbesserungen den zusätzlichen Rechenaufwand nicht rechtfertigen. Entscheidend ist, den Text an seinen natürlichen Grenzen aufzuteilen.

Die Aufteilung der Dokumente in Abschnitte bestimmt, was die Suche finden kann: Ein an der falschen Stelle geteilter Abschnitt enthält nie die vollständige Antwort; in einem zu großen Abschnitt geht die Antwort im Rauschen unter. Dieser Leitfaden vergleicht gängige Strategien, nennt auf veröffentlichten Studien beruhende Ausgangsgrößen, weist auf die Fallstricke bei den Einheiten (Tokens oder Zeichen) hin und schlägt ein Prüfverfahren vor, mit dem Sie Ihre Wahl anhand Ihrer Dokumente überprüfen können.

Von Mohamed Meguedmi·Aktualisierung 2026-09-30·Unter Windows, macOS und Linux getestet

#Warum Chunking genauso wichtig ist wie das Embedding-Modell

Chunking bezeichnet das Aufteilen eines Dokuments in Textabschnitte vor deren Indexierung: Jeder Abschnitt erhält einen Vektor, und bei der Suche wird ein Abschnitt gefunden und anschließend an das Sprachmodell übergeben, niemals das gesamte Dokument. Alles Weitere hängt von dieser Aufteilung ab. Wenn der Satz, der die Frage beantwortet, auf zwei Abschnitte verteilt wird, enthält keiner von beiden ihn vollständig, und die Suche findet ihn nicht; wenn ein Abschnitt drei Themen vermischt, ist sein Vektor ein unscharfer Mittelwert, der keiner Frage besonders ähnlich ist. Ein leistungsfähigeres Embedding kann eine fehlerhafte Aufteilung nicht beheben, da es nur das vektorisieren kann, was ihm übergeben wird.

Eine Studie von Chroma zur Bewertung von Aufteilungsstrategien zeigt: Heuristische Methoden wie der RecursiveCharacterTextSplitter liefern in der Praxis oft gute Ergebnisse, wenn sie richtig parametrisiert sind, und die Ergebnisse variieren deutlich je nach gewählter Größe und Überlappung. Dieser Leitfaden verspricht daher keinen allgemeingültigen, bezifferten Zugewinn: Verlässlich ist nur, die Ergebnisse anhand Ihrer eigenen Dokumente zu messen.

i
Ein guter Chunk
Ein guter Textabschnitt enthält einen vollständigen Gedanken, der für sich allein verständlich ist. Ist der Abschnitt zu klein, wird der Gedanke abgeschnitten und der Vektor unscharf; ist er zu groß, vermischen sich mehrere Gedanken und die Suche liefert irrelevante Treffer.

#Welche Chunk-Größe wählen

Das Kit Lokales RAG

Ihre Dokumente, Ihre KI: ein zuverlässiges lokales RAG für Ihre PDFs, Notizen und E-Mails – ohne Daten in die Cloud zu senden.

  • Lebenslanger Online-Zugang
  • PDF + Dateien
  • Lebenslange Updates

Es gibt keine universell passende Größe, aber es gibt Anhaltspunkte. In der Studie von Chroma übertrifft die rekursive Strategie die Aufteilung nach Tokens bei Größen von höchstens 400 Tokens ohne Überlappung; bei größeren Größen und bei Überlappung verhält sie sich anders. Die Standardkonfiguration des Dateisuchtools von OpenAI – 800 Tokens mit einer Überlappung von 400 Tokens – erzielt in diesem Test einen leicht unterdurchschnittlichen Recall und die niedrigsten Werte bei den anderen Metriken. Die folgenden Anhaltspunkte leiten sich daraus ab, ohne den Anspruch, für Ihr Korpus exakt zu sein.

Ausgangsgrößen je nach Dokumenttyp und Art der Frage
GrößeEignet sich fürRisiko
200 bis 300 TokensPräzise Faktenfragen (ein Datum, eine Klausel, ein Wert) in informationsreichen DokumentenDer Kontext rund um die Antwort geht verloren; denken Sie daran, den Abschnittstitel hinzuzufügen
300 bis 500 TokensAllgemeiner Ausgangspunkt für Dokumentation, Verfahren und ArtikelGeringe Risiken; es ist der Bereich, der zuerst getestet werden sollte
500 bis 800 TokensArgumentative Texte, deren Ideen sich über mehrere Absätze erstreckenIm Vektor verschwimmen mehrere Ideen; der Prompt füllt sich schneller
Mehr als 1.000 TokensSelten für die Suche geeignet; der übergeordneten Ebene bei einer hierarchischen Aufteilung vorbehaltenZu allgemeiner Vektor, schwer zu sortierende Textpassagen
→
Startpunkt
Beginnen Sie mit 400 Tokens und einer Überlappung von 0 bis 50 Tokens, testen Sie 250 und 700 Tokens und ändern Sie die Einstellung erst, nachdem Sie den Recall anhand Ihrer Fragen gemessen haben.

#Tokens oder Zeichen: die Falle bei den Einheiten

Die Bibliotheken zählen nicht alle in derselben Einheit. Der SentenceSplitter von LlamaIndex gibt chunk_size und chunk_overlap in Tokens an, laut seiner Dokumentation mit den Standardwerten 1024 und 200. Andere Tools, darunter der RecursiveCharacterTextSplitter von LangChain, zählen standardmäßig in Zeichen; prüfen Sie den Parameter length_function Ihrer Version. Wenn Sie im einen oder im anderen Tool „500“ einstellen, unterscheiden sich die Chunk-Größen um etwa den Faktor vier. Zweite Einschränkung: Das Embedding-Modell hat eine eigene maximale Eingabelänge. Das Modell BGE-M3 unterstützt laut seinem Modellprofil Eingaben mit bis zu 8.192 Tokens; andere, ältere oder kleinere Embedding-Modelle akzeptieren deutlich weniger, und jenseits dieser Grenze wird das Ende der Textpassage ignoriert. Prüfen Sie die Grenze Ihres Modells, bevor Sie die Größe wählen, und zählen Sie mit dem Tokenizer des Modells statt nach Augenmaß.

#Überlappung: nützlich, aber nicht immer

Bei der Überlappung wird das Ende eines Chunks am Anfang des nächsten wiederholt, damit ein an der Grenze geteilter Satz zumindest in einem der beiden Chunks lesbar bleibt. Das hat seinen Preis: mehr Chunks, einen größeren Index und Duplikate in den Ergebnissen. Die Studie von Chroma stellt fest, dass eine geringere Überlappung den IoU-Score verbessert, eine Metrik, die redundante Informationen negativ bewertet. Überlappung ist sinnvoll, wenn Sie den Text in Abschnitte fester Größe aufteilen; sie ist weniger wichtig, wenn Sie bereits an Absatz- und Überschriftengrenzen aufteilen, da die Trennstellen dann an natürlichen Grenzen liegen.

0 Token
Ausreichend bei einer Aufteilung nach Absätzen oder nach der Dokumentstruktur; am sparsamsten.
10 bis 15 Prozent der Größe
Guter Kompromiss, wenn die Aufteilung nach Sätzen oder Zeichen erfolgt.
mehr als 25 %
Selten gerechtfertigt: Sehr viel Redundanz, fast identische Abschnitte in den Ergebnissen.

#Strategien zur Aufteilung in Textabschnitte, von der einfachsten bis zur aufwendigsten

#1. Nach fester Zeichenanzahl

Den Text nach jeweils N Zeichen oder Tokens aufteilen, ohne seinen Inhalt zu berücksichtigen. Der einfachste und zugleich destruktivste Ansatz: Er trennt mitten in Wörtern, Sätzen und Tabellen. Nur für Prototypen verwenden.

#2. Nach Absätzen oder Sätzen

An doppelten Zeilenumbrüchen oder Satzzeichen aufteilen, dann die Einheiten bis zur Zielgröße zusammenfassen. Eine deutliche Verbesserung ohne zusätzliche Kosten, da jeder Chunk an einer natürlichen Grenze beginnt und endet.

#3. Rekursiv

Zunächst wird versucht, an gröberen Trennstellen aufzuteilen (Absatz, Zeile, Satz, Leerzeichen); erst als letztes Mittel wird auf Zeichenebene aufgeteilt. Das ist das Standardverhalten der wichtigsten Frameworks und eine solide Grundlage: Die Studie von Chroma stellt fest, dass diese Art der Aufteilung bei geeigneten Einstellungen häufig gut funktioniert.

#4. Gemäß der Dokumentstruktur

Überschriften, Listen, Tabellen und Codeblöcke werden berücksichtigt. Der MarkdownNodeParser von LlamaIndex beispielsweise teilt den Text anhand der Überschriften auf und fügt jedem Knoten den Pfad der Überschriften hinzu, die zu ihm führen. Dadurch erhält die Textpassage einen Kontext, den ihr Text allein nicht bietet. Das ist die beste Wahl für technische Dokumentation, Wikis und exportierte HTML-Seiten.

#5. Semantik

Für jeden Satz wird ein Embedding berechnet. Anschließend wird dort getrennt, wo die Ähnlichkeit zwischen zwei benachbarten Sätzen stark abnimmt. In LlamaIndex nimmt der SemanticSplitterNodeParser einen buffer_size (Anzahl der gemeinsam verglichenen Sätze, standardmäßig 1) und einen breakpoint_percentile_threshold (standardmäßig 95; ein niedrigerer Wert erzeugt mehr Knoten) entgegen. Der Aufwand besteht in einer zusätzlichen Berechnung von Embeddings bei der Indexierung, und der Nutzen ist nicht belegt: Eine Studie vom Oktober 2024 zu drei Retrieval-Aufgaben kommt zu dem Schluss, dass die Rechenkosten der semantischen Segmentierung nicht durch durchgängige Leistungsgewinne gerechtfertigt sind. Testen Sie das Verfahren an Ihrem Korpus, bevor Sie es übernehmen.

#6. Hierarchisch (Eltern- und Kindknoten)

Für eine präzise Suche werden kleine Chunks indexiert; für den Kontext erhält das Modell den größeren übergeordneten Block. Der HierarchicalNodeParser von LlamaIndex erzeugt solche Hierarchien, laut seiner Dokumentation beispielsweise mit drei Ebenen von 2048, 512 und 128 Token. Das ist die Lösung für lange Passagen: weder ausschließlich kleine noch ausschließlich große Chunks.

Welche Strategie für welches Dokument
DokumententypEmpfohlene Strategie
Dokumentation, Wiki, Markdown, HTMLNach Struktur (Überschriften), dann rekursiv innerhalb langer Abschnitte
Verträge, juristische TexteGliederung nach Artikeln oder Klauseln; Umfang von 300 bis 500 Tokens; Artikeltitel in jedem Chunk wiederholen
Freie Prosa ohne Struktur (E-Mails, Notizen, Transkripte)Rekursiv, 10 % Überlappung, möglicherweise hierarchisch
PDF mit TabellenStruktur vorab extrahieren, je nach Fragestellung eine Tabelle pro Chunk oder pro Zeile
QuellcodeNach Funktion oder Klasse aufteilen, niemals mitten in einem Block

#Implementierungen mit LlamaIndex

Satzweise Aufteilung mit Überlappung
from llama_index.core.node_parser import SentenceSplitter

splitter = SentenceSplitter(chunk_size=400, chunk_overlap=40)  # en tokens
nodes = splitter.get_nodes_from_documents(docs)
Gemäß der Markdown-Struktur
from llama_index.core.node_parser import MarkdownNodeParser

parser = MarkdownNodeParser()
nodes = parser.get_nodes_from_documents(docs)
# le chemin des titres est stocké dans les métadonnées de chaque nœud
Hierarchisch
from llama_index.core.node_parser import HierarchicalNodeParser, get_leaf_nodes

parser = HierarchicalNodeParser.from_defaults(chunk_sizes=[2048, 512, 128])
nodes = parser.get_nodes_from_documents(docs)
leaves = get_leaf_nodes(nodes)  # ce sont les feuilles qu'on vectorise
Semantisch (vor dem Einsatz testen)
from llama_index.core.node_parser import SemanticSplitterNodeParser
from llama_index.embeddings.huggingface import HuggingFaceEmbedding

embed = HuggingFaceEmbedding(model_name="BAAI/bge-m3")
splitter = SemanticSplitterNodeParser(embed_model=embed, buffer_size=1, breakpoint_percentile_threshold=95)
nodes = splitter.get_nodes_from_documents(docs)

#Jedem Chunk wieder Kontext geben

Eine aus ihrem Dokument herausgerissene Passage verliert ihren Kontext: „Die Frist beträgt 30 Tage“ sagt nicht, worum es geht. Drei einfache Vorgehensweisen schaffen Abhilfe. Jedem Chunk den Dokumenttitel und den Abschnittspfad voranstellen; diese Informationen als Metadaten speichern, um nach Datum, Quelle oder Dokumenttyp filtern zu können; und bei Passagen, die mit einem Pronomen oder einem Verweis beginnen („diese Klausel“), die übergeordnete Ebene der hierarchischen Aufteilung in Betracht ziehen. Oft genügt eine einzige Kontextzeile vor dem Text, und sie kostet deutlich weniger als ein Modellwechsel.

#Das Chunking vorab bewerten, bevor es festgelegt wird

  1. 01
    30 bis 50 echte Fragen formulieren
    Fragen, die Ihre Nutzer stellen würden, jeweils mit der erwarteten Quellpassage; formulieren Sie sie, bevor Sie sich die Ergebnisse ansehen.
  2. 02
    Mit zwei oder drei Konfigurationen indexieren
    Zum Beispiel 250, 400 und 700 Tokens mit einem Overlap von 0 und 10 %. Halten Sie die anderen Parameter konstant.
  3. 03
    Den Recall in den ersten 5 Ergebnissen messen
    Ist für jede Frage die erwartete Passage unter den ersten 5 Ergebnissen enthalten? Der Prozentsatz ergibt den Recall@5.
  4. 04
    Auch Präzision und Redundanz betrachten
    Ein identischer Rückschluss mit variierterer Ausgabe ist eine bessere Einstellung. Zählen Sie die Doppelte in der Top-5.
  5. 05
    Die Fehlschläge einzeln durchgehen
    Öffnen Sie für jede falsch beantwortete Frage den Chunk, der die Antwort hätte liefern sollen: Ist er abgeschnitten, zu groß oder der Textauszug beschädigt? Die Ursache bestimmt die Korrektur.

#Häufige Stolperfallen

Beschädigte Tabellen
Ein PDF-Extraktor, der eine Tabelle in flachen Text umwandelt, erzeugt Zeilen aus Zellen ohne sinnvollen Zusammenhang: Extrahieren Sie die Struktur vor dem Aufteilen in Abschnitte.
Abgebrochene Codeblöcke
Ein Chunker, der die Syntax nicht berücksichtigt, zerschneidet einen Block mittendrin; verwenden Sie eine strukturorientierte Aufteilung.
Gemischte Dokumente
Ein Chunk, der zur Hälfte aus französischem und zur Hälfte aus englischem Text besteht, erzeugt einen wenig hilfreichen gemittelten Vektor: Trennen Sie die Inhalte nach Sprache, wenn das Korpus gemischtsprachig ist.
Fast leere Chunks
Ein Titel allein („3.2.1 Verpflichtungen“) ohne den folgenden Text ist Rauschen: Filtern Sie zu kurze Chunks oder fügen Sie sie mit dem nächsten zusammen.
Das Chunking ändern, ohne neu zu indexieren
Die Aufteilung wird bei der Indexierung festgelegt: Jede Änderung erfordert eine Neuberechnung der Vektoren. Planen Sie von Anfang an ein Skript zur Neuindexierung ein.
!
Keine blinden Optimierungen vornehmen
Ohne einen Satz von Testfragen weiß man nicht, ob eine Einstellung die Ergebnisse verbessert oder verschlechtert. Eine Größe, die „vernünftig erscheint“, hat einen messbaren Einfluss auf den Recall – in die eine oder die andere Richtung.

#Häufige Fragen zum Chunking

FAQ
Welche Chunk-Größe für ein lokales RAG-System?+
Beginnen Sie mit 300 bis 500 Tokens und einer Überlappung von 0 bis 10 %. Trennen Sie den Text an Absatzgrenzen oder Überschriften. Testen Sie anschließend 250 und 700 Tokens mit 30 bis 50 Ihrer tatsächlichen Fragen und vergleichen Sie den Recall der ersten 5 Ergebnisse. Einen allgemeingültigen Wert gibt es nicht: Er hängt von Ihren Dokumenten und Fragen ab.
Lohnt sich semantisches Chunking angesichts der Kosten?+
Nicht immer. Semantisches Chunking erfordert bei der Indexierung eine zusätzliche Berechnung von Embeddings, und eine Studie vom Oktober 2024 zu drei Retrieval-Aufgaben kommt zu dem Schluss, dass dieser Aufwand gegenüber einer Aufteilung in Chunks fester Größe nicht durch konsistente Verbesserungen gerechtfertigt ist. Testen Sie es mit Ihrem Korpus: Wenn es keine besseren Ergebnisse liefert, bleiben Sie beim rekursiven Ansatz.
Ist ein Overlap zwischen den Chunks erforderlich?+
Nicht immer. Wenn Sie den Text bereits an Absatzgrenzen und Überschriften aufteilen, ist häufig keine Überlappung nötig. Wenn Sie ihn in Abschnitte fester Größe oder an Satzgrenzen aufteilen, verhindert eine Überlappung von 10 bis 15 %, dass ein Satz an der Grenze verloren geht. Eine große Überlappung führt zu mehr Duplikaten in den Ergebnissen und vergrößert den Index.
Tokens oder Zeichen: Wie wird chunk_size eingestellt?+
Prüfen Sie die Einheit Ihrer Bibliothek. Der SentenceSplitter von LlamaIndex zählt in Tokens, andere Tools zählen standardmäßig in Zeichen, wodurch sich die tatsächliche Größe um etwa den Faktor vier unterscheidet. Prüfen Sie auch die maximale Eingabelänge Ihres Embedding-Modells: Wird sie überschritten, wird der Textabschnitt bei der Indexierung abgeschnitten.
Wie teilt man ein PDF mit Tabellen auf?+
Extrahieren Sie zunächst die Struktur mit einem Werkzeug, das Tabellen erkennt, und teilen Sie sie anschließend in Chunks auf: eine ganze Tabelle pro Chunk, wenn sie klein ist, oder eine Tabellenzeile zusammen mit der Kopfzeile pro Chunk, wenn sie groß ist. Ein Extraktor, der die Tabelle in reinen Text umwandelt und dabei ihre Struktur verliert, erzeugt unbrauchbare Passagen, unabhängig davon, wie sie anschließend aufgeteilt werden.
Muss man bei einer Änderung der Chunk-Größe neu indexieren?+
Ja, immer. Die Vektoren werden anhand der Textabschnitte in ihrem Zustand zum Zeitpunkt der Indexierung berechnet: Wenn Sie die Größe, die Überlappung oder den Textsplitter ändern, müssen alle Vektoren neu berechnet werden. Bewahren Sie ein Skript auf, das den Index aus den Quelldokumenten neu erstellt, und versionieren Sie die verwendeten Chunking-Parameter.
Hat Ihnen dieser Guide geholfen?

Haben Sie Feedback, einen Fehler entdeckt oder möchten Sie etwas präzisieren? Geben Sie uns Bescheid – so wird der Guide für alle besser.