STous les projets
en
Tous les projets

Évaluation RAG · Outillage de recherche

RAGlign

Pointez-le vers vos documents : il vous dit quelle configuration RAG utiliser, et le prouve.

L'évaluation RAG comporte un biais plus grand que les différences qu'elle cherche à mesurer. RAGlign mesure ce biais, le supprime, puis utilise les métriques corrigées pour classer 30 configurations face à vos propres documents — hors ligne, sur CPU, sans base vectorielle.

0configurations évaluées
0.6hit@5 de biais mesuré
+0.95recherche ↔ qualité des réponses

Problème

Construire un système RAG impose de choisir une stratégie de découpage, un moteur de recherche, et s'il faut réordonner. Ces choix interagissent, la bonne réponse dépend des documents, et la plupart des équipes tranchent à l'intuition. Mesurer aide moins qu'il ne le devrait, car la mesure standard est biaisée : la vérité terrain est enregistrée comme un identifiant de chunk, or le chunk 57 n'existe qu'à l'intérieur d'une seule stratégie de découpage. Évaluer une autre stratégie face à lui revient à mesurer la similarité des points de coupe, pas la qualité de la recherche.

Objectifs

  • Remplacer la vérité terrain par identifiant de chunk par une référence appartenant aux documents plutôt qu'à une stratégie de découpage.
  • Quantifier ce que vaut le simple fait de rédiger la vérité terrain, et si cela change la conclusion.
  • Classer 30 configurations sur un corpus réel et expliquer le rang de chacune.
  • Désigner l'étape responsable de chaque question manquée, car les étapes appellent des correctifs opposés.
  • Vérifier qu'une meilleure recherche produit réellement de meilleures réponses.

Mise en œuvre

  • La vérité terrain est un intervalle de caractères dans le fichier d'origine. Chaque question porte une courte citation copiée du corpus ; l'outil la localise et en déduit les positions, et une citation qui n'apparaît plus mot pour mot est rejetée plutôt que de se dégrader en silence.
  • Un invariant est vérifié sur chaque chunk de chaque stratégie : le texte extrait du document aux positions du chunk doit être identique au chunk lui-même. Une dérive de positions ne provoque aucune erreur — elle produit des métriques plausibles et fausses. Elle a révélé un vrai bug : un dépôt récupéré avec des fins de ligne CRLF faisait échouer toutes les citations multilignes.
  • La grille combine cinq stratégies de découpage, trois moteurs de recherche et le réordonnancement activé ou non, et fait passer chaque question par les trente pipelines.
  • Les métriques de recherche relèvent de l'arithmétique sur le recouvrement de segments, et non d'un jugement par LLM : elles se rejouent à l'identique. Utiliser un LLM pour valider une méthodologie dont l'argument est le déterminisme serait circulaire.
  • Pas de base vectorielle : environ 2 000 chunks en 384 dimensions représentent une matrice NumPy de 3 Mo, et la recherche exhaustive est exacte et sous la milliseconde. Une recherche approximative introduirait un facteur confondant dans une étude portant sur la justesse de la recherche.
  • Une étude de validation note chaque stratégie deux fois, sur les mêmes questions et les mêmes résultats de recherche — une fois par identifiant de chunk, une fois par alignement de segments — puis fait tourner la stratégie qui rédige la vérité terrain.
  • Une boucle de génération referme l'écart avec l'utilisateur : un modèle répond à partir du contexte de chaque configuration, et un modèle différent juge, les juges favorisant leurs propres productions.

Architecture

Vérité terrain

Corpus
  • documents
  • ~40 questions
  • verbatim quotes
Segments
  • quote resolved to character span
  • offset invariant asserted

Évaluation

Grille
  • 5 chunkers
  • 3 retrievers
  • reranker on / off
Notation
  • span overlap
  • hit@k
  • MRR
  • nDCG
  • bootstrap CIs

Analyse

Diagnostic
  • chunker destroyed / degraded
  • retriever missed
  • reranker demoted
Classement
  • quality / latency / context weights
  • templated explanation
Restitution
  • Streamlit dashboard
  • CLI scripts

Technologies

  • Python
  • sentence-transformers
  • BM25
  • NumPy
  • Streamlit
  • pytest
  • bootstrap CIs

Difficultés & solutions

Difficulté

