Milvus
Zilliz
  • Home
  • Blog
  • Erst einbetten, dann chunking: Smarter RAG Retrieval mit Max-Min Semantic Chunking

Erst einbetten, dann chunking: Smarter RAG Retrieval mit Max-Min Semantic Chunking

  • Engineering
December 24, 2025
Rachel Liu

Retrieval Augmented Generation (RAG) ist zum Standardansatz für die Bereitstellung von Kontext und Gedächtnis für KI-Anwendungen geworden - KI-Agenten, Kundensupport-Assistenten, Wissensdatenbanken und Suchsysteme verlassen sich alle auf diesen Ansatz.

In fast jeder RAG-Pipeline ist der Standardprozess derselbe: Man nimmt die Dokumente, teilt sie in Chunks auf und bettet diese Chunks dann für die Ähnlichkeitssuche in eine Vektordatenbank wie Milvus ein. Da das Chunking im Vorfeld stattfindet, wirkt sich die Qualität dieser Chunks direkt darauf aus, wie gut das System Informationen abruft und wie genau die endgültigen Antworten sind.

Das Problem ist, dass herkömmliche Chunking-Strategien den Text in der Regel ohne jegliches semantisches Verständnis zerlegen. Chunking mit fester Länge schneidet auf der Grundlage der Tokenanzahl, und rekursives Chunking verwendet eine Oberflächenstruktur, aber beide ignorieren die eigentliche Bedeutung des Textes. Infolgedessen werden verwandte Ideen oft getrennt, unzusammenhängende Zeilen werden gruppiert, und wichtiger Kontext wird fragmentiert.

In diesem Blog möchte ich eine andere Chunking-Strategie vorstellen: Max-Min Semantisches Chunking. Anstatt zuerst zu chunking, wird der Text im Voraus eingebettet und anhand der semantischen Ähnlichkeit entschieden, wo die Grenzen gezogen werden sollen. Durch die Einbettung vor dem Schneiden kann die Pipeline natürliche Bedeutungsverschiebungen verfolgen, anstatt sich auf willkürliche Längengrenzen zu verlassen.

Wie eine typische RAG-Pipeline funktioniert

Die meisten RAG-Pipelines, unabhängig vom Framework, folgen demselben vierstufigen Fließband. Wahrscheinlich haben Sie selbst schon eine Version davon geschrieben:

1. Datenbereinigung und Chunking

Die Pipeline beginnt mit der Bereinigung der Rohdokumente: Kopf- und Fußzeilen, Navigationstext und alles, was nicht zum eigentlichen Inhalt gehört, werden entfernt. Sobald das Rauschen beseitigt ist, wird der Text in kleinere Stücke aufgeteilt. Die meisten Teams verwenden Chunks fester Größe - in der Regel 300-800 Token -, weil das Einbettungsmodell so überschaubar bleibt. Der Nachteil ist, dass die Aufteilung auf der Länge und nicht auf der Bedeutung basiert, so dass die Grenzen willkürlich sein können.

2. Einbettung und Speicherung

Jeder Brocken wird dann mit einem Einbettungsmodell wie dem von OpenAI text-embedding-3-small oder BAAIs Kodierer. Die resultierenden Vektoren werden in einer Vektordatenbank wie Milvus oder Zilliz Cloud gespeichert. Die Datenbank übernimmt die Indizierung und Ähnlichkeitssuche, so dass Sie neue Abfragen schnell mit allen gespeicherten Chunks vergleichen können.

3. Abfrage von

Wenn ein Nutzer eine Frage stellt - zum Beispiel : "Wie reduziert RAG Halluzinationen?" - bettet das System die Abfrage ein und sendet sie an die Datenbank. Die Datenbank gibt die Top-K-Chunks zurück, deren Vektoren der Anfrage am nächsten kommen. Dies sind die Textstücke, auf die sich das Modell stützt, um die Frage zu beantworten.

4. Generierung der Antwort

Die abgerufenen Chunks werden zusammen mit der Benutzeranfrage gebündelt und in ein LLM eingespeist. Das Modell generiert eine Antwort unter Verwendung des bereitgestellten Kontexts als Grundlage.

Das Chunking steht am Anfang dieser ganzen Pipeline, hat aber einen großen Einfluss. Wenn die Chunks mit der natürlichen Bedeutung des Textes übereinstimmen, ist der Abruf genau und konsistent. Wenn die Chunks an ungünstigen Stellen geschnitten wurden, hat es das System schwerer, die richtigen Informationen zu finden, selbst mit starken Einbettungen und einer schnellen Vektordatenbank.

Die Herausforderungen beim richtigen Chunking

