你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

文本相似性计算器

请务必比较 AI 系统生成的文本响应与预期响应的接近程度,通常称为“基本真相”。 使用 LLM 判断指标,例如 SimilarityEvaluator 专注于生成的响应与基本事实之间的语义相似性,或使用自然语言处理(NLP)字段中的指标,包括 F1 分数BLEUGLEUROUGE流星 ,重点是两者之间的标记或 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 is 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."
)

相似性输出

likert 刻度(整数 1 到 5)的数字分数和更高的分数意味着更高的相似性。 给定数值阈值(默认值为 3),如果分数 >= 阈值,则我们还输出“pass”,否则将输出“fail”。 使用原因字段可帮助你了解分数高或低的原因。

{
    "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),如果分数 >= 阈值或“失败”,则我们还输出“pass”。

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

BLEU 分数

BleuScoreEvaluator 计算在自然语言处理(NLP)和机器翻译中常用的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),如果分数 >= 阈值或“失败”,则我们还输出“pass”。

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

GLEU 分数

GleuScoreEvaluator 计算 GLEU (Google-BLEU) 分数。 它通过生成的文本和地面真实之间的共享 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),如果分数 >= 阈值或“失败”,则我们还输出“pass”。

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

ROUGE 分数

RougeScoreEvaluator 计算 ROUGE (Recall-Oriented Gisting 评估的欠学)分数,这是一组用于评估自动汇总和机器翻译的指标。 它度量生成的文本与参考摘要之间的重叠。 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),如果分数 >= 阈值或“失败”,则我们还输出“pass”。

{
    "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),如果分数 >= 阈值或“失败”,则我们还输出“pass”。

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