Chunking RAG : comparatif des stratégies, tailles optimales et paramètres d’overlap pour un retrieval performant
Le chunking sémantique surpasse le découpage fixe grâce aux embeddings similaires, avec +15 à 30 % de précision.
- Similarité des embeddings pour détecter les changements de sujet.
- TextTiling adapté aux ruptures de cohésion lexicale.
- Documents narratifs : romans, articles, rapports.
- Articles scientifiques : méthode, résultats, discussion isolés.
- Coût de calcul élevé : vectorisation de chaque phrase.
- Le chunking récursif préserve titres et paragraphes complets.
Le chunking sémantique : segmentation par similarité des embeddings
Le chunking sémantique abandonne la logique de découpe mécanique pour s’appuyer sur la signification du texte, une approche qui s’inscrit dans le fonctionnement du RAG. L’objectif est simple : regrouper les phrases qui parlent du même sujet et couper là où le thème change. Contrairement au découpage à taille fixe qui ignore les limites naturelles du langage, cette approche produit des segments cohérents qui préservent l’idée complète.
Principe de fonctionnement et détection des ruptures de sujet
La méthode repose sur la similarité des embeddings entre phrases consécutives, un principe proche du regroupement sémantique. Concrètement, chaque phrase est convertie en vecteur numérique via un modèle d’embedding, puis on mesure la distance cosinus entre chaque paire de phrases adjacentes. Lorsque la similarité chute brutalement entre deux phrases, c’est qu’un changement de sujet s’est produit : c’est là qu’on place la limite du chunk.
Ce processus s’appuie sur les travaux de segmentation textuelle classiques comme le TextTiling, qui détecte les ruptures de cohésion lexicale. La version moderne utilise des embeddings plutôt que le simple vocabulaire partagé, ce qui permet de capturer des relations sémantiques plus fines par exemple reconnaître que « chien », « canin » et « animal de compagnie » appartiennent au même champ thématique.
Performance, coût et cas d’usage pertinents
- Précision accrue de 15 à 30 % par rapport au chunking à taille fixe pour la récupération d’informations.
- Coût de calcul plus élevé : chaque phrase doit être vectorisée individuellement avant la découpe.
- Nécessite un modèle d’embedding de qualité le choix du modèle impacte directement la pertinence des ruptures détectées.
- Documents narratifs : romans, articles de fond, rapports où le fil du discours importe.
- Articles scientifiques : les sections méthodologie, résultats et discussion sont naturellement isolées.
En pratique, le gain de qualité se manifeste surtout sur des corpus hétérogènes où les sujets alternent rapidement, un avantage à mettre en balance avec le fine-tuning vs RAG. Pour des logs techniques uniformes ou des données structurées, l’avantage en vaut rarement le coût supplémentaire. Le chunking sémantique brille là où la signification prime sur la longueur, et où une phrase coupée en deux perdrait tout son sens.
Le chunking récursif et hiérarchique : préserver la structure du document

