BlogRAG

Verträge, Richtlinien und lange Dokumente aufteilen, ohne die Bedingungen zu verlieren

Teilen Sie entlang der Struktur, die das Dokument bereits hat, etwa nummerierte Klauseln, Abschnitte mit Überschriften und Tabellenzeilen, und geben Sie jedem Chunk den Überschriftenpfad und die relevanten Definitionen mit. Vergleichen Sie dann zwei oder drei Strategien an Fragen, deren Antwort von einer Ausnahme oder Bedingung abhängt. Keine Chunk-Größe passt zu jedem Dokument, also lassen Sie Ihr eigenes Testset entscheiden.

Aktualisiert am

Wie eine Antwort von ihren Bedingungen getrennt wird

Geschäftsdokumente stellen die Regel an eine Stelle und ihre Grenzen an eine andere. Eine Zahlungsklausel sagt, Rechnungen sind in 30 Tagen fällig, und die nächste Klausel sagt, dass das für strittige Beträge nicht gilt. Eine Urlaubsrichtlinie verwendet den Begriff anspruchsberechtigte Mitarbeitende, definiert zwei Seiten vorher. Eine Preistabelle listet Zahlen, deren Währung und Gültigkeitsdatum in einer Kopfzeile auf der vorigen Seite stehen.

Zerlegt man ein solches Dokument in gleich große Stücke, liefert das Retrieval womöglich die Regel ohne die Ausnahme. Das Modell antwortet dann selbstsicher und liegt genau für den Fall falsch, nach dem gefragt wurde. Überlappung zwischen Chunks hilft, wenn ein Satz an einer Grenze zerteilt wird. Eine Definition von zwei Seiten vorher holt sie nicht zurück.

Entlang der vorhandenen Struktur teilen

Microsofts Leitfaden zum Chunking knüpft das Verfahren daran, wie strukturiert ein Dokument ist. Rechtstexte und Spezifikationen haben eine abgeleitete Struktur, nummerierte Absätze ohne Auszeichnung, wofür er eigenen Code oder eigene Modelle vorschlägt; Chunks fester Größe mit Überlappung passen zu unstrukturiertem Text wie E-Mails und Notizen. Er bezeichnet die Wahl des Verfahrens außerdem als halb dauerhaft, weil eine spätere Änderung alles Nachgelagerte betrifft.

  • Verträge: ein Chunk pro nummerierter Klausel, Unterklauseln zusammen
  • Richtlinien: ein Chunk pro Abschnitt mit Überschrift, weiter geteilt nur an Unterüberschriften
  • Verfahren: jedes Verfahren am Stück, wenn es passt, denn ein Schritt außerhalb der Reihenfolge ist gefährlich
  • Tabellen: Zeilen oder Zeilengruppen, mit wiederholter Kopfzeile in jedem Chunk

Kontext in jeden Chunk mitnehmen

Eine Klausel wie „die Frist in 4.2 gilt nicht“ ergibt für sich keinen Sinn. Stellen Sie voran, was ein Leser bräuchte: Dokumenttitel, Überschriftenpfad, Version oder Gültigkeitsdatum und die Definitionen der Begriffe, die der Chunk verwendet. Anthropic hat 2024 eine verwandte Idee getestet: Ein Modell erzeugte einen kurzen, chunk-spezifischen Kontext, der vor dem Embedding und der Stichwortindexierung vorangestellt wurde. In diesen Experimenten sank die Fehlerrate unter den Top 20 mit kontextuellen Embeddings um 35 Prozent und mit zusätzlicher kontextueller Stichwortsuche um 49 Prozent. Diese Zahlen beschreiben Anthropics Datensätze, nicht Ihre.

Querverweise brauchen einen zweiten Mechanismus. Verweist eine abgerufene Klausel auf eine andere, kann die Anwendung die referenzierte Klausel mitladen oder kleine Chunks abrufen und deren übergeordneten Abschnitt an das Modell geben.

Die Strategie per Experiment wählen

