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

A ver atualmente:Versão - portal Foundry (clássica)Mudar para a versão do novo portal da Foundry

Note

O SDK Microsoft Foundry para avaliação e o portal Foundry estão em pré-visualização pública, mas as APIs estão geralmente disponíveis para avaliação de modelos e conjuntos de dados (a avaliação do agente permanece em pré-visualização pública). O SDK de Avaliação de IA do Azure e os avaliadores marcados (pré-visualização) neste artigo estão atualmente em pré-visualização pública em todo o lado.

Um sistema de Geração Retrieval-Augmented (RAG) tenta gerar a resposta mais relevante, consistente com o grounding dos documentos, em resposta à consulta do utilizador. A consulta de um utilizador desencadeia uma recuperação de pesquisa no corpus de documentos de grounding para fornecer contexto de grounding ao modelo de IA gerar uma resposta.

É importante avaliar:

Estes avaliadores focam-se em três aspetos:

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

Pense na solidez e na completude das respostas como:

  • A Groundedness foca-se no aspeto de precisão da resposta. Não contém conteúdo fora do contexto de grounding.
  • A completude da resposta foca-se no aspeto da recordação da resposta. Não perde informações críticas em comparação com a resposta esperada ou a verdade no terreno.

Configuração de modelos para avaliadores assistidos por IA

Para referência nos seguintes excertos, os avaliadores de qualidade assistidos por IA, exceto o Groundedness Pro, utilizam 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 a modelos avaliadores

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, ResponseCompletenessToolCallAccuracy, , Coherence, , RetrievalSimilarityGroundednessFluencyRelevance 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 requerem raciocínio refinado, use um modelo de raciocínio forte, como 4.1-mini com um equilíbrio entre desempenho do raciocínio 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 fraca e a resposta exigir conhecimento específico do corpus, o modelo de linguagem tem menos probabilidade de fornecer uma resposta satisfatória. RetrievalEvaluator mede a qualidade textual dos resultados de recuperação com um modelo de linguagem sem exigir verdade fundamentada, também conhecido como julgamento de relevância de consulta.

Esta abordagem acrescenta 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. Esta métrica foca-se na relevância dos blocos de contexto para responder a uma consulta e em 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 baseia-se numa escala de Likert (inteiro de 1 a 5), onde uma pontuação mais alta indica melhor desempenho. Dado um limiar numérico (é definido um padrão), o avaliador também apresenta aprovação se a pontuação >= limiar, ou falhar caso contrário. O campo razão explica porque é 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 o seu modelo de linguagem fornecer uma resposta satisfatória, especialmente quando a resposta requer conhecimento específico do corpus. Use DocumentRetrievalEvaluator para avaliar a qualidade da recuperação e otimizar os seus parâmetros de pesquisa para o RAG.

  • O avaliador de recuperação de documentos mede quão bem o RAG recupera os documentos corretos do armazenamento de documentos. Como um avaliador composto útil para cenários RAG com verdade no terreno, calcula uma lista de métricas úteis de qualidade de pesquisa para depurar os seus pipelines RAG:

    Metric Category Description
    Fidelity Search Fidelity Quão bem os primeiros n blocos recuperados refletem o conteúdo de uma dada consulta: número de bons documentos devolvidos do total de bons documentos conhecidos num conjunto de dados
    NDCG Search NDCG Quão bons são os rankings numa ordem ideal em que todos os itens relevantes estejam 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 Pesquisa Relevância Máxima Relevância máxima nos blocos top-k
    Holes Pesquisar Rótulo Sanidade Número de documentos com falta de relevância de consulta, julgamentos ou verdade fundamentada
  • Para otimizar o seu RAG num cenário chamado varrimento de parâmetros, pode usar estas métricas para calibrar os parâmetros de pesquisa para obter os resultados ótimos do RAG. Gerar resultados de recuperação para diferentes parâmetros de pesquisa, como algoritmos de pesquisa (vetor, semântica), top_k e tamanhos de blocos. Depois, use DocumentRetrievalEvaluator para identificar os parâmetros que proporcionam a maior qualidade de recuperação.

Exemplo de recuperação de documentos

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 documentos

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 apresenta aprovação se a pontuação for maior ou igual ao limiar, ou falha 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 quão fundamentada é a resposta em relação ao contexto. Os modelos de IA podem fabricar conteúdos ou gerar respostas irrelevantes. GroundednessEvaluator Mede quão bem a resposta gerada se alinha com o contexto dado, a fonte de fundamento, e não fabrica conteúdo fora dele.

Esta métrica capta o aspeto de precisão do alinhamento da resposta com a fonte de aterramento. Uma pontuação mais baixa significa que a resposta é irrelevante para a consulta ou fabrica conteúdo impreciso fora do contexto. Esta métrica é complementar a ResponseCompletenessEvaluator, que capta o aspeto 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á numa escala de Likert (inteiro de 1 a 5). Uma pontuação mais alta é melhor. Dado um limiar numérico (o padrão é 3), o avaliador responde a aprovação se a pontuação for maior ou igual ao limiar, ou falhar caso contrário. Use o campo razão para perceber porque é 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

Os 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, o GroundednessProEvaluator verifica se a resposta de texto gerada é precisa e consistente com o contexto dado num cenário de perguntas e respostas de geração aumentada por recuperação. Assegura que a resposta segue de perto o contexto para responder à pergunta, evitando especulações ou invenções. Emite uma etiqueta binária.

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 Groundedness Pro

O campo de etiqueta devolve 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 utilizador. É importante avaliar a resposta final. Para resolver este problema, use RelevanceEvaluator, que mede quão eficazmente uma resposta responde a uma consulta. Avalia a precisão, completude e relevância direta da resposta com base na consulta. Pontuações 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á numa escala de Likert (inteiro de 1 a 5). Uma pontuação mais alta é melhor. Dado um limiar numérico (o padrão é 3), o avaliador responde a aprovação se a pontuação for maior ou igual ao limiar, ou falhar caso contrário. O campo da razão ajuda-te a perceber porque é 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

Os sistemas de IA podem fabricar conteúdos ou gerar respostas irrelevantes fora do contexto dado. Dada uma resposta de verdade fundamentada, ResponseCompletenessEvaluator capta o aspeto de recordação do alinhamento da resposta com a resposta esperada. Este avaliador complementa GroundednessEvaluator, que capta o aspeto 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 numa escala de Likert (inteiro de 1 a 5). Uma pontuação mais alta é melhor. Dado um limiar numérico (por defeito 3), o avaliador também apresenta aprovação se a pontuação >= limiar, ou reprovação caso contrário. Use o campo razão para perceber porque é 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."
}