Évaluer la recherche et la génération : des preuves aux réponses correctes
Une réponse fluide ne prouve pas que la recherche a trouvé les bonnes sources. Une citation existante ne soutient pas nécessairement l'affirmation voisine. Il faut évaluer séparément la recherche des preuves et leur utilisation, puis le système complet. L'article Ragas distingue contexte retrouvé, fidélité et qualité de génération, et explore la notation assistée par modèle. La bibliothèque Python du même nom est toujours sur PyPI, mais au 2026-10-29 sa dernière version reste la 0.4.3, publiée le 2026-01-13.
Définir un cas d'évaluation
Pour un assistant fictif de manuels techniques, conserver la question, la réponse de référence, la version applicable, les passages justificatifs, les conditions indispensables et le comportement attendu sans preuve. Plusieurs formulations peuvent être correctes ; les faits essentiels et leurs sources sont plus stables qu'une unique phrase de référence.
Inclure identifiants exacts, reformulations, questions nécessitant plusieurs passages, conflits de versions et questions sans réponse. Partir des usages prévus. Des questions produites par un seul modèle à partir des documents risquent de reprendre leur vocabulaire et de sous-estimer les difficultés réelles. Les ajouts générés nécessitent encore de vérifier manuellement, sur un échantillon, qu'ils ont une réponse dans le corpus et des preuves à l'appui.
Regrouper les quasi-doublons dans la même partition pour éviter qu'une question de réglage revienne reformulée dans le test. Figer le corpus : une question auparavant sans réponse change de nature lorsqu'un nouveau document y répond.
Mesurer séparément rappel et classement
Si une question possède 3 passages pertinents annotés et que 2 apparaissent parmi les 5 premiers résultats, Recall@5 = 2/3. Certains passages se répètent ; d'autres apportent des faits complémentaires. Vérifier aussi si les preuves contiennent tous les faits nécessaires, sans récompenser les répétitions.
Pour la qualité de l’index, mesurer séparément le rappel ANN par rapport aux voisins exacts et ce rappel des preuves pertinentes.
Le MRR mesure la position du premier résultat pertinent. Des premiers résultats aux rangs 1 et 4, puis une absence, donnent (1 + 1/4 + 0) / 3 ≈ 0.417. Cette mesure convient à la recherche rapide d'un résultat utile, mais ne garantit pas la complétude d'une question à plusieurs preuves. Le nDCG accepte des degrés de pertinence et récompense les résultats précieux en tête, tout en dépendant des annotations.
rankings = [["a", "b", "c"], ["x", "y", "z"], ["m", "n", "o"]]
relevant = [{"a", "c"}, {"z"}, {"p"}]
recalls = [len(set(r) & truth) / len(truth)
for r, truth in zip(rankings, relevant)]
print(round(sum(recalls) / len(recalls), 3)) # 0.667
Ce calcul donne le Recall@3 macro-moyenné de trois questions fictives, avec un poids égal par question. Lorsque les jugements sont incomplets, préciser que le rappel porte sur les éléments pertinents annotés, sans assimiler tous les autres à du bruit.
Distinguer fidélité, justesse et complétude
La fidélité demande si le contexte fourni soutient les affirmations ; la justesse, si celles-ci correspondent aux faits applicables ; la complétude, si les conditions nécessaires sont présentes. Répéter fidèlement un ancien manuel peut donner une réponse fausse pour la version actuelle. Une phrase exacte mais hors sujet ne répond pas complètement.
Vérifier à la fois la précision des citations et la couverture des affirmations nécessitant une source. Une longue liste de liens ne démontre ni l'une ni l'autre. Pour les questions sans réponse, compter séparément réponses erronées et abstentions appropriées, pour éviter que les suppositions du système n'améliorent artificiellement son taux de réponses.
Confronter d’abord un modèle évaluateur à des étiquettes humaines
Faire noter les réponses par un autre grand modèle (LLM-as-judge) convient au tri à grande échelle, mais l’évaluateur a ses propres biais. L’étude MT-Bench et Chatbot Arena en nomme trois : le biais de position (préférer la réponse placée à un certain rang), le biais de verbosité (préférer les réponses longues) et l’auto-complaisance (préférer ses propres réponses). Panickssery et al. (2024) ont montré que plus un modèle reconnaît son propre texte, plus il le favorise. Il faut donc choisir un évaluateur d’une autre famille que le modèle testé, et ne jamais laisser le « réussi » du modèle testé tenir lieu de preuve.
Quand les réponses peuvent être comparées par paires, demander à l’évaluateur laquelle de deux réponses est la meilleure plutôt que de noter une réponse seule de 1 à 10. L’article MT-Bench note que la notation d’une réponse seule passe plus facilement à l’échelle, mais distingue mal les écarts fins, produit plus d’égalités et devient moins stable quand on change de modèle évaluateur. Pour une comparaison par paires, juger chaque paire deux fois en inversant l’ordre, et ne compter une victoire que si la même réponse l’emporte les deux fois ; sinon, noter une égalité.
Avant de faire confiance à l’évaluateur, le vérifier sur une trentaine d’exemples étiquetés à la main : les mêmes réponses, jugées une fois par vous et une fois par le modèle, puis compter les accords. Dans cet article, GPT-4 utilisé comme évaluateur s’accordait avec les préférences humaines dans plus de 80 % des cas, autant que deux humains entre eux. Si votre tâche en est loin, corriger la consigne et la grille d’évaluation, puis vérifier de nouveau. Vérifier de nouveau aussi dès que la consigne, les références ou la version du modèle évaluateur changent.
Utiliser quatre conditions diagnostiques
Conserver le même générateur et le même budget de réponse sur les mêmes questions :
Ces conditions servent au diagnostic, sans imposer un classement attendu. Si les bonnes preuves ne suffisent pas, examiner question, consignes et générateur. Si elles fonctionnent mais pas la recherche réelle, examiner rappel, reclassement et assemblage dans le parcours de recherche.
Relier qualité, coût et distribution
Comparer les anciennes et nouvelles réponses par paires sur les mêmes questions, en observant améliorations et régressions. Indiquer effectif et méthode d'échantillonnage : un ou deux changements dans un petit ensemble ne démontrent pas un gain stable. Répéter les générations révèle leur variabilité ; rééchantillonner les questions estime une incertitude, mais ne corrige pas un jeu non représentatif.
Mesurer aussi délai du premier token, latence totale, ressources de recherche et de génération, et abstention sur les questions sans réponse. Davantage de candidats et de contexte peuvent améliorer le rappel tout en ajoutant attente et distractions. Le choix porte sur un système adapté aux questions et au budget visés, pas sur un score maximal isolé.
Le chapitre de Stanford sur l’évaluation des résultats classés construit les courbes précision–rappel, la précision moyenne et le gain actualisé.