Avaliadores Retrieval-Augmented Generation (RAG) (clássico)

Exibição no momento:Versão do portal - do Foundry (clássico)Alternar para a versão do novo portal do Foundry

Note

O SDK do Microsoft Foundry para avaliação e o portal do Foundry estão em versão prévia pública, mas as APIs geralmente estão disponíveis para avaliação de modelo e conjunto de dados (a avaliação do agente permanece em versão prévia pública). O SDK de Avaliação de IA do Azure e os avaliadores marcados (versão prévia) neste artigo estão atualmente em versão prévia pública em todos os lugares.

Um sistema rag (geração de Retrieval-Augmented) tenta gerar a resposta mais relevante consistente com documentos de aterramento em resposta à consulta de um usuário. A consulta de um usuário dispara uma recuperação de pesquisa no corpus de documentos de aterramento para fornecer contexto de aterramento para que o modelo de IA gere uma resposta.

É importante avaliar:

Esses avaliadores focam em três aspectos:

  • A relevância dos resultados de recuperação para a consulta do usuário: use Recuperação de Documentos se você tiver rótulos para relevância específica de um documento ou julgamento de relevância de consulta (qrels) para medições mais precisas. Use Retrieval se você só tiver o contexto recuperado, mas não tiver tais rótulos e tiver maior tolerância para medições menos detalhadas.
  • A consistência da resposta gerada em relação aos documentos de aterramento: use o Groundedness se quiser personalizar a definição de aterramento em nosso prompt de código aberto para juiz de grande modelo de linguagem (LLM-judge). Use o Groundedness Pro (prévia) se quiser uma definição direta.
  • A relevância da resposta final à pergunta: use Relevância se não tiver uma verdade fundamentada. Use a Completude da Resposta se você tem a verdade fundamentada e não quer que sua resposta perca informações críticas.

Pense na fundamentação e na integridade da resposta como:

  • A aterramento se concentra no aspecto de precisão da resposta. Ele não contém conteúdo fora do contexto de aterramento.
  • A integridade da resposta se concentra no aspecto de recall da resposta. Ele não perde informações críticas em comparação com a resposta esperada ou a verdade básica.

Configuração de modelos para avaliadores assistidos por IA

Para referência nos trechos a seguir, os avaliadores de qualidade assistidos por IA, exceto o Groundedness Pro, usam uma configuração de modelo para o juiz 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"),
)

Suporte ao modelo avaliador

Os avaliadores suportam modelos de raciocínio AzureOpenAI ou OpenAI e modelos não raciocínios para o juiz LLM, dependendo dos avaliadores:

Evaluators Modelos de Raciocínio como Juiz (exemplo: modelos da série O do Azure OpenAI / OpenAI) Modelos não raciocínios como Juiz (exemplo: gpt-4.1, gpt-4o) To enable
IntentResolution, TaskAdherence, ToolCallAccuracy, ResponseCompleteness, Coherence, , Fluency, Similarity, , Groundedness, Retrieval, Relevance Supported Supported Defina um parâmetro is_reasoning_model=True adicional na inicialização dos avaliadores
Other evaluators Not Supported Supported --

Para avaliações complexas que exigem raciocínio refinado, use um modelo de raciocínio forte, como 4.1-mini um equilíbrio entre desempenho e eficiência de custos.

Retrieval

Devido ao seu papel upstream no RAG, a qualidade da recuperação é crítica. Se a qualidade da recuperação for ruim e a resposta exigir conhecimento específico do corpus, o modelo de linguagem tem menos chance de fornecer uma resposta satisfatória. RetrievalEvaluator mede a qualidade textual dos resultados de recuperação com um modelo de linguagem sem exigir veracidade fundamental, também conhecido como julgamento de relevância de consulta.

Essa abordagem agrega valor em comparação com DocumentRetrievalEvaluator, que mede ndcg, xdcg, fidelity, e outras métricas clássicas de recuperação de informação que exigem veracidade fundamental. Essa métrica foca em quão relevantes são os blocos de contexto para responder a uma consulta e como os blocos de contexto mais relevantes são apresentados no topo da lista. Os blocos de contexto são codificados como strings.

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

A pontuação numérica é baseada em uma escala de Likert (inteiro de 1 a 5), onde uma pontuação maior indica melhor desempenho. Dado um limite numérico (um padrão é definido), o avaliador também apresenta aprovação se a pontuação >= limiar, ou reprovação caso contrário. O campo de razão explica por que a pontuação é alta ou baixa.

