评估生成模型或应用的第一步是确定评估目标并定义评估指标。本页面简要介绍了针对您的使用场景定义评估指标的相关概念。
概览
生成式 AI 模型可用于创建应用来执行各种任务,例如总结新闻报道、回复客户咨询或协助编写代码。借助 Vertex AI 中的 Gen AI Evaluation Service,您可以使用可解释的指标来评估任何模型。
例如,您可能正在开发一个用于总结文章的应用。为了评估您的应用在该特定任务中的表现,您需要考虑您要衡量的标准以及您将用于评分的指标:
标准:您要评估的单个或多个维度,例如
conciseness
、relevance
、correctness
或appropriate choice of words
。指标:根据标准衡量模型输出的单项得分。
Gen AI Evaluation Service 提供两种主要类型的指标:
基于模型的指标:基于模型的指标使用专有的 Google 模型作为评判依据。您可以测量基于模型的成对指标或逐点指标:
逐点指标:让评判模型根据评估标准评估候选模型的输出。例如,得分可以介于 0 到 5 之间,其中 0 表示回答不符合标准,而 5 表示回答完全符合标准。
成对指标:让判断模型比较两个模型的回答,并选择更好的一个。在将候选模型与基准模型进行比较时,通常会使用这种方法。
基于计算的指标:这些指标是使用数学公式计算得出的,用于将模型的输出与标准答案或参考值进行比较。常用的基于计算的指标包括 ROUGE 和 BLEU。
您可以单独使用基于计算的指标,也可以将其与基于模型的指标结合使用。请参考下表,确定何时使用基于模型的指标或基于计算的指标:
评估方法 | 数据 | 费用和速度 | |
---|---|---|---|
基于模型的指标 | 使用评判模型根据描述性评估标准评估性能 | 标准答案为可选项 | 费用略高,速度较慢 |
基于计算的指标 | 使用数学公式评估性能 | 标准答案通常为必选项 | 费用低且速度快 |
定义基于模型的指标
基于模型的评估涉及使用大语言模型 (LLM) 作为评判模型来评估候选模型的输出。我们的评判模型由人工标注者进行校准,以确保其质量。这些模型有人管理并且开箱即用。基于模型的评估流程因您提供的评估指标而异。
基于模型的评估遵循以下流程:
数据准备:您以输入提示的形式提供评估数据。候选模型接收提示并生成相应回答。
评估:评估指标和生成的回答会发送到评判模型。评判模型会单独评估每条回答,并提供基于行的评估结果。
汇总和说明:Gen AI Evaluation Service 会将这些单项评估结果汇总为总分。输出内容还包含每项判定的思维链说明,概述了选择背后的理由。
Gen AI Evaluation Service 提供了以下选项,以便您使用 Vertex AI SDK 设置基于模型的指标:
选项 | 说明 | 适用场景 |
---|---|---|
使用现有示例 | 使用预构建的指标提示模板开始操作。 | 常见应用场景,节省时间 |
使用模板化界面定义指标 | 获得定义指标方面的指导性帮助。我们的模板化界面提供了结构和建议。 | 通过支持进行自定义 |
从头开始定义指标 | 完全控制指标定义。 | 非常适合高度特定的应用场景。需要更多的技术知识和时间投入。 |
例如,您可能希望开发一个生成式 AI 应用,该应用可返回流畅且有趣的回答。对于此应用,您可以使用模板化界面定义两项评估标准:
流畅性:句子流畅,避免了尴尬的措辞和不间断的长句。想法和句子逻辑地联系在一起,在需要的地方有效地使用过渡。
娱乐性:文本简短、有趣,包含表情符号、感叹号和问号,用于快速、自然地进行交流和娱乐。
要将这两项标准转换为指标,您需要一个总体得分,范围为 -1 到 1,称为 custom_text_quality
。您可以按如下方式定义指标:
# Define a pointwise metric with two criteria: Fluency and Entertaining.
custom_text_quality = PointwiseMetric(
metric="custom_text_quality",
metric_prompt_template=PointwiseMetricPromptTemplate(
criteria={
"fluency": (
"Sentences flow smoothly and are easy to read, avoiding awkward"
" phrasing or run-on sentences. Ideas and sentences connect"
" logically, using transitions effectively where needed."
),
"entertaining": (
"Short, amusing text that incorporates emojis, exclamations and"
" questions to convey quick and spontaneous communication and"
" diversion."
),
},
rating_rubric={
"1": "The response performs well on both criteria.",
"0": "The response is somewhat aligned with both criteria",
"-1": "The response falls short on both criteria",
},
),
)
如需查看指标提示模板的完整列表,请参阅用于评估的指标提示模板。
选择逐点评估或成对评估
请参阅下表,确定何时使用逐点评估或成对评估:
定义 | 何时使用 | 应用场景示例 | |
---|---|---|---|
逐点评估 | 评估一个模型,并根据标准生成得分 |
|
|
成对评估 | 将两个模型相互比较,并根据标准找出偏好模型 |
|
|
基于计算的指标
基于计算的指标会比较 LLM 生成的结果是否与输入输出对的标准答案数据集一致。常用的指标可以分为以下几组:
- 基于词汇的指标:使用数学方法计算 LLM 生成的结果与标准答案之间的字符串相似度,例如
Exact Match
和ROUGE
。 - 基于计数的指标:汇总计算命中或未命中某些标准答案标签(例如
F1-score
、Accuracy
和Tool Name Match
)的行数。 - 基于嵌入的指标:计算 LLM 生成的结果与标准答案在嵌入空间中的距离,以反映它们的相似度级别。
常规文本生成
以下指标可帮助您评估模型确保回答对用户来说是实用、安全且有效的能力。
完全匹配
exact_match
指标评估模型回答是否与参考值完全匹配。
- 词元数量上限:无
评估标准
不适用。
指标输入参数
输入参数 | 说明 |
---|---|
response |
LLM 回答。 |
reference |
可供参考的黄金 LLM 回答。 |
输出得分
值 | 说明 |
---|---|
0 | 不匹配 |
1 | 匹配 |
BLEU
bleu
(双语替换评测)指标提供用于评估回答质量的算法的结果,其中该回答已从一种自然语言翻译成另一种自然语言。回答的质量由 response
参数与其 reference
参数之间的一致程度来决定。
- 词元数量上限:无
评估标准
不适用。
指标输入参数
输入参数 | 说明 |
---|---|
response |
LLM 回答。 |
reference |
可供参考的黄金 LLM 回答。 |
输出得分
值 | 说明 |
---|---|
[0,1] 范围内的浮点数 | 得分越高,表示翻译越好。得分为 1 表示与 reference 完全匹配。 |
ROUGE
ROUGE
指标用于将提供的 response
参数与 reference
参数进行比对。
所有 rouge
指标都会返回 F1 得分。默认情况下,系统会计算 rouge-l-sum
,但您可以指定要使用的 rouge
变体。
- 词元数量上限:无
评估标准
不适用
指标输入参数
输入参数 | 说明 |
---|---|
response |
LLM 回答。 |
reference |
可供参考的黄金 LLM 回答。 |
输出得分
值 | 说明 |
---|---|
[0,1] 范围内的浮点数 | 得分越接近 0 ,表示 response 和 reference 之间的相似度越低。得分越接近 1 ,表示 response 与 reference 之间的相似度越高。 |
工具使用和函数调用
以下指标可帮助您评估模型预测有效工具(函数)调用的能力。
调用有效
tool_call_valid
指标描述模型预测有效工具调用的能力。系统仅检查第一个工具调用。
- 词元数量上限:无
评估标准
评估标准 | 说明 |
---|---|
有效性 | 模型的输出包含有效的工具调用。 |
格式设置 | JSON 字典包含 name 和 arguments 字段。 |
指标输入参数
输入参数 | 说明 |
---|---|
prediction |
候选模型输出,这是一个包含 content 和 tool_calls 键的 JSON 序列化字符串。content 值是模型的文本输出。tool_calls 值是工具调用列表的 JSON 序列化字符串。示例如下:{"content": "", "tool_calls": [{"name":
"book_tickets", "arguments": {"movie": "Mission Impossible Dead Reckoning
Part 1", "theater":"Regal Edwards 14", "location": "Mountain View CA",
"showtime": "7:30", "date": "2024-03-30","num_tix": "2"}}]} |
reference |
标准答案参照预测,其格式与 prediction 相同。 |
输出得分
值 | 说明 |
---|---|
0 | 工具调用无效 |
1 | 工具调用有效 |
名称匹配
tool_name_match
指标描述了模型预测的工具调用具有正确的工具名称的能力。系统仅检查第一个工具调用。
- 词元数量上限:无
评估标准
评估标准 | 说明 |
---|---|
名称匹配 | 模型预测的工具调用与参照工具调用的名称匹配。 |
指标输入参数
输入参数 | 说明 |
---|---|
prediction |
候选模型输出,这是一个包含 content 和 tool_calls 键的 JSON 序列化字符串。content 值是模型的文本输出。tool_call 值是工具调用列表的 JSON 序列化字符串。示例如下:{"content": "","tool_calls": [{"name": "book_tickets", "arguments":
{"movie": "Mission Impossible Dead Reckoning Part 1", "theater":"Regal
Edwards 14", "location": "Mountain View CA", "showtime": "7:30", "date":
"2024-03-30","num_tix": "2"}}]} |
reference |
标准答案参照预测,其格式与 prediction 相同。 |
输出得分
值 | 说明 |
---|---|
0 | 工具调用名称与参照项不匹配。 |
1 | 工具调用名称与参照项匹配。 |
参数键匹配
tool_parameter_key_match
指标描述了模型预测的工具调用具有正确的参数名称的能力。
- 词元数量上限:无
评估标准
评估标准 | 说明 |
---|---|
参数匹配率 | 与参照工具调用的参数名称匹配的预测参数的数量与参数总数之间的比率。 |
指标输入参数
输入参数 | 说明 |
---|---|
prediction |
候选模型输出,这是一个包含 content 和 tool_calls 键的 JSON 序列化字符串。content 值是模型的文本输出。tool_call 值是工具调用列表的 JSON 序列化字符串。示例如下:{"content": "", "tool_calls": [{"name": "book_tickets", "arguments":
{"movie": "Mission Impossible Dead Reckoning Part 1", "theater":"Regal
Edwards 14", "location": "Mountain View CA", "showtime": "7:30", "date":
"2024-03-30","num_tix": "2"}}]} |
reference |
标准答案参照模型预测,其格式与 prediction 相同。 |
输出得分
值 | 说明 |
---|---|
[0,1] 范围内的浮点数 | 1 的得分越高,表示与 reference 参数的名称匹配的参数越多。 |
参数 KV 匹配
tool_parameter_kv_match
指标描述了模型预测的工具调用具有正确的参数名称和键值的能力。
- 词元数量上限:无
评估标准
评估标准 | 说明 |
---|---|
参数匹配率 | 与参照工具调用的参数名称和值匹配的预测参数的数量与参数总数之间的比率。 |
指标输入参数
输入参数 | 说明 |
---|---|
prediction |
候选模型输出,这是一个包含 content 和 tool_calls 键的 JSON 序列化字符串。content 值是模型的文本输出。tool_call 值是工具调用列表的 JSON 序列化字符串。示例如下:{"content": "", "tool_calls": [{"name": "book_tickets", "arguments":
{"movie": "Mission Impossible Dead Reckoning Part 1", "theater":"Regal
Edwards 14", "location": "Mountain View CA", "showtime": "7:30", "date":
"2024-03-30","num_tix": "2"}}]} |
reference |
标准答案参照预测,其格式与 prediction 相同。 |
输出得分
值 | 说明 |
---|---|
[0,1] 范围内的浮点数 | 1 的得分越高,表示与 reference 参数的名称和值匹配的参数越多。 |
在生成式 AI 评估服务中,您可以通过 Vertex AI SDK for Python 使用基于计算的指标。
生成式任务的基准评估质量
在评估生成式 AI 模型的输出时,请注意评估过程本身具有主观性,评估质量可能会因具体任务和评估标准而异。这种主观性也适用于人工评估员。如需详细了解生成式 AI 模型在实现评估结果一致性方面的挑战,请参阅使用 MT-Bench 和 Chatbot Arena 评估 LLM-as-a-Judge 和从人类反馈中学习如何总结。