Retrieval-Augmented Generatie (RAG) beoordelaars (klassiek)

Momenteel weergeven:Foundry -portalversie - (klassiek)Overschakelen naar versie voor de nieuwe Foundry-portal

Note

De Microsoft Foundry SDK voor evaluatie en Foundry-portal zijn beschikbaar in openbare preview, maar de API's zijn algemeen beschikbaar voor model- en gegevenssetevaluatie (agentevaluatie blijft in openbare preview). De Azure AI Evaluation SDK en evaluators die in dit artikel zijn gemarkeerd (preview) zijn momenteel overal in openbare preview.

Een rag-systeem (Retrieval-Augmented Generation) probeert het meest relevante antwoord te genereren dat consistent is met basisdocumenten als reactie op de query van een gebruiker. De query van een gebruiker activeert een zoekopdracht die wordt opgehaald in het verzameling geaarde documenten om basiscontext te bieden voor het AI-model om een antwoord te genereren.

Het is belangrijk om het volgende te evalueren:

Deze beoordelaars richten zich op drie aspecten:

  • De relevantie van de ophaalresultaten voor de zoekopdracht van de gebruiker: gebruik Document Retrieval als je labels hebt voor query-specifieke documentrelevantie, of query relevance judgement (qrels) voor nauwkeurigere metingen. Gebruik Retrieval als je alleen de teruggehaalde context hebt, maar zulke labels niet hebt en een hogere tolerantie hebt voor een minder fijnkorrelige meting.
  • De consistentie van het gegenereerde antwoord ten opzichte van de grondingsdocumenten: gebruik Grondheid als je de definitie van gegrondheid wilt aanpassen in onze open-source grote taalmodel-judge (LLM-judge) prompt. Gebruik Groundedness Pro (preview) als je een duidelijke definitie wilt.
  • De relevantie van het uiteindelijke antwoord op de zoekopdracht: gebruik Relevantie als je geen grondwaarheid hebt. Gebruik Response Completeness als je de waarheid hebt en niet wilt dat je antwoord cruciale informatie mist.

Denk aan geaardheid en volledigheid van reacties als:

  • Groundedness richt zich op het precisieaspect van het antwoord. Het bevat geen inhoud buiten de aardingscontext.
  • Volledigheid van antwoorden is gericht op het relevante aspect van het antwoord. Het mist geen kritieke informatie in vergelijking met de verwachte reactie of grondwaar.

Modelconfiguratie voor AI-ondersteunde evaluators

Ter referentie in de volgende fragmenten gebruiken de door AI ondersteunde kwaliteitsbeoordelaars, behalve Groundedness Pro, een modelconfiguratie voor de LLM-judge:

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

Ondersteuning van evaluatormodellen

De evaluators ondersteunen AzureOpenAI of OpenAI redeneermodellen en niet-redeneermodellen voor de LLM-rechter, afhankelijk van de evaluatoren:

Evaluators Reasoning Models as Judge (voorbeeld: o-serie modellen uit Azure OpenAI / OpenAI) Niet-redenerende modellen als Judge (voorbeeld: gpt-4.1, gpt-4o) To enable
IntentResolution, , ToolCallAccuracy, ResponseCompletenessTaskAdherence, , Coherence, Fluency, , RetrievalGroundednessSimilarityRelevance Supported Supported Extra parameter is_reasoning_model=True instellen bij het initialiseren van evaluators
Other evaluators Not Supported Supported --

Voor complexe evaluaties die verfijnd redeneren vereisen, gebruik een sterk redeneermodel zoals 4.1-mini met een balans tussen redeneerprestaties en kostenefficiƫntie.

Retrieval

Vanwege de upstream rol in RAG is de kwaliteit van de retrieval cruciaal. Als de ophaalkwaliteit slecht is en de respons corpus-specifieke kennis vereist, is de kans kleiner dat het taalmodel een bevredigend antwoord geeft. RetrievalEvaluator Meet de tekstuele kwaliteit van opzoekresultaten met een taalmodel zonder dat er grondwaarheid nodig is, ook wel query relevance judgment genoemd.

Deze benadering voegt waarde toe ten opzichte van DocumentRetrievalEvaluator, die ndcg, xdcg, , fidelity, en andere klassieke informatieopzoekingsmetrics meet die grondwaarheid vereisen. Deze metric richt zich op hoe relevant de contextchunks zijn voor het beantwoorden van een query en hoe de meest relevante contextchunks bovenaan de lijst verschijnen. De contextchunks worden gecodeerd als 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

De numerieke score is gebaseerd op een Likert-schaal (geheel getal 1 tot 5), waarbij een hogere score een betere prestatie aangeeft. Gegeven een numerieke drempel (een standaard is ingesteld), geeft de evaluator ook 'pass' als de score >= drempel is, of 'faal ' anders. Het redenveld verklaart waarom de score hoog of laag is.

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

