Dela via


Utvärderare för textlikhet

Det är viktigt att jämföra hur nära det textsvar som genereras av AI-systemet matchar det svar du förväntar dig. Det förväntade svaret kallas grundsanningen.

Använd ett LLM-domarmått som SimilarityEvaluator med fokus på den semantiska likheten mellan det genererade svaret och grundsanningen. Du kan också använda mått från fältet för bearbetning av naturligt språk (NLP), inklusive F1-poäng, BLEU, GLEU, ROUGE och METEOR med fokus på överlappningar av token eller n-gram mellan de två.

Modellkonfiguration för AI-assisterade utvärderare

Som referens i följande kodfragment använder DE AI-assisterade utvärderarna 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

Vi 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 utan resonemang som Domare (exempel: gpt-4.1, gpt-4o osv.) Så här aktiverar du
IntentResolution, TaskAdherence, ToolCallAccuracy, ResponseCompleteness, Coherence, Fluency, , Similarity, Groundedness, , RetrievalRelevance Understödd Understödd Ange ytterligare parameter is_reasoning_model=True för att initiera utvärderare
Andra utvärderare Stöds inte Understödd --

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.

Likhet

SimilarityEvaluator mäter graden av semantisk likhet mellan den genererade texten och dess grundsanning med avseende på en fråga. Jämfört med andra textlikhetsmått som kräver grundsanningar fokuserar det här måttet på semantik i ett svar i stället för enkel överlappning i token eller n-gram. Den tar också hänsyn till den bredare kontexten för en fråga.

Likhetsexempel

from azure.ai.evaluation import SimilarityEvaluator

similarity = SimilarityEvaluator(model_config=model_config, threshold=3)
similarity(
    query="Is Marie Curie born in Paris?", 
    response="According to wikipedia, Marie Curie was not born in Paris but in Warsaw.",
    ground_truth="Marie Curie was born in Warsaw."
)

Likhetsutdata

Utdata är en numerisk poäng på en likert-skala, heltal 1 till 5. En högre poäng innebär en högre grad av likhet. Med tanke på ett numeriskt tröskelvärde (standardvärdet 3) skickar det här exemplet ä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.

{
    "similarity": 4.0,
    "gpt_similarity": 4.0,
    "similarity_result": "pass",
    "similarity_threshold": 3
}

F1-poäng

F1ScoreEvaluator mäter likheten mellan delade token mellan den genererade texten och grundsanningen. Den fokuserar på både precision och återkallande. F1-poängen beräknar förhållandet mellan antalet delade ord mellan modellgenereringen och grundsanningen. Förhållandet beräknas över de enskilda orden i det genererade svaret mot dessa ord i det grundläggande sanningssvaret. Antalet delade ord mellan generation och sanning är grunden för F1-poängen.

  • Precision är förhållandet mellan antalet delade ord och det totala antalet ord i genereringen.
  • Recall är förhållandet mellan antalet delade ord och det totala antalet ord i grundsanningen.

F1-poängexempel

from azure.ai.evaluation import F1ScoreEvaluator

f1_score = F1ScoreEvaluator(threshold=0.5)
f1_score(
    response="According to wikipedia, Marie Curie was not born in Paris but in Warsaw.",
    ground_truth="Marie Curie was born in Warsaw."
)

F1-poängutdata

Den numeriska poängen är en 0-1 float. En högre poäng är bättre. Givet ett numeriskt tröskelvärde (standardvärdet är 0,5) skickas även resultatet om poängen >= tröskelvärdet eller misslyckas på annat sätt.

{
    "f1_score": 0.631578947368421,
    "f1_result": "pass",
    "f1_threshold": 0.5
}

BLEU-poäng

BleuScoreEvaluator beräknar bleu-poängen (Tvåspråkig utvärderingsunderstudy) som ofta används vid bearbetning av naturligt språk och maskinöversättning. Den mäter hur nära den genererade texten matchar referenstexten.

BLEU-exempel

from azure.ai.evaluation import BleuScoreEvaluator

bleu_score = BleuScoreEvaluator(threshold=0.3)
bleu_score(
    response="According to wikipedia, Marie Curie was not born in Paris but in Warsaw.",
    ground_truth="Marie Curie was born in Warsaw."
)