Die meisten RAG-Systeme verwenden heute eine von zwei grundlegenden Chunking-Methoden, die beide ihre Grenzen haben.

1. Chunking mit fester Größe

Dies ist der einfachste Ansatz: Der Text wird nach einer festen Anzahl von Token oder Zeichen aufgeteilt. Sie ist schnell und vorhersehbar, berücksichtigt aber weder Grammatik noch Themen oder Übergänge. Sätze können um die Hälfte gekürzt werden. Manchmal sogar Wörter. Die Einbettungen, die man aus diesen Brocken erhält, sind in der Regel verrauscht, da die Grenzen nicht die tatsächliche Struktur des Textes widerspiegeln.

2. Rekursive Zeichenaufteilung

Diese Methode ist ein wenig intelligenter. Sie unterteilt den Text hierarchisch anhand von Merkmalen wie Absätzen, Zeilenumbrüchen oder Sätzen. Wenn ein Abschnitt zu lang ist, wird er rekursiv weiter unterteilt. Die Ausgabe ist im Allgemeinen kohärenter, aber immer noch uneinheitlich. Einigen Dokumenten mangelt es an einer klaren Struktur oder sie haben ungleiche Abschnittslängen, was die Abrufgenauigkeit beeinträchtigt. Und in einigen Fällen erzeugt dieser Ansatz immer noch Abschnitte, die das Kontextfenster des Modells überschreiten.

Beide Methoden stehen vor demselben Zielkonflikt: Präzision vs. Kontext. Kleinere Chunks verbessern die Abrufgenauigkeit, verlieren aber den umgebenden Kontext; bei größeren Chunks bleibt die Bedeutung erhalten, aber es besteht die Gefahr, dass irrelevantes Rauschen hinzugefügt wird. Das richtige Gleichgewicht zu finden, ist das, was das Chunking sowohl zu einem grundlegenden als auch zu einem frustrierenden Faktor im RAG-Systemdesign macht.

Max-Min Semantisches Chunking: Erst einbetten, dann chunken

Im Jahr 2025 veröffentlichten S.R. Bhat et al. Rethinking Chunk Size for Long-Document Retrieval: A Multi-Dataset Analysis. Eines der wichtigsten Ergebnisse war, dass es keine einzige "beste" Chunk-Größe für RAG gibt. Kleine Chunks (64-128 Token) eignen sich tendenziell besser für faktische oder nachschlageähnliche Fragen, während größere Chunks (512-1024 Token) bei narrativen oder schlussfolgernden Aufgaben helfen. Mit anderen Worten: Chunking mit fester Größe ist immer ein Kompromiss.

Daraus ergibt sich eine naheliegende Frage: Können wir, anstatt eine bestimmte Länge zu wählen und auf das Beste zu hoffen, die Chunks nach ihrer Bedeutung und nicht nach ihrer Größe ordnen? Max-Min Semantic Chunking ist ein Ansatz, den ich gefunden habe und der genau das versucht.

Die Idee ist einfach: erst einbetten, dann chunken. Anstatt den Text zu zerlegen und dann die herausfallenden Teile einzubetten, bettet der Algorithmus alle Sätze im Voraus ein. Er verwendet dann die semantischen Beziehungen zwischen diesen Satzeinbettungen, um zu entscheiden, wo die Grenzen verlaufen sollen.

Diagram showing embed-first chunk-second workflow in Max-Min Semantic Chunking Diagramm des Arbeitsablaufs “Einbetten-erst-Chunk-zweit” bei Max-Min Semantic Chunking

Konzeptionell behandelt die Methode das Chunking als ein eingeschränktes Clustering-Problem im Einbettungsraum. Sie gehen das Dokument der Reihe nach durch, einen Satz nach dem anderen. Für jeden Satz vergleicht der Algorithmus seine Einbettung mit der des aktuellen Chunks. Wenn der neue Satz semantisch nahe genug ist, wird er in den Chunk eingefügt. Wenn er zu weit entfernt ist, beginnt der Algorithmus einen neuen Chunk. Die wichtigste Einschränkung ist, dass die Chunks der ursprünglichen Satzreihenfolge folgen müssen - keine Umordnung, kein globales Clustering.

Das Ergebnis ist eine Reihe von Chunks mit variabler Länge, die widerspiegeln, wo sich die Bedeutung des Dokuments tatsächlich ändert, und nicht, wo ein Zeichenzähler zufällig auf Null steht.

Wie die Max-Min Semantic Chunking Strategie funktioniert

Max-Min Semantic Chunking bestimmt die Chunk-Grenzen, indem es vergleicht, wie sich die Sätze im hochdimensionalen Vektorraum zueinander verhalten. Anstatt sich auf feste Längen zu verlassen, wird untersucht, wie sich die Bedeutung im Dokument verschiebt. Der Prozess kann in sechs Schritte unterteilt werden:

