Einheit 3 / 11

Chunking und Dokumentenvorbereitung

Gewinne:

  • Bewerten Sie Chunk-Größe, Überlappung und semantische Chunking-Kompromisse numerisch
  • Auswahl einer geeigneten Chunking-Strategie für verschiedene Dokumenttypen (PDF, Tabelle, Code, Chat-Protokoll)
  • Verbessern Sie die Abrufqualität und Filterung, indem Sie jedem Block Metadaten hinzufügen

Dies ist der am meisten übersehene, aber entscheidende Schritt in RAG: die Aufgliederung des Dokuments. Dies nennt man Chunking. Selbst wenn Sie dasselbe Dokument demselben Modell übergeben, wird aufgrund schlechter Aufteilung beim Abruf das falsche Teil zurückgegeben und das Modell wird nie eine gute Antwort liefern. In dieser Einheit behandeln wir Fragmentierungsstrategien, wie man sie je nach Dokumenttyp anpasst und wie man jedem Fragment aussagekräftige Metadaten hinzufügt.

Warum zerkleinern wir?

Es gibt drei Gründe. Erstens konvertieren Einbettungsmodelle Text bis zu einer bestimmten Länge in einen aussagekräftigen Vektor. Wenn ein ganzes 40-seitiges Kapitel in einem einzigen Vektor zusammengepfercht wird, wird die Bedeutung „verschwommen“. Zweitens möchten wir dem Modell nur den Teil geben, der als Kontext benötigt wird; Die Übergabe des gesamten Dokuments ist teuer und aufwendig. Drittens muss die Sucheinheit klein und fokussiert sein, damit die Suche präzise ist.

Chunk ist also die kleinste Abrufeinheit. Es sollte nicht zu groß oder zu klein sein – genau richtig.

Stückgröße und Überlappungsbalance

Es gibt zwei Haupteinstellungen: Blockgröße (wie viele Token/Wörter sich in einem Block befinden) und Überlappung (der Teil, der von benachbarten Blöcken gemeinsam genutzt wird).

Sehr kleine Stücke (z. B. 100 Token): fokussiert, aber vom Kontext getrennt. Er sagt „für 14 Tage“, aber was 14 Tage sind, steht im vorherigen Satz. Sehr große Blöcke (z. B. 2000 Token): Der Kontext bleibt erhalten, es werden jedoch viele Threads eingemischt. Das Einbetten wird durcheinander gebracht und irrelevante Themen kommen zusammen.

Überlappung löst das Grenzproblem. Fällt ein Satz genau auf die Grenze zweier Teile, wird er ohne Überlappung in zwei Teile geteilt und seine Bedeutung geht verloren. Durch die Überlappung von 50–100 Token wird sichergestellt, dass die innerhalb des Grenzwerts liegenden Informationen in mindestens einem Teil erhalten bleiben.

Stückgröße

Vorteil

Nachteil

passenden Inhalt

Klein (100–250 Token)

Hohe Sensibilität, konzentriert

Der Kontext kann unterbrochen werden

FAQ, Kurzartikel, Definitionen

Mittel (300–600 Token)

Gleichgewicht; die meisten Szenarien

Verfahren, Richtlinientexte

Groß (800-1500 Token)

Kontextintegrität

verschwommene Einbettung

Erzählerische, lange Erklärungen

Tipp: Wenn Sie nicht wissen, wo Sie anfangen sollen, beginnen Sie mit einem 400-500-Token-Block und einer 50-80-Token-Überlappung. Anschließend messen und mit Ihren eigenen Daten anpassen. Die „richtige“ Größe ist nicht universell, sie hängt vom Kontext ab.

Chunking-Strategien

Feste Größe: Schneidet den Text alle N Token zu. Es ist einfach und schnell, kann aber mitten im Satz unterbrechen.

Trennzeichenbasiert (rekursiv/Trennzeichen): Teilt nach Absatz- und dann nach Satzgrenzen; Dadurch bleibt die Integrität der Bedeutung besser erhalten. Die meisten Produktionssysteme beginnen damit.

Semantisches Chunking: Es betrachtet die Einbettungen der Sätze und teilt sie dort auf, wo der Subjektwechsel stattfindet. Es ist die hochwertigste, aber teuerste Methode; Bei großen Volumina steigen die Transaktionskosten.

