Le découpage convertit le contenu brut normalisé des pages en unités de récupération. De mauvais choix gonflent le coût (trop de fragments), dégradent le recall (blocs trop volumineux) ou diluent la précision (ruptures aux frontières). Il n’existe pas de méthode universellement meilleure ; la stratégie s’aligne sur la structure du corpus, sa volatilité et les motifs de requête. Ce guide cartographie l’espace de conception, les compromis, le flux d’évaluation et les leviers d’optimisation pour les pipelines RAG en production.
Pourquoi le découpage compte
Objectifs :
- Maximiser la probabilité que les faits pertinents apparaissent dans la récupération top‑k.
- Préserver la cohésion sémantique afin que les réponses générées soient ancrées.
- Optimiser l’utilisation des tokens (éviter d’incorporer à répétition du texte standard).
- Permettre des mises à jour incrémentales déterministes (identifiants de fragments stables).
Un découpage mal aligné se manifeste par : une forte redondance, un faible Recall@k, des faits hallucinés aux frontières et des dépenses d’embedding gonflées.
Découpage à fenêtre fixe
Fenêtres simples de N tokens (p. ex. 500 tokens). Avantages : déterministe, facile à implémenter, comportement de mise à jour stable. Inconvénients : les frontières coupent à travers les concepts ; un chevauchement redondant est nécessaire pour réduire la troncature → augmentation du coût. À utiliser avec parcimonie : bonne base de référence pour un contenu hétérogène ou peu structuré où les signaux sémantiques ne sont pas fiables.
Fenêtres glissantes avec chevauchement
Une taille de fenêtre W avec un chevauchement O (p. ex. 500 / 50 tokens) réduit la troncature des faits aux frontières. Un chevauchement supérieur à ~15 % produit des gains de recall décroissants tout en augmentant la taille de l’index. Suivez duplication_ratio = distinct_token_count / total_token_count pour ajuster O à la baisse.
Détection des frontières sémantiques
Segmentez selon les signaux structurels : titres H2/H3, regroupements de listes, blocs de code, frontières de tableaux. Imposez des bornes min/max de tokens (fusionnez les frères trop petits, divisez les sections trop grandes). Avantages : meilleure cohésion, moins de chevauchements. Risques : balisage malformé, hiérarchie de titres incohérente. Atténuez avec une réparation de la hiérarchie + un repli sur le découpage par paragraphes lorsque les titres sont absents.
Découpage hiérarchique
Index à deux niveaux : embeddings de section grossiers (p. ex. une section entière de tutoriel) + sous-fragments à granularité fine. Flux de récupération : ANN grossier → filtrer les N premières sections → récupération fine au sein de celles-ci. Avantages : réduit l’espace de recherche global pour les grands corpus, améliore la latence. Complexité : plus de pièces mobiles, besoin d’une logique de scoring en cascade.
Découpage adaptatif / dynamique
Ajustez les tailles de fragments en fonction de la densité sémantique locale et des indices structurels. Exemple de logique : commencez à une section de titre ; si >800 tokens → divisez par grappes de paragraphes notées par similarité sémantique ; si <120 tokens → fusionnez avec le frère suivant sauf si la divergence de sujet dépasse un seuil. Nécessite une passe préalable d’embedding ou de similarité ; payez le coût une fois à l’ingestion pour une meilleure efficacité de récupération à long terme.
Considérations sur les embeddings
Conservez des métadonnées : token_count, model_version, content_hash. Évitez la troncature : précalculez les tokens et divisez avant l’appel au modèle. Les modèles denses se dégradent avec un excès de texte standard ; supprimez les artefacts de navigation avant le découpage. Surveillez vector_density (termes uniques / tokens) pour faire ressortir les fragments à faible signal (candidats à une refusion).
Méthodes d’évaluation
Benchmarks par stratégie :
| Métrique | Objectif |
|---|---|
| Recall@k | Rétention des faits |
| Precision@k | Bruit du contexte |
| Nombre de fragments | Indicateur de coût |
| Ratio de duplication | Réglage du chevauchement |
| Tokens moyens par fragment | Utilisation de la fenêtre |
| Latence (récupération) | Efficacité de l’index |
Exécutez sur un jeu de requêtes de référence ; n’adoptez une stratégie que si les gains de recall l’emportent sur les écarts de coût et de latence.
Guide pratique d’implémentation
- Base de référence : fixe 500 + 10 % de chevauchement ; collectez des benchmarks.
- Introduisez des frontières sémantiques : remplacez les fenêtres là où les titres sont fiables ; remesurez.
- Ajoutez une couche hiérarchique si le corpus dépasse 250k fragments ou si la latence dépasse l’objectif.
- Déployez une logique adaptative pour les tailles de section à forte variance.
- Réévaluation trimestrielle : comparez le coût par delta de qualité face aux nouvelles capacités des modèles.
Stockez le diff du manifeste de fragments par itération pour permettre un retour arrière.
Points clés à retenir
- Les frontières sémantiques l’emportent généralement sur les fenêtres purement fixes en précision/coût.
- Le chevauchement est un curseur : mesurez la duplication, ne la devinez pas.
- La récupération hiérarchique aide à passer à l’échelle sans croissance linéaire de la latence.
- Des identifiants de fragments stables permettent un rafraîchissement incrémental sûr des embeddings.
- Évaluez les changements de stratégie comme des déploiements de code : benchmark, comparaison, journalisation.