{
    "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

Devido ao seu papel upstream no RAG, a qualidade da recuperação é crítica. A má qualidade da recuperação reduz a probabilidade de seu modelo de linguagem fornecer uma resposta satisfatória, especialmente quando a resposta exige conhecimento específico do corpus. Use DocumentRetrievalEvaluator para avaliar a qualidade da recuperação e otimizar seus parâmetros de busca para o RAG.

  • O avaliador de recuperação de documentos mede o quão bem o RAG recupera os documentos corretos do repositório de documentos. Como um avaliador composto útil para o cenário rag com a verdade básica, ele calcula uma lista de métricas úteis de qualidade de pesquisa para depurar seus pipelines RAG:

    Metric Category Description
    Fidelity Search Fidelity Quão bem as partes superiores n recuperadas refletem o conteúdo de uma determinada consulta: número de documentos bons retornados do número total de documentos bons conhecidos em um conjunto de dados
    NDCG Search NDCG Quão boas são as classificações para uma ordem ideal em que todos os itens relevantes estão no topo da lista
    XDCG Search XDCG Quão bons são os resultados nos documentos top-k, independentemente da pontuação de outros documentos de índice
    Relevância Máxima N Pesquisar Relevância Máxima Relevância máxima nos blocos top-k
    Holes Sanidade do rótulo de pesquisa Número de documentos com julgamentos de relevância de consulta ausentes ou verdade básica
  • Para otimizar o RAG em um cenário chamado varredura de parâmetros, você pode usar essas métricas para calibrar os parâmetros de pesquisa para os resultados de RAG ideais. Gerar resultados de recuperação para diferentes parâmetros de busca, como algoritmos de busca (vetor, semântica), top_k e tamanhos de blocos. Depois, use DocumentRetrievalEvaluator para identificar os parâmetros que geram a maior qualidade de recuperação.

Exemplo de recuperação de documento

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)   

Saída de recuperação de documento

Todas as pontuações numéricas têm high_is_better=True, exceto e holesholes_ratio, que têm high_is_better=False. Com um limiar numérico (padrão de 3), o avaliador sai aprovado se a pontuação for maior ou igual ao limiar , ou falhar caso contrário.

{
    "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 avaliar o quão fundamentada é a resposta em relação ao contexto. Modelos de IA podem fabricar conteúdo ou gerar respostas irrelevantes. GroundednessEvaluator Mede o quão bem a resposta gerada se alinha com o contexto dado, a fonte de aterramento e não fabrica conteúdo fora dele.

Essa métrica captura o aspecto de precisão do alinhamento da resposta com a fonte de aterramento. Uma pontuação menor significa que a resposta é irrelevante para a consulta ou fabrica conteúdo impreciso fora do contexto. Essa métrica é complementar a ResponseCompletenessEvaluator, que captura o aspecto de recordação do alinhamento da resposta com a resposta esperada.

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

A pontuação numérica está em uma escala de Likert (inteiro de 1 a 5). Uma pontuação mais alta é melhor. Dado um limiar numérico (padrão é 3), o avaliador responde aprovado se a pontuação for maior ou igual ao limiar, ou falhar caso contrário. Use o campo razão para entender por que a pontuação é alta ou baixa.

{
    "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

Sistemas de IA podem gerar respostas irrelevantes ou fabricar conteúdo fora do contexto dado. Alimentado por Segurança de Conteúdo de IA do Azure, GroundednessProEvaluator verifica se a resposta gerada em texto é precisa e consistente com o contexto dado em um cenário de perguntas e respostas de geração aumentada por recuperação. Ele garante que a resposta siga de perto o contexto para responder à pergunta, evitando especulações ou fabricações. Ele gera um rótulo binário.

Exemplo do 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."
)

Saída do Groundedness Pro

O campo de rótulos retorna True se todo o conteúdo da resposta estiver completamente fundamentado no contexto, e False de outra forma. Use o campo razão para saber mais sobre o julgamento por trás da pontuação.

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

Relevance

Modelos de IA podem gerar respostas irrelevantes a uma consulta de usuário. É importante avaliar a resposta final. Para resolver esse problema, use RelevanceEvaluator, que mede quão eficazmente uma resposta responde a uma consulta. Ele avalia a precisão, completude e relevância direta da resposta com base na consulta. Notas mais altas significam maior relevância.

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

A pontuação numérica está em uma escala de Likert (inteiro de 1 a 5). Uma pontuação mais alta é melhor. Dado um limiar numérico (padrão é 3), o avaliador responde aprovado se a pontuação for maior ou igual ao limiar, ou falhar caso contrário. O campo do motivo ajuda você a entender por que a pontuação é alta ou baixa.

{
    "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

Sistemas de IA podem fabricar conteúdo ou gerar respostas irrelevantes fora do contexto dado. Dada uma resposta de verdade fundamentada, ResponseCompletenessEvaluator captura o aspecto de recordação do alinhamento da resposta com a resposta esperada. Este avaliador complementa GroundednessEvaluator, que captura o aspecto de precisão do alinhamento da resposta com a fonte de aterramento.

Exemplo de completude de resposta

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."
)

Saída de completude de resposta

A pontuação numérica em uma escala de Likert (inteiro de 1 a 5). Uma pontuação mais alta é melhor. Dado um limiar numérico (padrão para 3), o avaliador também fornece aprovação se a pontuação >= limiar, ou reprovação caso contrário. Use o campo razão para entender por que a pontuação é alta ou baixa.

{
    "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."
}