Late Chunking
Le découpage tardif encode un document entier avec un modèle à long contexte, puis agrège les vecteurs de jetons de chaque segment, de sorte que le plongement de chaque segment conserve le contexte du document.
Le découpage tardif est une méthode d’intégration de segments de documents. Un modèle d’intégration à long contexte encode d’abord le document entier ; les vecteurs de jetons obtenus sont ensuite divisés aux limites des segments, puis regroupés par moyenne pour produire une intégration par segment. Chaque jeton a déjà pris en compte le document entier au moment du regroupement. Ainsi, un segment disant « il doit être remplacé » conserve la référence de « il ». Des chercheurs de Jina AI ont présenté la méthode dans l’article de 2024 Late Chunking: Contextual Chunk Embeddings Using Long-Context Embedding Models ; elle s’applique aux modèles d’intégration existants sans entraînement supplémentaire.
Pourquoi les intégrations de segments perdent leur contexte#
Les systèmes de génération augmentée par récupération (RAG) divisent les documents en segments afin que chaque vecteur représente un passage ciblé et que le texte récupéré tienne dans la fenêtre de contexte d’un modèle. Le découpage classique intègre chaque segment séparément, ce qui coupe tous les liens avec le texte précédent. Prenons deux phrases consécutives tirées d’un manuel : « La pompe XR-12 fait circuler le liquide de refroidissement dans la presse. » et « Elle doit être remplacée après 10 000 heures de fonctionnement. » Intégrée seule, la seconde phrase ne mentionne jamais la pompe XR-12 ; une question sur le remplacement de cette pompe ne lui correspond donc que faiblement dans une recherche vectorielle, alors qu’elle contient la réponse.
Fonctionnement du chunking tardif#
Le document entier est tokenisé et l’intervalle de jetons de chaque segment est consigné ; les limites peuvent provenir de n’importe quel séparateur, y compris un découpage de taille fixe ou un découpage sémantique. La séquence complète de jetons passe ensuite dans le modèle d’intégration Transformer, où l’auto-attention mélange les informations de chaque jeton avec celles de tous les autres. Enfin, les vecteurs de jetons de chaque intervalle sont moyennés pour former l’intégration du segment. Les documents qui dépassent la limite d’entrée du modèle, par exemple les 8 192 jetons des modèles jina-embeddings-v2 de Jina, sont encodés en macro-segments qui se chevauchent ; l’article appelle cette méthode le découpage tardif long.
L’exemple ci-dessous intègre les deux façons la phrase sur la pompe avec un petit modèle Sentence Transformers et compare chaque version à la question :
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)
# Découpage classique : intégrer séparément le deuxième segment
naive = model.encode(chunks[1], convert_to_tensor=True)
# Découpage tardif : encoder le document entier, puis calculer la moyenne des jetons du deuxième segment uniquement
tokens = model.encode(" ".join(chunks), output_value="token_embeddings")
start = len(model.tokenizer(chunks[0])["input_ids"]) - 1 # jetons de [CLS] + segment 1
late = tokens[start:-1].mean(dim=0) # supprimer le dernier [SEP]
for name, emb in [("naive", naive), ("late", late)]:
print(name, round(torch.cosine_similarity(query, emb, dim=0).item(), 3))Le segment intégré indépendamment obtient un score de 0,382 par rapport à la question, tandis que la même phrase, découpée tardivement, obtient un score de 0,62, car ses jetons ont tenu compte de « La pompe XR-12 » avant le regroupement.
La détection d’objets a connu la même évolution en 2015. R-CNN exécutait séparément un réseau convolutif sur chaque région proposée après découpage, tandis que Fast R-CNN l’exécutait une fois sur l’image entière et regroupait chaque région à partir des cartes de caractéristiques partagées. Avec un backbone VGG16, la détection à l’inférence était ainsi 213 fois plus rapide. Ultralytics YOLO26 exécute lui aussi son backbone une fois sur toute l’image et prédit chaque boîte à partir de ces caractéristiques partagées ; aucune détection n’est donc calculée à partir d’un recadrage isolé.
Découpage tardif et méthodes associées#
- Récupération contextuelle : Ajoute à chaque segment, avant l’indexation, une note rédigée par un LLM. Elle nécessite un appel au LLM par segment et améliore aussi la recherche par mots-clés, puisque le contexte ajouté est du texte.
- Interaction tardive ColBERT : Conserve un vecteur par jeton et les compare à la requête au moment de la recherche. Le découpage tardif regroupe chaque segment en un seul vecteur, qui peut donc être utilisé dans n’importe quel index vectoriel standard.
- Chevauchement des segments : Répète quelques phrases dans les segments voisins. Il ne préserve que le contexte proche et augmente la taille de l’index.
- Modèles de reclassement : Réordonnent les candidats récupérés à l’aide d’un modèle plus puissant après la première recherche et se combinent bien avec le découpage tardif.
Quand le découpage tardif est utile#
Les gains sont les plus importants lorsque les segments dépendent du texte précédent, par exemple à cause de pronoms, d’abréviations définies une seule fois ou de récits comme des rapports et des manuels ; ils sont les plus faibles pour les notices courtes et autonomes, comme les titres de produits. Cette méthode nécessite un modèle d’intégration qui regroupe les jetons par moyenne et dont les sorties au niveau des jetons sont accessibles. Elle impose aussi de réencoder le document entier dès qu’une partie change. Les vecteurs de segments issus du découpage tardif s’intègrent tels quels dans une base de données vectorielle ordinaire. L’API d’intégration de Jina expose cette méthode sous la forme d’un paramètre late_chunking qui intègre une liste de segments consécutifs comme un seul document.










