Late Chunking
Beim Late Chunking wird zuerst ein ganzes Dokument mit einem Modell für lange Kontexte eingebettet. Anschließend werden die Tokenvektoren für jeden Abschnitt zusammengeführt, sodass jedes Abschnitts-Embedding den Dokumentkontext bewahrt.
Late Chunking ist ein Verfahren zur Einbettung von Dokumentabschnitten, bei dem ein Einbettungsmodell mit großem Kontext zunächst das gesamte Dokument codiert. Anschließend werden die resultierenden Token-Vektoren an den Abschnittsgrenzen aufgeteilt und durch Mittelwertbildung zu einer Einbettung pro Abschnitt zusammengefasst. Beim Zusammenfassen hat jedes Token bereits das gesamte Dokument berücksichtigt. Daher enthält ein Abschnitt mit der Aussage „Es muss ersetzt werden“ weiterhin den Bezug von „Es“. Forschende von Jina AI stellten die Methode 2024 in der Arbeit Late Chunking: Contextual Chunk Embeddings Using Long-Context Embedding Models vor. Sie wendet das Verfahren ohne zusätzliches Training auf bestehende Einbettungsmodelle an.
Warum Abschnittseinbettungen den Kontext verlieren#
Retrieval-Augmented Generation (RAG)-Systeme teilen Dokumente in Abschnitte auf, damit jeder Vektor eine in sich geschlossene Passage repräsentiert und der abgerufene Text in das Kontextfenster eines Modells passt. Bei herkömmlicher Aufteilung wird jeder Abschnitt für sich eingebettet. Dadurch gehen alle Verbindungen zum vorherigen Text verloren. Betrachte zwei aufeinanderfolgende Sätze aus einem Handbuch: „Die Pumpe XR-12 zirkuliert Kühlmittel durch die Pressenstraße.“ und „Sie muss nach 10.000 Betriebsstunden ersetzt werden.“ Für sich allein eingebettet erwähnt der zweite Satz die Pumpe XR-12 nicht. Deshalb passt er bei einer Frage zum Austausch dieser Pumpe nur schwach zur Vektorsuche, obwohl er die Antwort enthält.
So funktioniert Late Chunking#
Das gesamte Dokument wird tokenisiert, und die Token-Spanne jedes Abschnitts wird erfasst. Die Grenzen können von jedem beliebigen Aufteilungsverfahren stammen, einschließlich fester Größen oder semantischer Aufteilung. Anschließend durchläuft die gesamte Token-Sequenz das Transformer-Einbettungsmodell, in dem die Selbstaufmerksamkeit Informationen von jedem Token mit allen anderen vermischt. Schließlich werden die Token-Vektoren innerhalb jeder Spanne gemittelt, um die Einbettung des jeweiligen Abschnitts zu erzeugen. Dokumente, die länger als die Eingabegrenze des Modells sind – etwa 8.192 Tokens bei Jinas Modellen jina-embeddings-v2 –, werden in überlappenden Makroabschnitten codiert. Die Arbeit bezeichnet dieses Verfahren als „Long Late Chunking“.
Das folgende Beispiel bettet den Pumpensatz mit einem kleinen Sentence-Transformers-Modell auf beide Arten ein und vergleicht die jeweiligen Versionen mit der Frage:
import torch
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
chunks = [
"The XR-12 pump circulates coolant through the press line.",
"It must be replaced after 10,000 operating hours.",
]
query = model.encode("When should the XR-12 pump be replaced?", convert_to_tensor=True)
# Herkömmliche Aufteilung: den zweiten Abschnitt für sich einbetten
naive = model.encode(chunks[1], convert_to_tensor=True)
# Late Chunking: das gesamte Dokument codieren und dann nur die Tokens des zweiten Abschnitts mitteln
tokens = model.encode(" ".join(chunks), output_value="token_embeddings")
start = len(model.tokenizer(chunks[0])["input_ids"]) - 1 # Tokens von [CLS] + Abschnitt 1
late = tokens[start:-1].mean(dim=0) # das abschließende [SEP] entfernen
for name, emb in [("naive", naive), ("late", late)]:
print(name, round(torch.cosine_similarity(query, emb, dim=0).item(), 3))Der unabhängig eingebettete Abschnitt erzielt bei der Frage einen Score von 0,382. Die mit Late Chunking erzeugte Version desselben Satzes erreicht 0,62, weil ihre Tokens vor der Mittelwertbildung „Die Pumpe XR-12“ berücksichtigt haben.
Auch die Objekterkennung vollzog 2015 denselben Wandel. R-CNN führte ein Faltungsnetzwerk separat für jeden zugeschnittenen Regionsvorschlag aus. Fast R-CNN führte es einmal für das ganze Bild aus und fasste jede Region anhand der gemeinsamen Merkmalskarten zusammen. Mit einem VGG16-Backbone war die Objekterkennung zur Testzeit dadurch 213-mal schneller. Ultralytics YOLO26 führt sein Backbone ebenfalls einmal für das vollständige Bild aus und sagt anhand dieser gemeinsamen Merkmale alle Boxen voraus. Es wird also keine Erkennung anhand eines isolierten Ausschnitts berechnet.
Late Chunking und verwandte Methoden#
- Kontextuelle Suche: Fügt jedem Abschnitt vor der Indexierung eine von einem LLM verfasste Notiz voran. Dafür fällt ein LLM-Aufruf pro Abschnitt an. Auch die Stichwortsuche profitiert, da der ergänzte Kontext aus Text besteht.
- ColBERT-Late-Interaction: Behält einen Vektor pro Token bei und vergleicht diese zum Suchzeitpunkt mit der Anfrage. Late Chunking fasst jeden Abschnitt zu einem einzigen Vektor zusammen. Daher passt das Ergebnis in jeden standardmäßigen Vektorindex.
- Überlappende Abschnitte: Wiederholen einige Sätze in benachbarten Abschnitten. Das erhält nur den unmittelbaren Kontext und vergrößert den Index.
- Reranker: Ordnen abgerufene Kandidaten nach der ersten Suche mithilfe eines leistungsstärkeren Modells neu und lassen sich gut mit Late Chunking kombinieren.
Wann Late Chunking hilfreich ist#
Die größten Vorteile ergeben sich, wenn Abschnitte von vorherigem Text abhängen, etwa bei Pronomen, einmal definierten Abkürzungen und Erzähltexten wie Berichten und Handbüchern. Am geringsten sind die Vorteile bei kurzen, in sich geschlossenen Einträgen wie Produkttiteln. Das Verfahren benötigt ein Einbettungsmodell, das Tokens durch Mittelwertbildung zusammenfasst und auf dessen Ausgaben auf Token-Ebene zugegriffen werden kann. Bei jeder Änderung eines Dokumentteils muss das gesamte Dokument erneut codiert werden. Vektoren aus Late Chunking lassen sich unverändert in einer gewöhnlichen Vektordatenbank speichern. Die Einbettungs-API von Jina stellt das Verfahren als Parameter late_chunking bereit, der eine Liste aufeinanderfolgender Abschnitte als ein Dokument einbettet.










