Toutes les publications

Découper un document : le choix qui décide de tout

RAGDonnéesArchitectureMéthode2023-05-168 min

On débat du modèle pendant des semaines et on découpe le corpus en dix minutes. C'est l'inverse qu'il faudrait faire.

Le paramètre le plus sous-estimé

Dans un système de récupération documentaire, la qualité des réponses dépend d'abord de ce qui est retrouvé. Et ce qui est retrouvé dépend de la façon dont le corpus a été découpé en morceaux indexables.

C'est un paramètre qu'on règle en général au hasard, mille caractères, deux cents de recouvrement, parce qu'il paraît technique et secondaire. Il est structurant.

Le paramètre le plus sous-estimé

Pourquoi un découpage arbitraire échoue

Couper tous les mille caractères sépare une clause de sa condition d'application, un tableau de son en-tête, une définition du terme qu'elle définit.

Le morceau retrouvé est alors syntaxiquement correct et sémantiquement inutilisable : le modèle reçoit une phrase vraie hors de son contexte, et il en tire une réponse fausse avec assurance. C'est la source d'erreur la plus fréquente et la plus difficile à diagnostiquer, parce que le journal montre que le bon document a bien été retrouvé.

Les règles que j'applique

  • Découper sur la structure du document, pas sur un nombre de caractères : par article, par section, par ligne de tableau.
  • Rattacher le contexte au morceau : titre du document, date, section parente, statut. Ce préfixe coûte quelques dizaines de mots et sauve la moitié des réponses.
  • Ne jamais couper un tableau : soit il tient entier, soit chaque ligne porte l'en-tête recopié.
  • Traiter les documents scannés à part : un texte issu de reconnaissance optique se découpe mal et se cherche mal, il faut le savoir avant, pas après.
  • Dater chaque morceau à l'indexation, et faire afficher cette date avec la réponse.

Le test qui révèle un mauvais découpage

Prendre dix morceaux au hasard dans l'index et les lire seuls, sans rien d'autre. Si l'un d'eux ne permet pas de savoir de quel document il vient ni de quoi il parle, le découpage est à refaire, et aucun réglage de modèle ne compensera.

Ce que ça change en pratique

Sur un corpus contractuel que j'ai repris après un premier échec, le seul passage d'un découpage par longueur fixe à un découpage par article, avec le titre du contrat et sa date en préfixe, a fait passer le taux de réponses exploitables d'environ une sur deux à plus de quatre sur cinq.

Aucun changement de modèle, aucun changement de prompt. C'est le meilleur rendement que je connaisse sur ce type de système.

Ce que les grandes fenêtres ont changé au découpage

Quand la fenêtre passe de quinze à trois cents pages, on cesse de chercher le passage exact pour chercher le document pertinent, et la maille du découpage remonte d'un cran. C'est le déplacement majeur depuis la formulation initiale de ces règles.

Le découpage fin, mille caractères, avec recouvrement, répondait à une contrainte de place. Cette contrainte a largement disparu : on peut désormais récupérer des sections entières, voire des documents complets, ce qui préserve les renvois internes qu'un découpage fin détruisait.

Le réglage qui fonctionne aujourd'hui combine les deux : chercher fin pour trouver, fournir large pour répondre. C'est le raisonnement développé dans Claude 2 : ce que déverrouillent cent mille jetons.

Le défaut que le découpage ne corrige jamais

Un mauvais découpage se répare par une réindexation ; un corpus contenant plusieurs versions d'un même document ne se répare par aucun réglage technique. Il faut distinguer les deux problèmes, qui se ressemblent de l'extérieur.

Le symptôme est identique : le système remonte un passage qui ne convient pas. La cause diffère. Dans un cas, le passage est coupé au mauvais endroit. Dans l'autre, il provient d'une version abrogée que rien ne distingue de la version en vigueur.

Le diagnostic se fait en regardant le document source, pas l'extrait. Et la seconde cause relève d'une décision humaine, comme rappelé dans le corpus est le projet.

Questions fréquentes

Quelle taille de découpe choisir ?

Celle qui préserve l'unité de sens du document : une clause avec sa condition, une section avec son titre. Une taille fixe en caractères coupe au milieu d'une phrase et rend la réponse fausse sans aucun signal.

Les grandes fenêtres suppriment-elles le besoin de découper ?

Non, elles remontent la maille : on cherche fin pour trouver le bon document, et on fournit large, section ou document entier, pour préserver les renvois internes.

Comment détecter un mauvais découpage ?

En lisant les extraits fournis pour dix questions ayant mal fonctionné. Un extrait qui commence au milieu d'une phrase ou qui sépare une règle de son exception signale le problème immédiatement.

Le découpage peut-il corriger un corpus désordonné ?

Non. Un passage tiré d'une version abrogée sera correctement découpé et faux. Cette cause relève d'une décision humaine sur la hiérarchie des sources, pas d'un réglage technique.

Ce qu'il faut conserver avec chaque extrait

Un extrait sans métadonnées est inexploitable : il faut lui joindre son document d'origine, sa date et sa position dans le texte. C'est le complément indispensable du découpage, et il est régulièrement oublié.

Ces trois informations servent trois choses distinctes. Le document d'origine permet d'afficher la source, qui est le principal facteur de confiance dans un système documentaire. La date permet à l'utilisateur de savoir qu'il consulte un état ancien. La position permet de récupérer le contexte immédiat quand l'extrait seul ne suffit pas.

J'y ajoute systématiquement une quatrième information : le statut du document, en vigueur, abrogé, brouillon, quand le corpus le porte. C'est elle qui permet au système de refuser de répondre sur une version périmée plutôt que de le faire avec assurance.

Ces métadonnées coûtent quelques lignes à l'indexation et évitent la classe d'incidents la plus difficile à diagnostiquer, comme le rappelle l'observabilité des systèmes IA.