Strukturbewusst: Verwendet Dokumentstruktur wie Überschriften, Abschnitte, Tabellen. Durch die Aufteilung eines Markdown-Dokuments nach Überschriften wird beispielsweise sichergestellt, dass jeder Teil eine eigene Überschrift trägt.

Anpassung nach Dokumenttyp

Nicht jedes Dokument ist gleich. Die Strategie variiert je nach Typ:

  • PDF-/Richtlinientext: Lesezeichenbasiert, mittlere Größe. Löschen Sie Wiederholungen oben/unten auf der Seite (Kopf-/Fußzeile).
  • Tabellen: Nehmen Sie die Zeile nicht aus dem Kontext; Behalten Sie jede Zeile mit Kopfinformationen bei („Artikel: X, Preis: Y, Lagerbestand: Z“). Oft ist es unerlässlich, die Rohtabelle in einfachen Text umzuwandeln.
  • Code: Aufteilung nach Funktions-/Klassengrenzen; Schneiden Sie eine Funktion nicht aus dem Weg.
  • Chat-/Ticketaufzeichnung: Aufgeteilt nach Nachricht oder Gesprächsrunde; Behalten Sie das Wissen darüber bei, wer was gesagt hat.

# klammerbasiertes Chunking (konzeptionell) chunks = bol( Text, Zielgröße=450, # Token-Überlappung=70, # Token-Klammern=["\n\n", "\n", ". ", " "] # Absatz zuerst, Wort zuletzt)

Fügen Sie jedem Track Metadaten hinzu

Chunking bedeutet nicht nur „teilen“; ist es, jedes Stück zu bereichern. Jedes Tag, das Sie dem Track hinzufügen, ist für zukünftige Filterung und Quellenangabe Gold wert.

# Erweiterter Abschnitt (konzeptionell){ „text“: „Der bezahlte Jahresurlaub beträgt 14 Tage bei 1–5 Dienstjahren…“, „metadata“: { „source“: „ik_el_kitabi_v7.pdf“, „section“: „5.2 Annual Leave“, „page“: 23, „date“: „2025-06“, „department“: „IK“, „privacy“: „internal“ }}

Eine weitere leistungsstarke Technik ist das Hinzufügen einer kontextbezogenen Kopfzeile: Schreiben Sie den Titel des Kapitels, zu dem sie gehört, an den Anfang jedes Stücks. Daher ist selbst ein unzusammenhängendes Stück wie „Für 14 Tage“ sowohl besser eingebettet als auch aussagekräftiger als „Jahresurlaub – 14 Tage“.

Schwaches Chunking / Starkes Chunking

Schwach (blinder Hardcut, keine Metadaten):

Text alle 1000 Zeichen abschneiden. Nur den Text behalten.# Ergebnis: Tabellen werden in der Mitte geteilt, „14 Tage“ bleibt ohne Kontext,# es ist nicht bekannt, aus welchem ​​Dokument es stammt, es kann kein Filter vorgenommen werden.

Leistungsstark (strukturbewusst + Header + Metadaten):

Teilen Sie das Dokument nach Überschriften auf. Fügen Sie jedem Teil einen Abschnittstitel hinzu; fügen Sie Quelle, Seite, Datum und Datenschutzmetadaten hinzu; Konvertieren Sie Tabellenzeilen mit ihren Überschriften in einfachen Text.# Ergebnis: fokussiert, kontextbezogen, filterbar, belegbar.

Drei Mini-Hüllen

Fall 1 – Malerkatastrophe. Ein Finanzteam teilte die 200-seitige Preisliste mit Blindschnitt auf; Tabellenzeilen wurden zufällig aufgeteilt. „Wie hoch ist der Preis von Produkt X?“ Das Modell hat die falsche Zeile gelesen und den falschen Preis angegeben (9 von 12 Fällen sind falsch). Als ich die Tabellenzeilen in Klartext im Format „Produkt: … | Preis: … | Einheit: …“ konvertierte, verringerte sich der Fehler auf 0 von 12.