Une vérité terrain exprimée en identifiant de chunk appartient à la stratégie qui l'a produite : comparer d'autres stratégies revient à mesurer leur accord avec ses points de coupe.

Solution

Stocker l'intervalle dans le document source. Chaque stratégie est alors interrogée sur le fait d'avoir retrouvé le texte qui répond, et aucune n'a rédigé la question.

Difficulté

Affirmer que le biais est réel pourrait n'être qu'un artefact de la stratégie ayant rédigé la vérité terrain.

Solution

Faire tourner le rédacteur entre les stratégies. Un effet de complaisance se dissoudrait ; celui-ci a tenu, et s'est reproduit sur un corpus sans aucun balisage.

Difficulté

L'objection évidente : ce ne serait qu'une correspondance stricte déguisée.

Solution

Balayer le seuil de recouvrement. En relâchant le critère de IoU ≥ 0,9 jusqu'à 0,3, le biais décroît régulièrement vers zéro : la correspondance par identifiant ne devient non biaisée qu'une fois assouplie en recouvrement de segments, ce qui constitue l'argument et non un contre-exemple.

Difficulté

Mesurer le recouvrement par IoU classerait les stratégies selon la taille des chunks plutôt que selon leur qualité.

Solution

Mesurer la couverture. Le découpage par titres couvre parfaitement 11 segments de preuve sur 11 tout en obtenant le plus mauvais IoU, uniquement parce que ses chunks sont plus grands ; le surplus de contexte est rapporté séparément comme un coût de budget.

Difficulté

Un score indique qu'une question a échoué, sans dire quelle étape l'a perdue, alors que les étapes appellent des correctifs opposés : aucun modèle d'embedding ne rattrape une preuve détruite au découpage.

Solution

Demander si un chunk de l'index aurait pu répondre — question formulable seulement quand la vérité terrain est une position — et classer chaque échec en découpage détruit, découpage dégradé, recherche manquée, réordonnancement déclassant, ou rang trop bas.

Biais de vérité terrain

CorpusQuestionsVérité terrain par identifiant de chunkAlignement par segment
FastAPI docs41+0.569 … +0.675+0.016 … +0.049
Public-domain prose43+0.589 … +0.744−0.116 … +0.101
Les mêmes stratégies, les mêmes questions et les mêmes résultats de recherche, notés deux fois — une fois selon une vérité terrain par identifiant de chunk, une fois par alignement de segments. Toute différence provient de la seule vérité terrain.

Résultats

  • Le simple fait de rédiger la vérité terrain vaut environ 0,6 hit@5 — plusieurs fois l'écart de qualité réel entre les stratégies comparées — et fait basculer la configuration recommandée dans 3 rotations sur 4.
  • L'effet se reproduit sur un corpus sans aucun balisage : ce n'est donc pas une propriété d'un seul style de document.
  • Le diagnostic par question sépare les échecs qui appellent un autre découpage de ceux qui appellent un autre moteur de recherche. Sur des chunks de 300 caractères, 8 échecs sur 11 venaient du découpage et aucun du moteur — l'évaluation standard rapporte cela comme un faible hit@5 et vous envoie changer de modèle d'embedding.
  • La qualité de la recherche prédit celle des réponses à r ≈ +0,95, mesuré en faisant répondre un modèle à partir du contexte de chaque configuration et juger par un modèle différent.

Enseignements

  • La mesure était la partie difficile, pas la recherche. L'essentiel de l'ingénierie a servi à rendre les chiffres dignes de confiance plutôt qu'à améliorer la recherche elle-même.
  • Vérifier les invariants plutôt que leur faire confiance. L'assertion sur les positions a révélé un bug CRLF qui aurait sinon produit des résultats plausibles et entièrement faux.
  • La taille d'échantillon remet à sa place. Un résultat selon lequel le découpage comptait bien davantage sur les documents structurés tenait à 11–14 questions et s'est évaporé à 41–43 — et sur un petit échantillon, l'effet reproductible et celui qui a disparu étaient rapportés avec la même assurance.
  • Un positionnement honnête vaut mieux qu'une revendication de nouveauté. La vérité terrain par segments existe déjà dans la littérature ; ce qui manquait, c'était un outil réutilisable et non une technique inédite — c'est la revendication plus modeste, et la juste.