Sammeln Sie Fragen, deren richtige Antwort von einer Bedingung, Ausnahme oder Definition abhängt, und markieren Sie sowohl die Antwortstelle als auch die Bedingungsstelle. Legen Sie zwei oder drei Kandidatenstrategien fest und lassen Sie jede gegen dieselben Fragen mit demselben Token-Budget für abgerufenen Text laufen, wobei Sie die Anzahl der Chunks an die Chunk-Größe anpassen. LlamaIndex weist darauf hin, dass kleinere Chunks ein größeres Top-k brauchen können, um genug Material abzurufen. Wenn Sie stattdessen die Anzahl der Chunks festhalten, berichten Sie, wie viel Kontext und welche Kosten jede Strategie dann an das Modell schickt, denn größere Chunks bringen mehr Text in den Prompt.

Ergebnisse eines Chunking-Experiments (hypothetisch)
Chunking experiment: supplier contracts (hypothetical numbers)
40 labelled questions; every run passes about 4,000 tokens of
retrieved text to the prompt, so k is adjusted to the chunk size

Strategy                               k    Answer passage   Answer + its
                                            in prompt        condition in prompt
A  fixed size, small chunks           12    33 / 40          19 / 40
B  one chunk per numbered clause       8    34 / 40          27 / 40
C  clause + heading path + defined     7    36 / 40          33 / 40
   terms prepended to each chunk

Decision: C for contracts. Re-run when the template or embedding model changes.

Die Zahlen im Beispiel sind erfunden. Vergleichen Sie die letzten beiden Spalten: Alle drei Strategien bringen die Regel meistens in den Prompt, und der Unterschied zeigt sich erst, wenn auch die Bedingung verlangt wird. Ein Testset ohne bedingungsabhängige Fragen hätte sie fast gleich bewertet.

Kosten und wo strukturbewusstes Chunking an Grenzen stößt

Jeder Dokumenttyp mit eigenem Parser ist Code, der gepflegt werden muss, und Microsoft nennt die Zahl eigener Chunking-Implementierungen als Kostentreiber. Gescannte Dokumente mit unzuverlässigen Überschriften, Klauseln, die länger sind, als das Embedding-Modell verarbeitet, und Vorlagen, die ihre Nummerierung zwischen Versionen ändern, schwächen den Ansatz. Kontext pro Chunk mit einem Modell zu erzeugen, kostet bei der Ingestion zusätzlich. Und weil Chunks und Embeddings voneinander abhängen, bedeutet ein Wechsel der Strategie oder des Embedding-Modells eine Neuindexierung.

Ein sinnvoller Weg: Beginnen Sie mit dem Standard-Splitter Ihres Frameworks als dokumentierter Ausgangsbasis, ergänzen Sie strukturbewusstes Chunking für die zwei oder drei Dokumenttypen mit den wichtigsten Fragen und bewahren Sie das Experiment auf, damit es bei geänderten Vorlagen erneut laufen kann.

Fragen

Mit welcher Chunk-Größe sollten wir beginnen?

Nutzen Sie den Standardwert Ihres Frameworks als Ausgangsbasis und dokumentieren Sie ihn. LlamaIndex etwa dokumentiert eine Standard-Chunk-Größe von 1024 mit einer Überlappung von 20. Sehen Sie das als Ausgangspunkt, den Ihre eigenen Fragen schlagen sollen, nicht als Empfehlung für Verträge.

Macht ein Modell mit langem Kontext Chunking überflüssig?

Es erlaubt größere Chunks oder ganze Abschnitte, was das Risiko verringert, Bedingungen abzuschneiden. Bei einem großen Bestand brauchen Sie trotzdem Retrieval, um auszuwählen, was übergeben wird, und jedes zusätzliche Token kostet bei jeder Anfrage Zeit und Geld. Testen Sie die Abwägung an Ihren eigenen Dokumenten.

Mit einem Engineer sprechen

Bringen Sie eine Aufgabe mit, die Sie verbessern möchten. Das Gespräch dauert 30 Minuten und braucht keinen Zugriff auf Ihre Systeme oder Ihre Daten.

Die Buchung läuft über Google Kalender.

Lieber zuerst schreiben? Hinterlassen Sie Ihre E-Mail-Adresse und ein paar Zeilen, dann antworten wir mit Terminvorschlägen.

Die Schaltfläche bereitet in Ihrem eigenen E-Mail-Programm eine E-Mail vor, die Sie selbst senden. Datenschutzerklärung (Entwurf)