Fall 2 – Extrem großer Brocken. In einem Wiki besteht jede Seite aus einem einzigen Block (manche sagen 3.000 Token). Die Einbettung ist unscharf, da auf einer Seite „Urlaub“, „Überstunden“ und „Gehaltsabrechnung“ stehen; Auch bei der Urlaubsfrage kam der Arbeitszeitteil ins Spiel. Wenn die Seiten nach Titel in mittlere Größe unterteilt wurden, stieg Recall@5 von 64 % auf 91 %.

Fall 3 – Verkürzter Satz ohne Überschneidung. Fester Schnitt von 250 Token für ein legales Team, keine Überschneidung. Eine kritische Definition fiel genau an die Grenze zweier Teile und spaltete sich in zwei Teile; Weder das eine noch das andere enthält die vollständige Antwort. Wenn 60 Token-Überlappungen hinzugefügt wurden, blieb dieselbe Definition in einem Stück erhalten und die richtige Antwort wurde zurückgegeben.

Häufige Fehler

  • Blinder fester Schnitt: Teilt Sätze und Tabellen in der Mitte; Bedeutung geht verloren.
  • Die Überlappung bei Null belassen: Informationen, die auf die Grenze fallen, werden geteilt und gehen verloren.
  • Keine Metadaten hinzufügen: Filterung und Quellenanzeige werden unmöglich.
  • Tabellen roh belassen: Das Modell kann die Tabellenstruktur nicht auflösen. Konvertieren Sie Zeilen in einfachen Text.
  • Durchsetzung einer Strategie: PDF, Code und Tabelle werden nicht mit derselben Methode aufgeteilt; An das Genre anpassen.
Achtung: Stellen Sie Chunking nicht einmal ein und vergessen Sie es. Messen Sie die Abrufqualität erneut, wenn neue Dokumenttypen eintreffen (Tickets aus einem neuen System, gescannte PDFs). Schlechte Eingabedaten bedeuten eine schlechte Antwort („Garbage in, Garbage out“).

Zusammenfassend

  • Chunk ist die kleinste Abrufeinheit; Weder zu groß noch zu klein – es sollte dem Inhalt entsprechend ausgewogen sein.
  • Die Blockgröße gibt das Fokus-Kontext-Gleichgewicht an. Überlappung verwaltet Grenzverluste.
  • Klammerbasiertes und strukturbewusstes Chunking ist der Ausgangspunkt der meisten Generationssysteme. Semantisches Chunking ist von guter Qualität, aber teuer.
  • Typen wie Tabelle, Skript und Chat erfordern ihre eigenen Strategien; Konvertieren Sie Tabellen in einfachen Text.
  • Fügen Sie jedem Titel Quell-/Datums-/Kapitel-/Datenschutzmetadaten und Abschnittstitel hinzu; Dies ist die Grundlage der Filterung und Zitierung.

Anwendungsaufgabe

Teilen Sie einen Abschnitt des Dokuments, den Sie auswählen, auf drei verschiedene Arten auf: (1) kleine Stücke mit 200 Token, (2) mittlere Stücke mit 500 Token (Überlappung von 70 Token), (3) einzelne große Stücke. Stellen Sie für jede Strategie die gleichen drei Fragen, markieren Sie manuell, welche Teile Sie einbringen möchten, und schreiben Sie die Begründung auf, welche Strategie für dieses Dokument am besten geeignet ist. Fügen Sie dann jedem Titel mindestens vier Metadatenfelder und einen „Kapiteltitel“ hinzu. Wenn das Dokument eine Tabelle enthält, konvertieren Sie eine Tabellenzeile in einfachen Text im Format „Feld:Wert“.

Checkliste

  • [ ] Ich kann sagen, dass Chunk die kleinste Abrufeinheit ist und die Größe das Fokus-Kontext-Gleichgewicht ist.
  • [ ] Ich weiß, warum Overlap den Grenzverlust verhindert.
  • [ ] Ich kann zwischen klammerbasiertem, semantischem und strukturbewusstem Chunking unterscheiden.
  • [ ] Ich kann die Strategie für Tabelle, Code und Chat anpassen.
  • [ ] Ich verstärke das Auffinden, indem ich jedem Titel Metadaten und Kapiteltitel hinzufüge.