Vanwege de upstream rol in RAG is de kwaliteit van de retrieval cruciaal. Slechte opzoekkwaliteit verkleint de kans dat je taalmodel een bevredigend antwoord geeft, vooral wanneer het antwoord corpus-specifieke kennis vereist. Gebruik DocumentRetrievalEvaluator deze om de opzoekkwaliteit te evalueren en je zoekparameters voor RAG te optimaliseren.

  • De evaluator voor het ophalen van documenten meet hoe goed de RAG de juiste documenten ophaalt uit het documentarchief. Als samengestelde evaluator die nuttig is voor RAG-scenario met grondwaar, wordt een lijst met nuttige metrische gegevens over de zoekkwaliteit berekend voor het opsporen van fouten in uw RAG-pijplijnen:

    Metric Category Description
    Fidelity Search Fidelity Hoe goed de bovenste n opgehaalde segmenten de inhoud van een bepaalde query weerspiegelen: het aantal goede documenten dat is geretourneerd uit het totale aantal bekende goede documenten in een gegevensset
    NDCG Search NDCG Hoe goed zijn de classificaties in een ideale volgorde waar alle relevante items boven aan de lijst staan
    XDCG Search XDCG Hoe goed de resultaten zijn in de bovenste k-documenten, ongeacht het scoren van andere indexdocumenten
    Maximale relevantie N Zoeken op maximale relevantie Maximale relevantie in de bovenste segmenten
    Holes Zoeklabels sanity Aantal documenten met ontbrekende relevantie-beoordelingen van query's of grondwaar
  • Als u uw RAG wilt optimaliseren in een scenario met de naam parameter opruimen, kunt u deze metrische gegevens gebruiken om de zoekparameters te kalibreren voor de optimale RAG-resultaten. Genereer ophaalresultaten voor verschillende zoekparameters, zoals zoekalgoritmen (vector, semantiek), top_k en chunk-groottes. Gebruik vervolgens DocumentRetrievalEvaluator om de parameters te identificeren die de hoogste ophaalkwaliteit opleveren.

Voorbeeld van het ophalen van documenten

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)   

Uitvoer van het ophalen van documenten

Alle numerieke scores hebben high_is_better=True, behalve en holesholes_ratio, die hebben high_is_better=False. Bij een numerieke drempel (standaard van 3) geeft de evaluator als slagen als de score hoger is dan of gelijk aan de drempel, of faalt anders.

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

Het is belangrijk om te evalueren hoe gegrond de reactie is in relatie tot de context. AI-modellen kunnen content fabriceren of irrelevante antwoorden genereren. GroundednessEvaluator Meet hoe goed de gegenereerde respons aansluit bij de gegeven context, de grondbron, en fabriceert geen inhoud buiten die context.

Deze metriek vangt het precisieaspect van responsuitlijning met de aardingsbron vast. Een lagere score betekent dat het antwoord irrelevant is voor de zoekopdracht of onjuiste inhoud buiten de context fabriceert. Deze metriek is complementair aan ResponseCompletenessEvaluator, die het recall-aspect van responsuitlijning met de verwachte respons vastlegt.

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

De numerieke score is op een Likert-schaal (geheel getal 1 tot 5). Een hogere score is beter. Gegeven een numerieke drempel (standaard is 3), geeft de evaluator als slagen als de score hoger is dan of gelijk is aan de drempel, of faalt anders. Gebruik het redenveld om te begrijpen waarom de score hoog of laag is.

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

AI-systemen kunnen irrelevante antwoorden genereren of inhoud verzinnen buiten de gegeven context. Aangedreven door Azure AI Content Veiligheid controleert GroundednessProEvaluator of het gegenereerde tekstantwoord accuraat is en consistent is met de gegeven context in een ophaal-augmented generatie question-and-answering-scenario. Het zorgt ervoor dat het antwoord nauw aansluit bij de context om de vraag te beantwoorden, zonder speculatie of verzinseling. Het geeft een binair label uit.

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

Groundedness Pro uitgang

Het labelveld geeft terug True als alle inhoud in het antwoord volledig in de context is geworteld, en False anderszins. Gebruik het redenveld om meer te leren over het oordeel achter de score.

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

Relevance

AI-modellen kunnen irrelevante antwoorden genereren op een gebruikersvraag. Het is belangrijk om het uiteindelijke antwoord te evalueren. Om dit probleem aan te pakken, gebruik RelevanceEvaluator, dat meet hoe effectief een antwoord een query beantwoordt. Het beoordeelt de nauwkeurigheid, volledigheid en directe relevantie van het antwoord op basis van de query. Hogere scores betekenen betere relevantie.

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

De numerieke score is op een Likert-schaal (geheel getal 1 tot 5). Een hogere score is beter. Gegeven een numerieke drempel (standaard is 3), geeft de evaluator als slagen als de score hoger is dan of gelijk is aan de drempel, of faalt anders. Het reason-veld helpt je te begrijpen waarom de score hoog of laag is.

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

AI-systemen kunnen content fabriceren of irrelevante antwoorden genereren buiten de gegeven context. Gegeven een grondwaarheidsreactie, ResponseCompletenessEvaluator vangt het recall-aspect van responsuitlijning met de verwachte respons vast. Deze evaluator vult GroundednessEvaluator, die het precisieaspect van responsuitlijning met de aardingsbron vastlegt.

Voorbeeld van antwoordvolledigheid

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 van responsvolledigheid

De numerieke score op een Likert-schaal (geheel getal 1 tot 5). Een hogere score is beter. Gegeven een numerieke drempel (standaard 3), geeft de evaluator ook 'slaag' als de score >= drempel is, of faalt anders. Gebruik het redenveld om te begrijpen waarom de score hoog of laag is.

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