Skip to content
Guides3 min read

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.

Potato Team

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

  1. Pertinenza del recupero. Per ogni documento recuperato: è davvero pertinente alla query?
  2. Fedeltà della risposta. La risposta generata si fonda su quei documenti, senza affermazioni inventate?
  3. 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.

yaml
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.