Qu’est-ce que le chunking ?
Le chunking (découpage) est l’étape d’un pipeline RAG qui consiste à diviser un document volumineux en fragments plus petits, appelés chunks. Chaque chunk est ensuite transformé en embedding et stocké dans un vector store pour permettre la recherche sémantique.
Le chunking est une des étapes les plus déterminantes pour la qualité d’un système RAG. Un bon découpage garantit que chaque fragment contient une idée cohérente et suffisamment de contexte pour être utile au LLM. Un mauvais découpage produit des fragments tronqués qui dégradent les réponses.
Stratégies de chunking
Découpage par taille fixe
La méthode la plus simple : découper le texte tous les N tokens (ou caractères), avec un chevauchement (overlap) configurable entre les chunks consécutifs.
- Avantage : simple à implémenter, prévisible
- Inconvénient : ignore la structure du texte, peut couper une phrase ou une idée au milieu
Paramètres typiques : chunks de 500-1 000 tokens, overlap de 50-200 tokens.
Découpage par structure
Le texte est découpé selon ses délimiteurs naturels : paragraphes, sections (H1/H2/H3), pages, ou sauts de ligne doubles.
- Avantage : respecte la logique du document, chaque chunk est sémantiquement cohérent
- Inconvénient : taille irrégulière des chunks (certaines sections sont très longues, d’autres très courtes)
Découpage sémantique
Une approche avancée qui utilise des embeddings pour détecter les changements de sujet dans le texte. Quand la similarité entre deux phrases consécutives chute, un nouveau chunk commence.
- Avantage : le découpage suit la structure sémantique réelle du texte, pas sa mise en forme
- Inconvénient : plus lent (nécessite un modèle d’embedding à l’étape de chunking), plus complexe à implémenter
Découpage récursif
La méthode la plus utilisée en production. Le texte est d’abord découpé par les délimiteurs les plus larges (sections), puis les chunks trop grands sont re-découpés par les délimiteurs suivants (paragraphes, phrases) jusqu’à atteindre la taille cible.
C’est l’approche par défaut de LangChain (RecursiveCharacterTextSplitter) et de la plupart des frameworks RAG.
L’impact du chevauchement (overlap)
Le chevauchement est le nombre de tokens partagés entre deux chunks consécutifs. Il sert à éviter la perte d’information aux points de coupure.
Exemple sans overlap :
- Chunk 1 : “Le RAG réduit les hallucinations en fournissant”
- Chunk 2 : “des documents pertinents au modèle.”
L’idée est coupée en deux. Si la recherche ne retourne que le chunk 1, le LLM n’a pas l’information complète.
Exemple avec overlap de 20 % :
- Chunk 1 : “Le RAG réduit les hallucinations en fournissant des documents pertinents”
- Chunk 2 : “en fournissant des documents pertinents au modèle. Le reranking améliore…”
L’idée est présente en entier dans le chunk 1. Le coût : un stockage légèrement plus important dans le vector store.
Chunking et qualité du RAG
La qualité du chunking se mesure à deux critères :
- Recall : les chunks pertinents sont-ils retrouvés par la recherche ? Si le chunking a coupé l’information en deux, un seul fragment sera récupéré
- Precision : les chunks retrouvés contiennent-ils principalement de l’information utile ? Si les chunks sont trop grands, l’information pertinente est noyée dans du texte inutile
Bonnes pratiques
- Commencer par le récursif : le découpage récursif offre le meilleur rapport simplicité/qualité. Ne passer aux méthodes sémantiques que si les résultats sont insuffisants
- Tester sur des requêtes réelles : créer un jeu de test avec 20-30 questions types et vérifier que les bons chunks sont retournés par la recherche
- Adapter la taille au contenu : des FAQ nécessitent des chunks courts (200-300 tokens), de la documentation technique nécessite des chunks plus longs (800-1 500 tokens)
- Inclure les métadonnées : enrichir chaque chunk avec ses métadonnées (titre de section, numéro de page, source) pour faciliter le filtrage et améliorer la traçabilité
- Traiter les tableaux séparément : les tableaux perdent leur structure quand ils sont découpés comme du texte brut. Les extraire et les stocker comme des chunks indépendants préserve leur lisibilité
Termes associés
Questions fréquentes
C'est quoi le chunking en RAG ?
Le chunking est l'étape de découpage d'un document en fragments (chunks) avant de les transformer en embeddings et de les stocker dans un vector store. Cette étape est critique : la taille et la méthode de découpage déterminent directement la qualité des résultats de recherche. Des chunks trop petits perdent le contexte ; des chunks trop grands diluent l'information pertinente.
Quelle est la différence entre chunking et tokenisation ?
La tokenisation découpe du texte en tokens (unités de quelques caractères) pour les besoins du modèle de langage. Le chunking découpe un document en fragments (typiquement 200 à 2 000 tokens chacun) pour les besoins du pipeline RAG. La tokenisation est automatique et gérée par le modèle. Le chunking est un choix d'architecture qui impacte la qualité du système.
Quelle est la taille idéale d'un chunk ?
Il n'y a pas de taille universelle — cela dépend du type de contenu et du cas d'usage. Pour des FAQ et paragraphes courts : 200-500 tokens. Pour des articles et documentation : 500-1 000 tokens. Pour des textes techniques denses : 1 000-2 000 tokens. Le paramètre clé est le chevauchement (overlap) : 10-20 % de recouvrement entre chunks consécutifs évite de couper une idée en deux.
Le chunking influence-t-il les hallucinations du LLM ?
Oui, indirectement. Un mauvais chunking peut fournir au LLM des fragments incomplets ou hors contexte, ce qui l'amène à compléter avec des informations inventées. Un chunk qui coupe une phrase au milieu ou qui sépare une condition de sa conclusion force le modèle à deviner — et donc potentiellement à halluciner. Un découpage qui respecte la structure logique du texte réduit ce risque.