Come valutare i sistemi RAG con l'annotazione umana
Una guida pratica per valutare la generazione aumentata dal recupero: valuta separatamente la pertinenza del recupero e la fedeltà della risposta, e contrassegna le affermazioni non supportate con l'annotazione di segmenti in Potato.
Un sistema di generazione aumentata dal recupero può fallire in due modi completamente diversi, e un unico punteggio di qualità nasconde quale dei due stai osservando. O il sistema di recupero ha estratto i documenti sbagliati, oppure il generatore aveva buoni documenti e li ha ignorati. Se misuri soltanto "la risposta è buona", non puoi distinguere questi due casi, e non puoi capire quale metà del sistema correggere.
La soluzione è valutare il recupero e la generazione separatamente, e contrassegnare esattamente dove una risposta si allontana dalle sue fonti.
Le tre cose che vale la pena annotare
- Pertinenza del recupero. Per ogni documento recuperato: è davvero pertinente alla query?
- Fedeltà della risposta. La risposta generata si fonda su quei documenti, senza affermazioni inventate?
- Accuratezza delle citazioni. Le affermazioni della risposta risalgono alle fonti che cita?
Tenere questi aspetti separati trasforma un vago "la risposta è sbagliata" in "il documento giusto è stato recuperato, ma il modello ha aggiunto un'affermazione che non vi è contenuta". Questo è un problema di generazione, e indica una correzione diversa da quella richiesta da un fallimento del recupero.
Configurarlo in Potato
Puoi mettere tutti e tre gli aspetti in un'unica schermata. Valuta ogni documento recuperato sulla stessa scala con multirate, valuta la fedeltà con una scala Likert ed evidenzia i segmenti problematici nella risposta.
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]Lo schema di segmenti è ciò che rende i dati utilizzabili. Un punteggio di fedeltà di 2 su 5 ti dice che qualcosa non va; un segmento evidenziato ti dice quale frase e perché.
Le cose che minano silenziosamente la valutazione RAG
Gli annotatori non possono giudicare la fedeltà senza le fonti. Mostra la query, i documenti recuperati e la risposta sulla stessa schermata. Se i documenti sono compressi o in un'altra scheda, le persone valuteranno la risposta in base a quanto sembra corretta, che è esattamente il tipo di errore che stai cercando di individuare.
"Pertinente" ha bisogno di una definizione. Pertinente alla query, oppure effettivamente usato nella risposta? Sono giudizi diversi e gli annotatori si divideranno su di essi a meno che tu non decida in anticipo.
La fedeltà è l'aspetto soggettivo. Raccogli sovrapposizione su un campione e verifica l'accordo in modo specifico sulle valutazioni di fedeltà. Se lì l'accordo è basso, restringi la definizione di "non supportato" prima di fidarti dei numeri.
Dove andare ora
La guida completa, inclusa una spiegazione di come si incastrano i tre schemi, è nella guida alla valutazione RAG. Per contrassegnare errori fattuali e allucinazioni in qualsiasi output di un modello, non solo RAG, vedi Rilevare le allucinazioni con l'annotazione di segmenti. E se stai valutando gli agenti in modo più ampio, inizia da Come valutare gli agenti IA.