Valutatori Retrieval-Augmented Generation (RAG) (classici)

Visualizzazione attualmente:Versione del portale - Foundry (versione classica)Passare alla versione per il nuovo portale foundry

Note

Il Microsoft Foundry SDK per la valutazione e il portale foundry sono disponibili in anteprima pubblica, ma le API sono disponibili a livello generale per la valutazione del modello e del set di dati (la valutazione dell'agente rimane in anteprima pubblica). I Azure AI Evaluation SDK e gli analizzatori contrassegnati (anteprima) in questo articolo sono attualmente disponibili in anteprima pubblica ovunque.

Un sistema Retrieval-Augmented Generation (RAG) cerca di generare la risposta più rilevante coerente con il grounding dei documenti in risposta alla domanda dell'utente. La query di un utente attiva un recupero di ricerca nel corpus di documenti di base per fornire il contesto di base per il modello di intelligenza artificiale per generare una risposta.

È importante valutare:

Questi valutatori si concentrano su tre aspetti:

  • La rilevanza dei risultati di recupero per la query dell'utente: usa Document Retrieval se hai etichette per la rilevanza specifica della query del documento, oppure il giudizio di rilevanza della query (qrels) per misurazioni più accurate. Usa il recupero se hai solo il contesto recuperato, ma non hai tali etichette e hai una tolleranza più alta per una misura meno dettagliata.
  • La coerenza della risposta generata rispetto ai documenti di grounding: usa Groundedness se vuoi personalizzare la definizione di groundedness nel nostro prompt open source per grandi modelli di linguaggio (LLM-judge). Usa Groundedness Pro (anteprima) se vuoi una definizione chiara.
  • La rilevanza della risposta finale alla domanda: usa Rilevanza se non hai una verità fondamentale. Usa la Completezza della Risposta se hai una verità concreta e non vuoi che la tua risposta perda informazioni fondamentali.

Si pensi alla completezza delle basi e della risposta come:

  • Il livello di base è incentrato sull'aspetto della precisione della risposta. Non contiene contenuto all'esterno del contesto di base.
  • La completezza della risposta è incentrata sull'aspetto del richiamo della risposta. Non perde informazioni critiche rispetto alla risposta prevista o alla verità del terreno.

Configurazione del modello per valutatori assistiti dall'IA

Per riferimento nei seguenti estratti, i valutatori di qualità assistiti dall'IA, ad eccezione di Groundedness Pro, utilizzano una configurazione del modello per il giudice LLM:

import os
from azure.ai.evaluation import AzureOpenAIModelConfiguration
from dotenv import load_dotenv
load_dotenv()

model_config = AzureOpenAIModelConfiguration(
    azure_endpoint=os.environ["AZURE_ENDPOINT"],
    api_key=os.environ.get("AZURE_API_KEY"),
    azure_deployment=os.environ.get("AZURE_DEPLOYMENT_NAME"),
    api_version=os.environ.get("AZURE_API_VERSION"),
)

Supporto per modelli valutatori

I valutatori supportano modelli di ragionamento AzureOpenAI o OpenAI e modelli non ragionanti per il giudice LLM a seconda dei valutatori:

Evaluators Ragionamento dei modelli come giudice (esempio: modelli di serie o da Azure OpenAI/OpenAI) Modelli non ragionanti come Judge (esempio: gpt-4.1, gpt-4o) To enable
IntentResolution ToolCallAccuracy, TaskAdherence, , ResponseCompleteness, CoherenceFluency, Similarity, Groundedness, , RetrievalRelevance Supported Supported Impostare un parametro aggiuntivo is_reasoning_model=True nell'inizializzazione degli analizzatori
Other evaluators Not Supported Supported --

Per una valutazione complessa che richiede un ragionamento raffinato, usa un modello di ragionamento solido, come 4.1-mini quello che bilancia prestazioni del ragionamento ed efficienza dei costi.

Retrieval

A causa del suo ruolo a monte nel RAG, la qualità del recupero è fondamentale. Se la qualità del recupero è scarsa e la risposta richiede conoscenze specifiche del corpus, il modello linguistico è meno propenso a fornire una risposta soddisfacente. RetrievalEvaluator misura la qualità testuale dei risultati di recupero con un modello linguistico senza richiedere la verità di base, nota anche come giudizio di rilevanza della query.

Questo approccio aggiunge valore rispetto a DocumentRetrievalEvaluator, che misura ndcg, xdcg, fidelity, e altre metriche classiche di recupero delle informazioni che richiedono la verità di base. Questa metrica si concentra su quanto siano rilevanti i blocchi di contesto per affrontare una query e su come i segmenti di contesto più rilevanti emergano in cima alla lista. I blocchi di contesto sono codificati come stringhe.

Retrieval example

from azure.ai.evaluation import RetrievalEvaluator

retrieval = RetrievalEvaluator(model_config=model_config, threshold=3)
retrieval(
    query="Where was Marie Curie born?", 
    context="Background: 1. Marie Curie was born in Warsaw. 2. Marie Curie was born on November 7, 1867. 3. Marie Curie is a French scientist. ",
)

Retrieval output

Il punteggio numerico si basa su una scala di Likert (intero da 1 a 5), dove un punteggio più alto indica prestazioni migliori. Data una soglia numerica (viene impostata una predefinita), il valutatore invia anche approvazione se il punteggio >= soglia, o fallito altrimenti. Il campo del motivo spiega perché il punteggio è alto o basso.

{
    "retrieval": 5.0,
    "gpt_retrieval": 5.0,
    "retrieval_reason": "The context contains relevant information that directly answers the query about Marie Curie's birthplace, with the most pertinent information placed at the top. Therefore, it fits the criteria for a high relevance score.",
    "retrieval_result": "pass",
    "retrieval_threshold": 3
}

Document retrieval

A causa del suo ruolo a monte nel RAG, la qualità del recupero è fondamentale. Una scarsa qualità del recupero riduce la probabilità che il tuo modello linguistico fornisca una risposta soddisfacente, specialmente quando la risposta richiede conoscenze specifiche del corpus. Usalo DocumentRetrievalEvaluator per valutare la qualità del recupero e ottimizzare i parametri di ricerca per RAG.

  • L'analizzatore di recupero dei documenti misura il modo in cui la rag recupera i documenti corretti dall'archivio documenti. Come analizzatore composito utile per lo scenario RAG con verità di base, calcola un elenco di utili metriche di qualità della ricerca per il debug delle pipeline RAG:

    Metric Category Description
    Fidelity Search Fidelity In che modo i primi n blocchi recuperati riflettono il contenuto di una determinata query: numero di documenti validi restituiti dal numero totale di documenti validi noti in un set di dati
    NDCG Search NDCG Quanto sono buone le classifiche per un ordine ideale in cui tutti gli elementi rilevanti si trovano nella parte superiore dell'elenco
    XDCG Search XDCG Quanto sono buoni i risultati nei documenti top-k indipendentemente dal punteggio di altri documenti di indice
    Numero massimo di pertinenza N Ricerca massima pertinenza Rilevanza massima nei blocchi top-k
    Holes Ricerca integrità etichetta Numero di documenti con sentenze sulla pertinenza delle query mancanti o verità di base
  • Per ottimizzare la rag in uno scenario denominato sweep di parametri, è possibile usare queste metriche per calibrare i parametri di ricerca per ottenere risultati rag ottimali. Genera risultati di recupero per diversi parametri di ricerca, come algoritmi di ricerca (vettoriale, semantico), top_k e dimensioni dei blocchi. Poi usare DocumentRetrievalEvaluator per identificare i parametri che forniscono la massima qualità di recupero.

Esempio di recupero dei documenti

from azure.ai.evaluation import DocumentRetrievalEvaluator

# These query_relevance_labels are given by your human- or LLM-judges.
retrieval_ground_truth = [
    {
        "document_id": "1",
        "query_relevance_label": 4
    },
    {
        "document_id": "2",
        "query_relevance_label": 2
    },
    {
        "document_id": "3",
        "query_relevance_label": 3
    },
    {
        "document_id": "4",
        "query_relevance_label": 1
    },
    {
        "document_id": "5",
        "query_relevance_label": 0
    },
]
# The min and max of the label scores are inputs to document retrieval evaluator
ground_truth_label_min = 0
ground_truth_label_max = 4

# These relevance scores come from your search retrieval system
retrieved_documents = [
    {
        "document_id": "2",
        "relevance_score": 45.1
    },
    {
        "document_id": "6",
        "relevance_score": 35.8
    },
    {
        "document_id": "3",
        "relevance_score": 29.2
    },
    {
        "document_id": "5",
        "relevance_score": 25.4
    },
    {
        "document_id": "7",
        "relevance_score": 18.8
    },
]

document_retrieval_evaluator = DocumentRetrievalEvaluator(
    # Specify the ground truth label range
    ground_truth_label_min=ground_truth_label_min, 
    ground_truth_label_max=ground_truth_label_max,
    # Optionally override the binarization threshold for pass/fail output
    ndcg_threshold = 0.5,
    xdcg_threshold = 50.0,
    fidelity_threshold = 0.5,
    top1_relevance_threshold = 50.0,
    top3_max_relevance_threshold = 50.0,
    total_retrieved_documents_threshold = 50,
    total_ground_truth_documents_threshold = 50
)
document_retrieval_evaluator(retrieval_ground_truth=retrieval_ground_truth, retrieved_documents=retrieved_documents)   

Output del recupero dei documenti

Tutti i punteggi numerici hanno high_is_better=True, tranne e holesholes_ratio, che hanno high_is_better=False. Con una soglia numerica (predefinito di 3), il valutatore emette il risultato di passaggio se il punteggio è maggiore o uguale alla soglia, oppure fallisce altrimenti.

{
    "ndcg@3": 0.6461858173,
    "xdcg@3": 37.7551020408,
    "fidelity": 0.0188438199,
    "top1_relevance": 2,
    "top3_max_relevance": 2,
    "holes": 30,
    "holes_ratio": 0.6000000000000001,
    "holes_higher_is_better": False,
    "holes_ratio_higher_is_better": False,
    "total_retrieved_documents": 50,
    "total_groundtruth_documents": 1565,
    "ndcg@3_result": "pass",
    "xdcg@3_result": "pass",
    "fidelity_result": "fail",
    "top1_relevance_result": "fail",
    "top3_max_relevance_result": "fail",
    # Omitting more fields ...
}

Groundedness

È importante valutare quanto la risposta sia radicata rispetto al contesto. I modelli di IA potrebbero fabbricare contenuti o generare risposte irrilevanti. GroundednessEvaluator Misura quanto bene la risposta generata si allinea al contesto dato, alla fonte di grounding, e non crea contenuti al di fuori di esso.

Questa metrica cattura l'aspetto di precisione dell'allineamento della risposta con la sorgente di messa a terra. Un punteggio più basso significa che la risposta è irrilevante per la query o fabbrica contenuti inaccurati al di fuori del contesto. Questa metrica è complementare a ResponseCompletenessEvaluator, che cattura l'aspetto del richiamo dell'allineamento della risposta con la risposta attesa.

Groundedness example

from azure.ai.evaluation import GroundednessEvaluator

groundedness = GroundednessEvaluator(model_config=model_config, threshold=3)
groundedness(
    query="Is Marie Curie is born in Paris?", 
    context="Background: 1. Marie Curie is born on November 7, 1867. 2. Marie Curie is born in Warsaw.",
    response="No, Marie Curie is born in Warsaw."
)

Groundedness output

Il punteggio numerico è su una scala di Likert (intero da 1 a 5). Un punteggio più alto è meglio. Data una soglia numerica (il valore predefinito è 3), il valutatore esegue il passaggio se il punteggio è maggiore o uguale alla soglia, oppure fallisce altrimenti. Usa il campo motivo per capire perché il punteggio è alto o basso.

{
    "groundedness": 5.0,  
    "gpt_groundedness": 5.0,
    "groundedness_reason": "The RESPONSE accurately answers the QUERY by confirming that Marie Curie was born in Warsaw, which is supported by the CONTEXT. It does not include any irrelevant or incorrect information, making it a complete and relevant answer. Thus, it deserves a high score for groundedness.",
    "groundedness_result": "pass", 
    "groundedness_threshold": 3
}

Groundedness Pro

I sistemi di IA possono generare risposte irrilevanti o fabbricare contenuti al di fuori del contesto fornito. Alimentato da Sicurezza dei contenuti di Azure AI, GroundednessProEvaluator verifica se la risposta testuale generata è accurata e coerente con il contesto fornito in uno scenario di domande e risposte a generazione aumentata dal recupero. Garantisce che la risposta rispetti strettamente il contesto per rispondere alla domanda, evitando speculazioni o invenzioni. Genera un'etichetta binaria.

Esempio di Groundedness Pro

from azure.ai.evaluation import GroundednessProEvaluator
from azure.identity import DefaultAzureCredential
import os
from dotenv import load_dotenv
load_dotenv()

# Using Microsoft Foundry Hub
azure_ai_project = {
    "subscription_id": os.environ.get("AZURE_SUBSCRIPTION_ID"),
    "resource_group_name": os.environ.get("AZURE_RESOURCE_GROUP"),
    "project_name": os.environ.get("AZURE_PROJECT_NAME"),
}

groundedness_pro = GroundednessProEvaluator(azure_ai_project=azure_ai_project), 
groundedness_pro(
    query="Is Marie Curie is born in Paris?", 
    context="Background: 1. Marie Curie is born on November 7, 1867. 2. Marie Curie is born in Warsaw.",
    response="No, Marie Curie is born in Warsaw."
)

Uscita Groundedness Pro

Il campo etichetta restituisce True se tutto il contenuto della risposta è completamente fondato sul contesto, e False altrimenti. Usa il campo motivo per saperne di più sul giudizio dietro il punteggio.

{
    "groundedness_pro_reason": "All Contents are grounded",
    "groundedness_pro_label": True
}

Relevance

I modelli di IA possono generare risposte irrilevanti a una domanda dell'utente. È importante valutare la risposta finale. Per affrontare questo problema, usa RelevanceEvaluator, che misura quanto efficacemente una risposta risponde a una domanda. Valuta l'accuratezza, la completezza e la rilevanza diretta della risposta in base alla richiesta. Punteggi più alti significano maggiore rilevanza.

Relevance example

from azure.ai.evaluation import RelevanceEvaluator

relevance = RelevanceEvaluator(model_config=model_config, threshold=3)
relevance(
    query="Is Marie Curie is born in Paris?", 
    response="No, Marie Curie is born in Warsaw."
)

Relevance output

Il punteggio numerico è su una scala di Likert (intero da 1 a 5). Un punteggio più alto è meglio. Data una soglia numerica (il valore predefinito è 3), il valutatore esegue il passaggio se il punteggio è maggiore o uguale alla soglia, oppure fallisce altrimenti. Il campo del motivo ti aiuta a capire perché il punteggio è alto o basso.

{
    "relevance": 4.0,
    "gpt_relevance": 4.0, 
    "relevance_reason": "The RESPONSE accurately answers the QUERY by stating that Marie Curie was born in Warsaw, which is correct and directly relevant to the question asked.",
    "relevance_result": "pass", 
    "relevance_threshold": 3
}

Response completeness

I sistemi di IA possono fabbricare contenuti o generare risposte irrilevanti al di fuori del contesto dato. Data una risposta di verità di base, ResponseCompletenessEvaluator cattura l'aspetto del richiamo dell'allineamento della risposta con la risposta attesa. Questo valutatore integra GroundednessEvaluator, che cattura l'aspetto di precisione dell'allineamento della risposta con la sorgente di messa a terra.

Esempio di completezza della risposta

from azure.ai.evaluation import ResponseCompletenessEvaluator

response_completeness = ResponseCompletenessEvaluator(model_config=model_config, threshold=3)
response_completeness(
    response="Based on the retrieved documents, the shareholder meeting discussed the operational efficiency of the company and financing options.",
    ground_truth="The shareholder meeting discussed the compensation package of the company's CEO."
)

Output di completezza della risposta

Il punteggio numerico su una scala di Likert (intero da 1 a 5). Un punteggio più alto è meglio. Data una soglia numerica (predefinita a 3), il valutatore invia anche pass se il punteggio >= soglia, o fallito altrimenti. Usa il campo motivo per capire perché il punteggio è alto o basso.

{
    "response_completeness": 1,
    "response_completeness_result": "fail",
    "response_completeness_threshold": 3,
    "response_completeness_reason": "The response does not contain any relevant information from the ground truth, which specifically discusses the CEO's compensation package. Therefore, it is considered fully incomplete."
}