Lorsque vos documents possèdent une organisation interne titres, sections, paragraphes le découpage naïf à taille fixe brise leur logique. Le chunking récursif répond à ce problème en respectant la hiérarchie naturelle du texte. Il tente d’abord de découper selon les séparateurs les plus larges (les doubles sauts de ligne), puis réduit progressivement la granularité (sauts de ligne simples, ponctuation, mots) jusqu’à obtenir des segments conformes à la taille maximale définie. Cette approche préserve les unités sémantiques complètes : un paragraphe entier reste un paragraphe, une phrase ne se retrouve pas coupée en deux.
Les avantages de cette méthode sont concrets :
– Préservation de la structure : les titres et sections restent associés à leur contenu
– Cohérence contextuelle : chaque chunk garde une autonomie de sens
– Polyvalence : fonctionne aussi bien sur du Markdown, du HTML ou du texte brut
– Performance stable : meilleur compromis généraliste, recommandé par défaut pour 90 % des cas d’usage avec des chunks de 512 à 1 024 tokens
Le splitter récursif : le compromis généraliste de référence
Popularisé par LangChain, le RecursiveCharacterTextSplitter reste la référence en matière de découpage. Son principe est simple : il définit une liste ordonnée de séparateurs et applique une logique descendante. Concrètement, il essaie de découper le texte aux limites de paragraphes (nn), puis de lignes (n), puis de phrases (.) et enfin de mots (espace). Cette hiérarchie garantit que les unités les plus grandes sont conservées chaque fois que possible.
Pour un usage standard, une taille de 512 tokens avec un chevauchement de 50 tokens offre un équilibre idéal entre contexte et précision, à l’image des index et des stratégies de jointure pour optimiser les requêtes PostgreSQL. Le splitter gère également les documents hiérarchiques : sur un fichier Markdown, il identifie les titres de niveau 1, 2, 3 et découpe en respectant cette arborescence. Résultat : les chunks qui alimenteront votre base vectorielle conservent une logique narrative complète, ce qui améliore directement la qualité du retrieval, une étape clé avant l’implémentation en production.
La stratégie parent-child et les autres approches hiérarchiques
Le chunking parent-child, implémenté notamment dans LlamaIndex, pousse la logique hiérarchique plus loin. Il repose sur une idée simple : indexer des fragments courts (les « enfants ») pour la recherche, mais renvoyer au modèle de langage des blocs plus larges (les « parents ») pour la génération. La hiérarchie typique se décline en trois niveaux : 2 048 tokens pour le parent, 512 pour l’intermédiaire, 128 pour l’enfant.
Le fonctionnement se décompose en plusieurs étapes: – Indexation précise : les chunks enfants de 128 tokens sont vectorisés pour la recherche
– Récupération multi-granularité : la correspondance s’effectue sur les fragments courts
– Rendu contextuel : le parent de 2 048 tokens est injecté dans le prompt pour la réponse finale
Cette stratégie offre un double avantage : une précision de retrieval élevée (les correspondances fines sont détectées) et une riche contexte pour la génération (le modèle dispose de l’intégralité de la section). D’autres approches structurelles existent, comme le découpage par éléments Markdown ou HTML, qui identifie les balises de titre et de section pour créer des chunks alignés sur la structure éditoriale du document. Cette méthode est particulièrement adaptée aux bases de connaissances, documentations techniques et articles longs.
Évaluer les performances du chunking : métriques et bonnes pratiques de test
Pour les entreprises locales, cette structuration par thèmes peut s’apparenter aux stratégies de SEO géographique, où chaque zone desservie devient un segment à part entière.
Pour valider une stratégie de découpage, il ne suffit pas de mesurer un seul indicateur. Une évaluation robuste combine des métriques de récupération avec une validation sur des questions réelles. Le benchmark BEIR reste la référence pour comparer vos résultats sur des corpus hétérogènes et publier des chiffres reproductibles.
- Precision@k et Recall@k : mesurent si la preuve attendue apparaît dans les 20 documents récupérés avant reranking.
- MRR (Mean Reciprocal Rank) : évalue le classement ; une précision parfaite place le chunk attendu en 1ʳᵉ position.
- Faithfulness : vérifie que la réponse finale ne s’appuie que sur les fragments récupérés, sans hallucination.
Construire un protocole d’étalonnage fiable
Commencez par constituer un jeu de test représentatif. Une approche pratique consiste à générer 100 questions synthétiques à partir des titres de sections, puis à sélectionner 20 chunks aléatoires pour une validation humaine. Ce double étalonnage permet de détecter les faux positifs du modèle d’embedding. Pour une base de 1733 chunks, cette méthode offre une confiance statistique suffisante sans annotation manuelle coûteuse.
Comparez ensuite plusieurs stratégies sur ce même corpus. Fixez la taille (512 tokens par exemple), faites varier la méthode de découpage, puis mesurez les quatre métriques précédentes. Un gain de +25% de précision de retrieval sur le chunking optimal se traduit souvent par une amélioration de 20 à 40% de la pertinence des réponses sans changer le moindre paramètre du LLM.
Enfin, vérifiez l’impact budgétaire : chaque requête envoyée à l’API OpenAI consomme jusqu’à 8192 tokens d’entrée par requête, avec un total de 300k tokens possible. Un chunking plus fin réduit la redondance et peut économiser jusqu’à 50% des coûts d’entrée grâce au prompt caching. Mesurez toujours le coût par requête pertinente, pas seulement la précision brute.
Impact de l’overlap sur la cohérence contextuelle du retrieval
L’overlap (ou chevauchement) consiste à faire se recouper légèrement les chunks consécutifs. Sans lui, une idée coupée en deux aux frontières perd son sens : le début du raisonnement se trouve dans un chunk, sa conclusion dans un autre, et le modèle ne voit jamais l’ensemble. Ce problème est particulièrement critique pour les phrases longues ou les listes à puces.
Un chevauchement de 10 à 20 % constitue le compromis idéal pour réduire cette perte d’information sans gonfler inutilement le stockage. Pour un chunk fixe de 512 tokens, un overlap de 100 tokens est une valeur courante ; pour un splitter récursif, 50 tokens suffisent. Augmenter le chevauchement améliore le rappel, mais alourdit la recherche et le coût d’embedding. Gardez-le strictement inférieur à la taille du chunk, sous peine d’erreur système.
Comparatif des stratégies de chunking : fixe, sémantique, récursive, agentique
| Stratégie | Principe de découpe | Atout principal | Limite principale |
|---|---|---|---|
| Fixe | Nombre de tokens constant | Simple et rapide à implémenter | Coupe à l’aveugle, ignore la sémantique |
| Récursive | Séparateurs hiérarchiques : nn → n → phrases | Meilleur compromis généraliste | Nécessite un réglage fin des paramètres |
| Sémantique | Similarité des embeddings entre phrases | +15 à 30% de précision de récupération | Coût calcul plus élevé |
| Agentique | LLM décide des limites de chunks | Adaptation fine au contenu | Lent, coûteux, difficile à déboguer |
Quelle stratégie pour quel contexte ?
Le chunking fixe reste pertinent pour le prototypage rapide, les logs IT ou les données structurées uniformes. Une taille de 512 tokens avec un chevauchement de 100 tokens constitue un point de départ fiable. En revanche, pour des documents riches et variés, la coupe à l’aveugle brise les phrases et disperse les idées au-delà de 2048 tokens, la dilution sémantique dégrade nettement la pertinence du retrieval.
Le splitter récursif répond à cette faiblesse en respectant la hiérarchie naturelle du texte : il tente d’abord de découper sur les doubles sauts de ligne, puis sur les sauts simples, les phrases et enfin les mots. Il préserve ainsi les unités de sens les plus grandes possibles. Avec une taille de 512 à 1024 tokens et un overlap de 50 tokens, il couvre environ 90% des cas d’usage c’est le choix par défaut le plus sûr.
Le chunking sémantique pousse la logique plus loin : il mesure la similarité entre les embeddings de phrases consécutives et coupe aux ruptures de sujet. Cette approche améliore la précision de récupération de +15 à 30% par rapport à la taille fixe, mais exige un modèle d’embedding supplémentaire et un coût de calcul plus important. Le chunking agentique, où un LLM délimite lui-même les frontières, représente la nouvelle frontière : plus flexible, mais lent et difficile à déboguer à grande échelle.
Un point clé ressort des tests comparatifs : le modèle d’embedding BGE surpasse E5 sur tous les types de découpage. Le choix du chunker ne compense jamais un mauvais embedding les deux leviers se cumulent. En pratique, commencez par le récursif, mesurez la précision sur vos données, puis testez le sémantique si le gain potentiel justifie le surcoût.
Chunking à taille fixe et dimensionnement optimal des chunks
Le chunking à taille fixe reste l’approche la plus simple et la plus rapide à mettre en œuvre. Il découpe le texte en segments de 256 à 1024 tokens, avec un chevauchement de 10 à 20% pour préserver le contexte aux frontières. Pour une taille de chunk de 512 tokens, un overlap de 100 tokens constitue un réglage équilibré entre coût de stockage et qualité du retrieval.
Le choix de la taille dépend surtout du type de contenu. Les textes denses comme les articles scientifiques préfèrent des segments de 200 à 500 tokens, tandis que les documents techniques s’accommodent de 500 à 1000 tokens. Les contenus narratifs peuvent atteindre 1500 tokens sans perdre en cohérence. Attention aux extrêmes : sous 128 tokens, le contexte devient insuffisant ; au-delà de 2048 tokens, la pertinence se dilue.
Pour un usage généraliste, visez 512-1024 tokens, la zone d’équilibre entre contexte et précision qui couvre 90% des cas d’usage. Le découpage à taille fixe ignore les frontières sémantiques, mais reste idéal pour le prototypage rapide, les logs informatiques et les données structurées uniformes.
FAQ : questions fréquentes sur le chunking RAG
Le chunking influence-t-il réellement la qualité des résultats ?
Oui, il s’agit du facteur le plus déterminant. Un mauvais découpage génère des fragments incomplets ou trop larges, ce qui dégrade la précision du retrieval et la pertinence des réponses générées par le modèle.
Comment choisir la taille idéale pour mes chunks ?
La taille optimale dépend de la nature de vos documents et du modèle utilisé. Testez plusieurs tailles entre 200 et 1000 tokens, en mesurant la précision du retrieval sur un jeu de données d’évaluation pour identifier la configuration gagnante.