BLEU-utdata

Den numeriska poängen är en 0-1 float. En högre poäng är bättre. Givet ett numeriskt tröskelvärde (standardvärdet är 0,5) skickas även resultatet om poängen >= tröskelvärdet eller misslyckas på annat sätt.

{
    "bleu_score": 0.1550967560878879,
    "bleu_result": "fail",
    "bleu_threshold": 0.3
}

GLEU-poäng

GleuScoreEvaluator beräknar Google-BLEU -poängen (GLEU). Den mäter likheten mellan delad n-gram mellan den genererade texten och den markbaserade sanningen. På samma sätt som BLEU-poängen fokuserar den på både precision och återkallande. Den tar upp nackdelarna med BLEU-poängen med hjälp av ett belöningsmål per mening.

EXEMPEL på GLEU-poäng

from azure.ai.evaluation import GleuScoreEvaluator

gleu_score = GleuScoreEvaluator(threshold=0.2)
gleu_score(
    response="According to wikipedia, Marie Curie was not born in Paris but in Warsaw.",
    ground_truth="Marie Curie was born in Warsaw."
)

GLEU-poängutdata

Den numeriska poängen är en 0-1 float. En högre poäng är bättre. Givet ett numeriskt tröskelvärde (standardvärdet är 0,5) skickas även resultatet om poängen >= tröskelvärdet eller misslyckas på annat sätt.

{
    "gleu_score": 0.25925925925925924,
    "gleu_result": "pass",
    "gleu_threshold": 0.2
}

ROUGE-poäng

RougeScoreEvaluator beräknar Recall-Oriented Understudy for Gisting Evaluation (ROUGE), en uppsättning mått som används för att utvärdera automatisk sammanfattning och maskinöversättning. Den mäter överlappningen mellan genererad text och referenssammanfattningar. ROUGE fokuserar på återkallningsorienterade åtgärder för att bedöma hur väl den genererade texten täcker referenstexten. ROUGE-poängen består av precision, träffsäkerhet och F1-poäng.

EXEMPEL PÅ ROUGE-poäng

from azure.ai.evaluation import RougeScoreEvaluator, RougeType

rouge = RougeScoreEvaluator(rouge_type=RougeType.ROUGE_L, precision_threshold=0.6, recall_threshold=0.5, f1_score_threshold=0.55) 
rouge(
    response="According to wikipedia, Marie Curie was not born in Paris but in Warsaw.",
    ground_truth="Marie Curie was born in Warsaw."
)

ROUGE-poängutdata

Den numeriska poängen är en 0-1 float. En högre poäng är bättre. Givet ett numeriskt tröskelvärde (standardvärdet är 0,5) skickas även resultatet om poängen >= tröskelvärdet eller misslyckas på annat sätt.

{
    "rouge_precision": 0.46153846153846156,
    "rouge_recall": 1.0,
    "rouge_f1_score": 0.631578947368421,
    "rouge_precision_result": "fail",
    "rouge_recall_result": "pass",
    "rouge_f1_score_result": "pass",
    "rouge_precision_threshold": 0.6,
    "rouge_recall_threshold": 0.5,
    "rouge_f1_score_threshold": 0.55
}

METEOR-poäng

MeteorScoreEvaluator mäter likheten mellan den genererade texten och grundsanningen. På samma sätt som BLEU-poängen fokuserar den på precision och återkallande. Den åtgärdar begränsningar för andra mått som BLEU-poängen genom att överväga synonymer, härstamning och parafraser för innehållsjustering.

METEOR-poängexempel

from azure.ai.evaluation import MeteorScoreEvaluator

meteor_score = MeteorScoreEvaluator(threshold=0.9)
meteor_score(
    response="According to wikipedia, Marie Curie was not born in Paris but in Warsaw.",
    ground_truth="Marie Curie was born in Warsaw."
)

METEOR-poängutdata

Den numeriska poängen är en 0-1 float. En högre poäng är bättre. Givet ett numeriskt tröskelvärde (standardvärdet är 0,5) skickas även resultatet om poängen >= tröskelvärdet eller misslyckas på annat sätt.

{
    "meteor_score": 0.8621140763997908,
    "meteor_result": "fail",
    "meteor_threshold": 0.9
}