你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
请务必比较 AI 系统生成的文本响应与预期响应的接近程度。 预期的反应被称为 地面真相。
使用 LLM 判断指标,例如 SimilarityEvaluator 专注于生成的响应与基本真相之间的语义相似性。 或者,使用自然语言处理(NLP)字段中的指标,包括 F1 分数、 BLEU、 GLEU、 ROUGE 和 METEOR ,重点是两者之间令牌或 n 元语法的重叠。
AI 辅助评估器的模型配置
为了参考以下代码片段,AI 辅助计算器使用 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"),
)
小窍门
我们建议你用于 o3-mini 平衡推理功能和成本效益。
相似
SimilarityEvaluator 度量生成的文本与其与查询的基数之间的语义相似度。 与其他需要基本事实的文本相似性指标相比,此指标侧重于响应的语义,而不是在令牌或 n 元语法中简单重叠。 它还考虑查询的更广泛上下文。
相似性示例
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."
)
相似性输出
输出是类似比例的数字分数,整数 1 到 5。 更高的分数意味着更高的相似性。 给定数值阈值(默认值为 3),本示例还会输出分数 >= 阈值时传递,否则也会失败。 使用原因字段了解分数高或低的原因。
{
"similarity": 4.0,
"gpt_similarity": 4.0,
"similarity_result": "pass",
"similarity_threshold": 3
}
F1 分数
F1ScoreEvaluator 通过生成的文本与基本事实之间的共享令牌来度量相似性。 它侧重于精度和召回率。 F1 分数计算模型生成与基准真值之间的共用字词数的比率。 该比率根据生成的响应中针对基本真理答案中的单词的单个单词计算。 这一代和真相之间的共享单词数是 F1 分数的基础。
- 精度 是共享单词数与生成中单词总数的比率。
- 召回 率是共享单词数与基本事实中单词总数的比率。
F1 评分示例
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 评分输出
数值分数为 0-1 浮点数。 分数越高越好。 给定数值阈值(默认值为 0.5),如果分数 >= 阈值或失败,它还会输出传递。
{
"f1_score": 0.631578947368421,
"f1_result": "pass",
"f1_threshold": 0.5
}
BLEU 分数
BleuScoreEvaluator 计算在自然语言处理和机器翻译中常用的双语评估不足(BLEU)分数。 它度量生成的文本与参考文本的匹配程度。
BLEU示例
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输出
数值分数为 0-1 浮点数。 分数越高越好。 给定数值阈值(默认值为 0.5),如果分数 >= 阈值或失败,它还会输出传递。
{
"bleu_score": 0.1550967560878879,
"bleu_result": "fail",
"bleu_threshold": 0.3
}
GLEU 分数
GleuScoreEvaluator 计算 Google-BLEU(GLEU)分数。 它通过生成的文本和地面真相之间的共享 n 元语法来测量相似性。 与BLEU分数类似,它侧重于精度和召回率。 它解决了使用每句子奖励目标BLEU分数的缺点。
GLEU 评分示例
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 评分输出
数值分数为 0-1 浮点数。 分数越高越好。 给定数值阈值(默认值为 0.5),如果分数 >= 阈值或失败,它还会输出传递。
{
"gleu_score": 0.25925925925925924,
"gleu_result": "pass",
"gleu_threshold": 0.2
}
ROUGE 分数
RougeScoreEvaluator 计算吉斯廷评估(ROUGE)分数的 Recall-Oriented 不足,这是一组用于评估自动汇总和机器翻译的指标。 它度量生成的文本与参考摘要之间的重叠。 ROUGE 注重使用以召回为导向的措施,来评估生成的文本与参考文本之间的覆盖程度。 ROUGE 分数包括精准率、召回率和 F1 分数。
ROUGE 分数示例
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 分数输出
数值分数为 0-1 浮点数。 分数越高越好。 给定数值阈值(默认值为 0.5),如果分数 >= 阈值或失败,它还会输出传递。
{
"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 分数
MeteorScoreEvaluator 通过生成的文本与基本真相之间的共享 n 元语法来度量相似性。 与BLEU分数类似,它侧重于精度和召回率。 它通过考虑内容对齐的同义词、词干和描述来解决其他指标(如BLEU评分)的限制。
流星分数示例
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."
)
流星分数输出
数值分数为 0-1 浮点数。 分数越高越好。 给定数值阈值(默认值为 0.5),如果分数 >= 阈值或失败,它还会输出传递。
{
"meteor_score": 0.8621140763997908,
"meteor_result": "fail",
"meteor_threshold": 0.9
}