Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Ett rag-system (Retrieval-Augmented Generation) försöker generera det mest relevanta svaret som överensstämmer med grunddokument som svar på en användares fråga. På hög nivå utlöser en användares fråga en sökhämtning i korpusen av grunddokument för att ge grundkontext för AI-modellen för att generera ett svar. Det är viktigt att utvärdera:
Dessa utvärderare tar upp tre aspekter:
- Relevansen av hämtningsresultatet för användarens fråga: Använd Dokumenthämtning om du har etiketter för frågespecifik dokumentrelevans eller frågerelevansbedömning (qrels) för mer exakta mätningar. Använd Hämtning om du bara har den hämtade kontexten, men du inte har sådana etiketter och har högre tolerans för en mindre detaljerad mätning.
- Konsekvensen i det genererade svaret med avseende på grunddokumenten: använd Groundedness om du vill anpassa definitionen av grundlighet i vår fråga om storspråksmodell-domare (LLM-judge) med öppen källkod. Använd Groundedness Pro om du vill ha en enkel definition.
- Relevansen av det slutliga svaret på frågan: Använd Relevans om du inte har grundsanning. Använd Svars fullständighet om du har grund sanning och inte vill att ditt svar ska missa viktig information.
Ett bra sätt att tänka på groundedness och svar completeness är:
- Groundedness handlar om precisionsaspekten i svaret. Den får inte innehålla innehåll utanför grundkontexten.
- Svars completeness handlar om återkallningsaspekten av svaret. Den bör inte missa viktig information jämfört med det förväntade svaret eller grundsanningen.
Modellkonfiguration för AI-assisterade utvärderare
Som referens i följande kodfragment använder de AI-assisterade kvalitetsutvärderingarna, förutom Groundedness Pro, en modellkonfiguration för LLM-domaren:
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"),
)
Stöd för utvärderingsmodell
Utvärderarna stöder AzureOpenAI- eller OpenAI-resonemangsmodeller och icke-resonemangsmodeller för LLM-domaren beroende på utvärderarna:
| Evaluators | Resonemangsmodeller som domare (exempel: o-seriemodeller från Azure OpenAI/OpenAI) | Modeller som inte resonerar som domare (exempel: gpt-4.1, gpt-4o) | Så här aktiverar du |
|---|---|---|---|
IntentResolution, TaskAdherence, ToolCallAccuracy, ResponseCompleteness, Coherence, Fluency, , Similarity, Groundedness, , RetrievalRelevance |
Supported | Supported | Ange ytterligare parameter is_reasoning_model=True för att initiera utvärderare |
| Andra utvärderare | Stöds inte | Supported | -- |
För komplex utvärdering som kräver förfinade resonemang rekommenderar vi en stark resonemangsmodell som 4.1-mini med en balans mellan resonemangsprestanda och kostnadseffektivitet.
Retrieval
På grund av dess överordnade roll i RAG är hämtningskvaliteten viktig. Om hämtningskvaliteten är dålig och svaret kräver corpusspecifik kunskap, är det mindre chans att din språkmodell ger dig ett tillfredsställande svar.
RetrievalEvaluator mäter textkvaliteten för hämtningsresultat med en språkmodell utan att kräva grundsanning, även kallat frågerelevansbedömning.
Det här faktumet ger ett värde jämfört DocumentRetrievalEvaluatormed , som mäter ndcg, xdcg, fidelityoch andra klassiska informationshämtningsmått som kräver grundsanning. Det här måttet fokuserar på hur relevanta kontextsegmenten är för att hantera en fråga och hur de mest relevanta kontextsegmenten visas överst i listan. Kontextsegmenten kodas som strängar.
Exempel på hämtning
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. ",
)
Hämta utdata
Den numeriska poängen på en Likert-skala (heltal 1 till 5). En högre poäng är bättre. Med tanke på ett numeriskt tröskelvärde (ett standardvärde anges) skickar utvärderaren även ett pass om poängen >= tröskelvärdet eller misslyckas på annat sätt. Med hjälp av orsaksfältet kan du förstå varför poängen är hög eller låg.
{
"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
}
Dokumenthämtning
På grund av dess överordnade roll i RAG är hämtningskvaliteten viktig. Om hämtningskvaliteten är dålig och svaret kräver corpusspecifik kunskap, är det mindre chans att din språkmodell ger dig ett tillfredsställande svar. Det är viktigt att använda DocumentRetrievalEvaluator för att utvärdera hämtningskvaliteten men även optimera sökparametrarna för RAG.
Utvärderaren för dokumenthämtning mäter hur väl RAG hämtar rätt dokument från dokumentarkivet. Som en sammansatt utvärderare som är användbar för RAG-scenario med grundsanning beräknar den en lista över användbara sökkvalitetsmått för felsökning av RAG-pipelines:
Metric Category Description Fidelity Sök återgivning Hur väl de översta n hämtade segmenten återspeglar innehållet för en viss fråga: antalet bra dokument som returneras av det totala antalet kända bra dokument i en datauppsättning NDCG Sök i NDCG Hur bra är rankningen till en idealisk ordning där alla relevanta objekt finns överst i listan XDCG Sök efter XDCG Hur bra resultaten är i topp-k-dokumenten oavsett bedömning av andra indexdokument Maximal relevans N Maximal relevans för sökning Maximal relevans i segmenten top-k Holes Search Label Sanity Antal dokument med saknade frågerelevansbedömningar eller grundsanning Om du vill optimera DIN RAG i ett scenario som kallas parametersvepning kan du använda dessa mått för att kalibrera sökparametrarna för optimala RAG-resultat. Generera olika hämtningsresultat för olika sökparametrar, till exempel sökalgoritmer (vektor, semantik), top_k och segmentstorlekar som du är intresserad av att testa. Använd
DocumentRetrievalEvaluatorsedan för att hitta sökparametrarna som ger högsta hämtningskvalitet.
Exempel på dokumenthämtning
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)
Utdata för dokumenthämtning
Alla numeriska poäng har high_is_better=True förutom holes och holes_ratio, som har high_is_better=False. Med tanke på ett numeriskt tröskelvärde (standardvärdet 3) skickar utvärderaren även ett pass om poängen >= tröskelvärdet eller misslyckas på annat sätt.
{
"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
Det är viktigt att utvärdera hur grundat svaret är i förhållande till kontexten. AI-modeller kan fabricera innehåll eller generera irrelevanta svar.
GroundednessEvaluator mäter hur väl det genererade svaret överensstämmer med den angivna kontexten – jordningskällan – och fabricerar inte innehåll utanför det.
Det här måttet samlar in precisionsaspekten för svarsjustering med jordningskällan. Lägre poäng innebär att svaret är irrelevant för frågan eller fabricerat felaktigt innehåll utanför kontexten. Det här måttet kompletterar ResponseCompletenessEvaluator, som avbildar återkallningsaspekten av svarsjusteringen med det förväntade svaret.
Groundedness-exempel
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-utdata
Den numeriska poängen på en Likert-skala (heltal 1 till 5). En högre poäng är bättre. Med tanke på ett numeriskt tröskelvärde (standardvärdet 3) skickar utvärderaren även ett pass om poängen >= tröskelvärdet eller misslyckas på annat sätt. Använd orsaksfältet för att förstå varför poängen är hög eller låg.
{
"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-system kan fabricera innehåll eller generera irrelevanta svar utanför den angivna kontexten. Drivs av Azure AI Content Safety och GroundednessProEvaluator identifierar om det genererade textsvaret är konsekvent eller korrekt med avseende på den angivna kontexten i ett Retrieval-Augmented generation med fråge- och svarsscenario. Den kontrollerar om svaret följer kontexten noga för att besvara frågan och undvika spekulation eller fabricering. Den matar ut en binär etikett.
Exempel på Groundedness Pro
from azure.ai.evaluation import GroundednessProEvaluator
from azure.identity import DefaultAzureCredential
import os
from dotenv import load_dotenv
load_dotenv()
## Using Azure AI 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"),
}
## Using Azure AI Foundry Development Platform, example: AZURE_AI_PROJECT=https://your-account.services.ai.azure.com/api/projects/your-project
azure_ai_project = os.environ.get("AZURE_AI_PROJECT")
groundedness_pro = GroundednessProEvaluator(azure_ai_project=azure_ai_project, credential=DefaultAzureCredential())
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-utdata
Etikettfältet returnerar en boolesk poäng True om allt innehåll i svaret är helt grundat i kontexten och False på annat sätt. Använd orsaksfältet för att förstå mer om domen bakom poängen.
{
"groundedness_pro_reason": "All Contents are grounded",
"groundedness_pro_label": True
}
Relevance
AI-modeller kan generera irrelevanta svar när det gäller en användarfråga. Det är viktigt att utvärdera det slutliga svaret. För att lösa det här problemet kan du använda RelevanceEvaluator, som mäter hur effektivt ett svar åtgärdar en fråga. Den utvärderar noggrannhet, fullständighet och direkt relevans för svaret baserat på den angivna frågan. Högre poäng innebär bättre relevans.
Relevansexempel
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."
)
Relevansutdata
Den numeriska poängen på en Likert-skala (heltal 1 till 5). En högre poäng är bättre. Med tanke på ett numeriskt tröskelvärde (standardvärdet 3) skickar utvärderaren även ett pass om poängen >= tröskelvärdet eller misslyckas på annat sätt. Med hjälp av orsaksfältet kan du förstå varför poängen är hög eller låg.
{
"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
}
Svars fullständighet
AI-system kan fabricera innehåll eller generera irrelevanta svar utanför den angivna kontexten. Givet svar på ResponseCompletenessEvaluator grund sanning, fångar återkallningsaspekten av svarsjusteringen med det förväntade svaret. Den här utvärderaren kompletterar GroundednessEvaluator, som fångar precisionsaspekten av svarsjusteringen med jordningskällan.
Exempel på svars fullständighet
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 CEO."
)
Svarsutdata för fullständighet
Den numeriska poängen på en Likert-skala (heltal 1 till 5). En högre poäng är bättre. Med tanke på ett numeriskt tröskelvärde (standardvärdet 3) skickar utvärderaren även ett pass om poängen >= tröskelvärdet eller misslyckas på annat sätt. Använd orsaksfältet för att förstå varför poängen är hög eller låg.
{
"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."
}