Ricerca

Valutare RAG con un LLM come giudice

April 9, 2025

By Mistral AI Team

I Large Language Models (LLM) stanno rapidamente diventando strumenti essenziali per creare applicazioni ampiamente utilizzate. Ma assicurarsi che questi modelli funzionino come previsto è molto più facile a dirsi che a farsi. Valutare i sistemi LLM non significa solo verificare che gli output siano coerenti, ma anche assicurarsi che le risposte siano pertinenti e soddisfino i requisiti necessari.

L’ascesa dei sistemi RAG

I sistemi Retrieval-Augmented Generation (RAG) sono diventati un modo diffuso per potenziare le capacità degli LLM. Abbinando un LLM a un sistema di recupero dati, gli LLM possono generare risposte non solo coerenti, ma anche basate su informazioni pertinenti e aggiornate. Questo aiuta a ridurre i casi in cui il modello appare sicuro di sé, ma in realtà potrebbe produrre allucinazioni.

Tuttavia, valutare se questi sistemi RAG siano performanti non è immediato. Non si tratta solo di stabilire se l’output generato dagli LLM sembri corretto, ma anche di verificare alla fonte se le informazioni recuperate siano pertinenti e accurate. I metodi tradizionali spesso non colgono queste sfumature, rendendo essenziale un framework di valutazione completo.

Facendo un passo indietro, molti ambiti affrontano lo stesso problema: possono mancare metriche quantitative chiare o dati di valutazione rispetto ai quali misurare le prestazioni, mentre le misure di successo possono essere più qualitative e sfumate.

LLM come giudice: usare gli LLM per valutare altri LLM

Negli scenari in cui le valutazioni devono essere eseguite su larga scala e mancano valutatori umani, “LLM come giudice” è diventata una soluzione diffusa per valutare le risposte dei sistemi LLM.

In genere, un “LLM come giudice” funziona creando un “LLM giudice” che, data la risposta di un “LLM generatore”, riceve l’istruzione di valutare tale risposta in base a una scala definita. Questa scala può essere numerica (ad esempio una scala da 1 a 10 o da 0 a 3), binaria (ad esempio Vero o Falso) oppure qualitativa (ad esempio “Eccellente”, “Buono”, “Discreto”, “Scarso”). Il voto può quindi essere mediato su tutte le domande di un dataset di valutazione per ottenere un punteggio ponderato complessivo.

Per il prompt di istruzioni di un “LLM come giudice”, è possibile creare criteri personalizzati in base ai quali l’LLM valuta le risposte. Ad esempio, è possibile creare criteri di valutazione specifici per verificare se le risposte siano accurate, pertinenti e fondate. I modelli di Mistral possono essere utilizzati efficacemente sia per il componente generatore sia per il componente giudice dei sistemi LLM.

Blog   Evaluating Rag Judge LLM

La triade RAG: un framework di valutazione più olistico

La triade RAG è un framework di valutazione diffuso per valutare i sistemi RAG, progettato per verificare l’affidabilità e l’integrità contestuale delle risposte LLM a partire dalle fonti dati. È stata introdotta da TruLens e sono stati creati diversi framework simili, come RAGAS, per valutare i sistemi RAG in modo più qualitativo. 

La triade RAG si concentra su tre aree chiave:

1. Pertinenza del contesto: questa metrica verifica se i documenti recuperati sono ben allineati alla query dell’utente. Assicura che le informazioni usate per generare la risposta siano pertinenti e appropriate, ponendo le basi per una risposta coerente e utile.

2. Fondatezza: questa metrica verifica se la risposta generata si basa accuratamente sul contesto recuperato. Assicura che l’output dell’LLM sia fattuale e affidabile, riducendo il rischio di quelle fastidiose allucinazioni.

3. Pertinenza della risposta: questa metrica valuta quanto la risposta finale risponda alla query originale dell’utente. Assicura che la risposta generata sia utile e centrata, allineandosi all’intento dell’utente e fornendo insight di valore.

