Cómo evaluar sistemas RAG con anotación humana
Una guía práctica para evaluar la generación aumentada por recuperación: puntúa por separado la relevancia de la recuperación y la fidelidad de la respuesta, y marca las afirmaciones sin respaldo con anotación de fragmentos en Potato.
Un sistema de generación aumentada por recuperación puede fallar de dos maneras completamente distintas, y una única puntuación de calidad oculta cuál de ellas estás viendo. O bien el recuperador trajo los documentos equivocados, o bien el generador tenía buenos documentos y los ignoró. Si solo mides "¿es buena la respuesta?", no puedes distinguir entre ambos casos ni saber qué mitad del sistema arreglar.
La solución es evaluar la recuperación y la generación por separado, y marcar exactamente dónde se aparta una respuesta de sus fuentes.
Las tres cosas que vale la pena anotar
- Relevancia de la recuperación. Para cada documento recuperado, ¿es realmente relevante para la consulta?
- Fidelidad de la respuesta. ¿Está la respuesta generada fundamentada en esos documentos, sin afirmaciones inventadas?
- Exactitud de las citas. ¿Las afirmaciones de la respuesta se remontan a las fuentes que cita?
Mantener todo esto separado convierte un vago "la respuesta es incorrecta" en "se recuperó el documento correcto, pero el modelo añadió una afirmación que no aparece en él". Eso es un problema de generación, y apunta a una solución distinta de la que requeriría un fallo de recuperación.
Cómo configurarlo en Potato
Puedes poner las tres cosas en una sola pantalla. Puntúa cada documento recuperado en la misma escala con multirate, evalúa la fidelidad con una escala Likert y resalta los fragmentos problemáticos en la respuesta.
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]El esquema de fragmentos es lo que hace que los datos sean accionables. Una puntuación de fidelidad de 2 sobre 5 te dice que algo está mal; un fragmento resaltado te dice qué frase y por qué.
Cosas que arruinan sigilosamente la evaluación de RAG
Los anotadores no pueden juzgar la fidelidad sin las fuentes. Muestra la consulta, los documentos recuperados y la respuesta en la misma pantalla. Si los documentos están plegados o en otra pestaña, la gente valorará la respuesta según si suena correcta, que es exactamente el modo de fallo que intentas detectar.
"Relevante" necesita una definición. ¿Relevante para la consulta, o realmente utilizado en la respuesta? Son juicios distintos y los anotadores se dividirán entre ellos a menos que lo decidas de antemano.
La fidelidad es la parte subjetiva. Reúne solapamiento en una muestra y comprueba la concordancia específicamente en las valoraciones de fidelidad. Si ahí la concordancia es baja, afina la definición de "sin respaldo" antes de fiarte de las cifras.
Cómo continuar
El recorrido completo, incluido cómo encajan entre sí los tres esquemas, está en la guía de evaluación de RAG. Para marcar errores factuales y alucinaciones en cualquier salida de un modelo, no solo en RAG, consulta Detectar alucinaciones con anotación de fragmentos. Y si estás evaluando agentes de forma más amplia, empieza por Cómo evaluar agentes de IA.