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.
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.
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.
Verwandte Leistungen
Mehr aus dem Blog
Retrieval oder Generierung?
Ein Diagnoseverfahren, das zeigt, ob eine falsche RAG-Antwort in Ingestion, Suche, Reranking oder im Modell entstand, mit markierten Belegen und Traces pro Frage.
Tabellen und Tabellenkalkulationen in RAG
Wann ein Assistent Tabellenzeilen als Text abrufen und wann er stattdessen eine Abfrage ausführen sollte, mit Routing-Regeln, Zeilenformat für die Suche und Schutz für generiertes SQL.
Quellen für RAG vorbereiten
Wie Sie entscheiden, welche Dokumente ein Retrieval-Assistent nutzen soll, wem jede Quelle gehört und wie Sie fehlende Antworten vor der Indexierung finden.
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.
Sehen Sie in Ihrem E-Mail-Programm nach dem Entwurf
Senden Sie ihn von dort ab, und ein Engineer antwortet Ihnen persönlich mit Terminvorschlägen für ein 30-minütiges Gespräch. Hat sich kein Entwurf geöffnet, schreiben Sie uns an miki@cloudsail.com.