Utilizzando la triade RAG, i valutatori possono ottenere una visione completa delle prestazioni dell’LLM, individuare potenziali problemi e garantire che le risposte siano accurate, affidabili e solide dal punto di vista contestuale. Questo framework aiuta a creare interazioni affidabili tra persone, AI e basi di conoscenza.

Blog   Evaluating Rag Groundedness

Questo è particolarmente utile per valutare end-to-end un sistema LLM RAG, poiché include la valutazione sia delle fasi di retrieval sia di generazione. Aiuta a valutare non solo la risposta dell’LLM, ma anche la sua correttezza rispetto ai dati sorgente recuperati.

Output strutturati: una soluzione pratica

Gli output strutturati personalizzati sono una funzionalità recente lanciata nella nostra API che consente di controllare il formato di output degli LLM e restituire valori in modo strutturato e leggibile da macchina, per una maggiore affidabilità.

I modelli di Mistral, insieme agli output strutturati, offrono un modo pratico per implementare la triade RAG e affrontare le sfide di valutazione più comuni. Definendo criteri e schemi chiari per i valori, gli output strutturati aiutano a costruire un “LLM come giudice” più affidabile, utilizzabile per valutare i sistemi LLM.

Gli output strutturati costituiscono un framework ideale per definire criteri nuovi e riutilizzabili e imporre un formato che sia poi facilmente leggibile da macchina per la valutazione.

 

from pydantic import BaseModel, Field
# Assuming Score is defined elsewhere, e.g.:
# Score = int | float | Enum # Replace with your actual Score type
SCORE_DESCRIPTION = "A numerical or categorical score representing the evaluation metric."
class ContextRelevance(BaseModel):
explanation: str = Field(
...,
description=(
"Step-by-step reasoning explaining how the retrieved context aligns with the user's query. "
"Consider the relevance of the information to the query's intent and the appropriateness of the context "
"in providing a coherent and useful response."
)
)
score: Score = Field(..., description=SCORE_DESCRIPTION)
class AnswerRelevance(BaseModel):
explanation: str = Field(
...,
description=(
"Step-by-step reasoning explaining how well the generated answer addresses the user's original query. "
"Consider the helpfulness and on-point nature of the answer, aligning with the user's intent and providing valuable insights."
)
)
score: Score = Field(..., description=SCORE_DESCRIPTION)
class Groundedness(BaseModel):
explanation: str = Field(
...,
description=(
"Step-by-step reasoning explaining how faithful the generated answer is to the retrieved context. "
"Consider the factual accuracy and reliability of the answer, ensuring it is grounded in the retrieved information."
)
)
score: Score = Field(..., description=SCORE_DESCRIPTION)
class RAGEvaluation(BaseModel):
context_relevance: ContextRelevance = Field(
...,
description="Evaluation of the context relevance to the query, considering how well the retrieved context aligns with the user's intent."
)
answer_relevance: AnswerRelevance = Field(
...,
description="Evaluation of the answer relevance to the query, assessing how well the generated answer addresses the user's original query."
)
groundedness: Groundedness = Field(
...,
description="Evaluation of the groundedness of the generated answer, ensuring it is faithful to the retrieved context."
)

 

Conclusione

Valutare i sistemi LLM è fondamentale per sviluppare applicazioni AI affidabili. La triade RAG, insieme agli output strutturati di Mistral, fornisce un framework robusto per valutare le prestazioni degli LLM con un LLM come giudice. Concentrandoci su pertinenza del contesto, fondatezza e pertinenza della risposta, possiamo garantire che le risposte degli LLM siano più accurate e significative. Questo approccio migliora l’esperienza utente e l’affidabilità delle applicazioni basate su AI, creando un’interazione più affidabile con il sistema AI.

Codice completo

È possibile trovare il codice completo per LLM come giudice per RAG qui: 
https://github.com/mistralai/cookbook/blob/main/mistral/evaluation/RAG_evaluation.ipynb

Contattaci

Le interessa approfondire attività personalizzate con il team di Mistral AI? Ci contatti per supporto sulle soluzioni