Comment évaluer les systèmes RAG avec l'annotation humaine
Un guide pratique pour évaluer la génération augmentée par récupération : notez séparément la pertinence de la récupération et la fidélité des réponses, et marquez les affirmations non étayées avec l'annotation de segments dans Potato.
Un système de génération augmentée par récupération peut échouer de deux manières totalement différentes, et un score de qualité unique masque celle à laquelle vous avez affaire. Soit le récupérateur a extrait les mauvais documents, soit le générateur disposait de bons documents et les a ignorés. Si vous mesurez seulement « la réponse est-elle bonne », vous ne pouvez pas distinguer ces deux cas, et vous ne pouvez pas savoir quelle moitié du système corriger.
La solution consiste à évaluer séparément la récupération et la génération, et à marquer exactement l'endroit où une réponse s'écarte de ses sources.
Les trois choses qui méritent d'être annotées
- La pertinence de la récupération. Pour chaque document récupéré, est-il réellement pertinent par rapport à la requête ?
- La fidélité de la réponse. La réponse générée est-elle ancrée dans ces documents, sans affirmations inventées ?
- L'exactitude des citations. Les affirmations de la réponse renvoient-elles bien aux sources qu'elle cite ?
En les gardant séparées, on transforme un vague « la réponse est mauvaise » en « le bon document a été récupéré, mais le modèle a ajouté une affirmation qui n'y figure pas ». C'est un problème de génération, qui appelle une correction différente de celle d'un échec de récupération.
La mise en place dans Potato
Vous pouvez placer les trois sur un seul écran. Notez chaque document récupéré sur la même échelle avec multirate, évaluez la fidélité avec une échelle de Likert et surlignez les segments problématiques dans la réponse.
annotation_schemes:
- annotation_type: multirate
name: retrieval_relevance
description: "Rate the relevance of each retrieved document to the query."
labels: ["Irrelevant", "Somewhat", "Relevant", "Highly relevant"]
- annotation_type: likert
name: faithfulness
description: "Is the answer faithful to the retrieved documents?"
size: 5
min_label: "Many unsupported claims"
max_label: "Fully grounded"
- annotation_type: span
name: problems
description: "Highlight any unsupported or incorrect claim in the answer."
labels: [unsupported_claim, contradicted, hallucination]C'est le schéma de segments qui rend les données exploitables. Un score de fidélité de 2 sur 5 vous indique que quelque chose ne va pas ; un segment surligné vous indique quelle phrase et pourquoi.
Ce qui sabote discrètement l'évaluation RAG
Les annotateurs ne peuvent pas juger la fidélité sans les sources. Affichez la requête, les documents récupérés et la réponse sur le même écran. Si les documents sont repliés ou dans un autre onglet, les gens noteront la réponse selon qu'elle paraît juste, ce qui est précisément le mode d'échec que vous cherchez à détecter.
« Pertinent » a besoin d'une définition. Pertinent par rapport à la requête, ou réellement utilisé dans la réponse ? Ce sont des jugements différents, et les annotateurs se diviseront à leur sujet si vous ne tranchez pas au préalable.
La fidélité est le critère subjectif. Collectez un recoupement sur un échantillon et vérifiez spécifiquement l'accord sur les notes de fidélité. Si l'accord y est faible, resserrez la définition de « non étayé » avant de vous fier aux chiffres.
Pour aller plus loin
L'explication complète, y compris la façon dont les trois schémas s'articulent, se trouve dans le guide d'évaluation RAG. Pour marquer les erreurs factuelles et les hallucinations dans n'importe quelle sortie de modèle, pas seulement RAG, consultez Détecter les hallucinations avec l'annotation de segments. Et si vous évaluez des agents de manière plus large, commencez par Comment évaluer les agents d'IA.