1. Alle Sätze einbetten und einen Chunk beginnen

Das Einbettungsmodell wandelt jeden Satz des Dokuments in eine Vektoreinbettung um. Es verarbeitet die Sätze der Reihe nach. Wenn die ersten n-k Sätze den aktuellen Chunk C bilden, muss der folgende Satz (sₙ₋ₖ₊₁) bewertet werden: Soll er sich C anschließen oder einen neuen Chunk beginnen?

2. Messen Sie, wie konsistent der aktuelle Chunk ist

Berechnen Sie innerhalb des Chunks C die minimale paarweise Kosinusähnlichkeit zwischen allen Satzeinbettungen. Dieser Wert gibt an, wie eng die Sätze innerhalb des Chunks miteinander verwandt sind. Eine geringere minimale Ähnlichkeit zeigt an, dass die Sätze weniger miteinander verwandt sind, was darauf hindeutet, dass der Chunk möglicherweise geteilt werden muss.

3. Vergleichen Sie den neuen Satz mit dem Chunk

Berechnen Sie als nächstes die maximale Cosinus-Ähnlichkeit zwischen dem neuen Satz und allen Sätzen, die bereits in C enthalten sind. Dies zeigt, wie gut der neue Satz semantisch mit dem bestehenden Chunk übereinstimmt.

4. Entscheiden Sie, ob Sie den Chunk erweitern oder einen neuen Chunk beginnen wollen.

Dies ist die Kernregel:

  • Wenn die maximale Ähnlichkeit des neuen Satzes mit dem Chunk C größer oder gleich der minimalen Ähnlichkeit innerhalb von C ist, → passt der neue Satz und bleibt im Chunk.

  • Andernfalls → wird ein neuer Chunk begonnen.

Dadurch wird sichergestellt, dass jeder Chunk seine interne semantische Konsistenz beibehält.

5. Anpassung der Schwellenwerte, wenn sich das Dokument ändert

Um die Qualität der Chunks zu optimieren, können Parameter wie die Chunk-Größe und die Ähnlichkeitsschwellen dynamisch angepasst werden. Dadurch kann sich der Algorithmus an unterschiedliche Dokumentstrukturen und semantische Dichten anpassen.

6. Behandlung der ersten paar Sätze

Wenn ein Chunk nur einen Satz enthält, behandelt der Algorithmus den ersten Vergleich mit einer festen Ähnlichkeitsschwelle. Wenn die Ähnlichkeit zwischen Satz 1 und Satz 2 über diesem Schwellenwert liegt, bilden sie einen Chunk. Wenn nicht, werden sie sofort getrennt.

Stärken und Grenzen des Max-Min Semantic Chunking

Max-Min Semantic Chunking verbessert die Art und Weise, wie RAG-Systeme Text aufteilen, indem es die Bedeutung anstelle der Länge verwendet, aber es ist kein Allheilmittel. Hier ein praktischer Blick darauf, was es gut kann und wo es noch Schwächen hat.

Was es gut kann

Max-Min Semantic Chunking verbessert das traditionelle Chunking in drei wichtigen Punkten:

1. Dynamische, bedeutungsgesteuerte Chunk-Grenzen

Im Gegensatz zu Ansätzen, die auf festen Größen oder Strukturen basieren, stützt sich diese Methode auf die semantische Ähnlichkeit, um das Chunking zu steuern. Sie vergleicht die minimale Ähnlichkeit innerhalb des aktuellen Chunks (wie kohäsiv er ist) mit der maximalen Ähnlichkeit zwischen dem neuen Satz und diesem Chunk (wie gut er passt). Ist letztere höher, schließt sich der Satz dem Chunk an; andernfalls beginnt ein neuer Chunk.

2. Einfache, praktische Parameterabstimmung

Der Algorithmus hängt von nur drei zentralen Hyperparametern ab:

  • der maximalen Chunk-Größe,

  • der Mindestähnlichkeit zwischen den ersten beiden Sätzen und

  • der Ähnlichkeitsschwelle für das Hinzufügen neuer Sätze.

Diese Parameter passen sich automatisch an den Kontext an - größere Chunks erfordern strengere Ähnlichkeitsschwellen, um die Kohärenz zu wahren.

3. Geringer Verarbeitungsaufwand

Da die RAG-Pipeline bereits Satzeinbettungen berechnet, erfordert Max-Min Semantic Chunking keine zusätzlichen Berechnungen. Alles, was es braucht, ist eine Reihe von Kosinus-Ähnlichkeitsprüfungen beim Durchsuchen von Sätzen. Das macht es billiger als viele semantische Chunking-Techniken, die zusätzliche Modelle oder mehrstufiges Clustering erfordern.

Was es noch nicht lösen kann

Max-Min Semantic Chunking verbessert zwar die Chunk-Grenzen, beseitigt aber nicht alle Herausforderungen der Dokumentensegmentierung. Da der Algorithmus die Sätze der Reihe nach verarbeitet und nur lokal clustert, kann er in längeren oder komplexeren Dokumenten immer noch weitreichende Beziehungen übersehen.

Ein häufiges Problem ist die Kontextfragmentierung. Wenn wichtige Informationen über verschiedene Teile eines Dokuments verstreut sind, kann der Algorithmus diese Teile in separate Chunks einteilen. Jeder Teil enthält dann nur einen Teil der Bedeutung.

In den Versionshinweisen zu Milvus 2.4.13 (siehe unten) enthält ein Chunk beispielsweise die Versionskennung, während ein anderer die Funktionsliste enthält. Eine Abfrage wie "Welche neuen Funktionen wurden in Milvus 2.4.13 eingeführt?" hängt von beiden ab. Wenn diese Details auf verschiedene Chunks aufgeteilt sind, kann das Einbettungsmodell sie nicht miteinander verbinden, was zu einer schlechteren Suche führt.

  • Example showing context fragmentation in Milvus 2.4.13 Release Notes with version identifier and feature list in separate chunks Beispiel für die Kontextfragmentierung in Milvus 2.4.13 Release Notes mit Versionskennung und Feature-Liste in separaten Chunks

Diese Fragmentierung wirkt sich auch auf die LLM-Generierungsphase aus. Wenn sich die Versionsreferenz in einem Chunk und die Merkmalsbeschreibungen in einem anderen Chunk befinden, erhält das Modell einen unvollständigen Kontext und kann nicht sauber auf die Beziehung zwischen den beiden schließen.

Um diese Fälle zu entschärfen, verwenden Systeme oft Techniken wie gleitende Fenster, überlappende Chunk-Grenzen oder Multi-Pass-Scans. Mit diesen Ansätzen wird ein Teil des fehlenden Kontexts wiederhergestellt, die Fragmentierung verringert und der Abruf von zusammenhängenden Informationen erleichtert.

Schlussfolgerung

Max-Min Semantic Chunking ist keine magische Lösung für jedes RAG-Problem, aber es gibt uns einen vernünftigeren Weg, um über Chunk-Grenzen nachzudenken. Anstatt Token-Grenzen entscheiden zu lassen, wo Ideen zerhackt werden, werden Einbettungen verwendet, um zu erkennen, wo sich die Bedeutung tatsächlich verschiebt. Bei vielen realen Dokumenten - APIs, Spezifikationen, Protokollen, Versionshinweisen und Anleitungen zur Fehlerbehebung - kann allein dadurch die Abrufqualität deutlich verbessert werden.

Was mir an diesem Ansatz gefällt, ist, dass er sich ganz natürlich in bestehende RAG-Pipelines einfügt. Wenn Sie bereits Sätze oder Absätze einbetten, bestehen die zusätzlichen Kosten im Wesentlichen aus ein paar Kosinus-Ähnlichkeitsprüfungen. Sie brauchen keine zusätzlichen Modelle, kein komplexes Clustering und keine aufwändige Vorverarbeitung. Und wenn es funktioniert, fühlen sich die erzeugten Chunks "menschlicher" an - näher daran, wie wir Informationen beim Lesen mental gruppieren.

Aber die Methode hat immer noch blinde Flecken. Sie sieht die Bedeutung nur lokal und kann Informationen, die absichtlich auseinandergezogen wurden, nicht wieder zusammenfügen. Überlappende Fenster, Scans in mehreren Durchgängen und andere kontexterhaltende Tricks sind nach wie vor erforderlich, insbesondere bei Dokumenten, in denen Verweise und Erklärungen weit voneinander entfernt sind.

Dennoch geht das Max-Min Semantic Chunking in die richtige Richtung: weg von der willkürlichen Textaufteilung und hin zu Retrieval-Pipelines, die tatsächlich die Semantik berücksichtigen. Wenn Sie nach Möglichkeiten suchen, RAG zuverlässiger zu machen, lohnt es sich, damit zu experimentieren.

Haben Sie Fragen oder möchten Sie die Leistung von RAG weiter verbessern? Treten Sie unserem Discord bei und tauschen Sie sich mit Ingenieuren aus, die tagtäglich echte Retrievalsysteme entwickeln und optimieren.

    Try Managed Milvus for Free

    Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

    Get Started

    Like the article? Spread the word

    Weiterlesen