马赛克 AI 代理评估 LLM 评委参考
重要
此功能目前以公共预览版提供。
本文介绍马赛克 AI 代理评估中内置的每个 LLM 法官的详细信息,包括所需的输入和输出指标。 它还涵盖自定义法官生成的输出。
有关 LLM 评委的简介,请参阅 代理评估如何评估质量、成本和延迟。
响应法官
回复质量指标评估应用程序对用户请求的回复程度。 这些指标评估了与地面事实相比响应的准确性、根据检索到的上下文(还是 LLM 正在幻觉)以及响应是否安全且没有有毒语言等因素。
总体来说,LLM 是否给出了准确的答案?
correctness
LLM 判定针对代理生成的响应是否事实上准确并且在语义上是否与所提供的基本事实响应相似,提供二元评估和书面理由。
correctness
所需的输入
需要基本事实 expected_response
。
输入评估集必须具有下面的列:
request
expected_response
此外,如果不使用 model
参数(在 mlflow.evaluate()
调用中),则还必须提供 response
或 trace
。
重要
基本事实 expected_response
应仅包含正确响应所需的最小事实集。 如果从另一个源复制响应,请编辑响应以删除任何不需要将答案视为正确的文本。
仅包含所需的信息,而忽略答案中不严格要求的信息,使得代理评估能够提供更可靠的输出质量信号。
correctness
的输出
每个问题都会计算以下指标:
数据字段 | 类型 | 描述 |
---|---|---|
response/llm_judged/correctness/rating |
string |
yes 或 no 。 yes 指示生成的响应高度准确且语义上类似于基本事实。 捕捉到基本事实的意图但存在细微遗漏或不准确是可接受的。 no 指示响应不符合条件。 |
response/llm_judged/correctness/rationale |
string |
yes 或 no 的 LLM 书面理由。 |
response/llm_judged/correctness/error_message |
string |
如果计算此指标时出错,这里提供了错误的详细信息。 如果没有错误,则为 NULL。 |
针对整个评估集计算以下指标:
指标名称 | 类型 | 描述 |
---|---|---|
response/llm_judged/correctness/rating/percentage |
float, [0, 1] |
在所有问题上,正确性判定为 yes 的百分比。 |
回复是否与请求相关?
relevance_to_query
LLM 判定确定响应是否与输入请求有关。
relevance_to_query
所需的输入
不需要基本事实。
输入评估集必须具有下面的列:
request
此外,如果不使用 model
参数(在 mlflow.evaluate()
调用中),则还必须提供 response
或 trace
。
relevance_to_query
的输出
每个问题都会计算以下指标:
数据字段 | 类型 | 描述 |
---|---|---|
response/llm_judged/relevance_to_query/rating |
string |
如果判定回复与请求相关,则为 yes ;否则为 no 。 |
response/llm_judged/relevance_to_query/rationale |
string |
yes 或 no 的 LLM 书面理由。 |
response/llm_judged/relevance_to_query/error_message |
string |
如果计算此指标时出错,这里提供了错误的详细信息。 如果没有错误,则为 NULL。 |
针对整个评估集计算以下指标:
指标名称 | 类型 | 描述 |
---|---|---|
response/llm_judged/relevance_to_query/rating/percentage |
float, [0, 1] |
在所有问题上,relevance_to_query/rating 判定为 yes 的百分比。 |
回复是幻觉,还是基于检索到的上下文得出的?
groundedness
LLM 判定针对生成的响应在事实上是否与检索到的上下文一致,返回二元评估和书面理由。
groundedness
所需的输入
不需要基本事实。
输入评估集必须具有下面的列:
request
此外,如果不使用 model
参数(在 mlflow.evaluate()
调用中),则还必须提供 trace
,或同时提供 response
和 retrieved_context[].content
。
groundedness
的输出
每个问题都会计算以下指标:
数据字段 | 类型 | 描述 |
---|---|---|
response/llm_judged/groundedness/rating |
string |
如果检索到的上下文支持所有或几乎所有生成的响应,则为 yes ,否则为 no 。 |
response/llm_judged/groundedness/rationale |
string |
yes 或 no 的 LLM 书面理由。 |
response/llm_judged/groundedness/error_message |
string |
如果计算此指标时出错,这里提供了错误的详细信息。 如果没有错误,则为 NULL。 |
针对整个评估集计算以下指标:
指标名称 | 类型 | 描述 |
---|---|---|
response/llm_judged/groundedness/rating/percentage |
float, [0, 1] |
在所有问题上,groundedness/rating 判定为 yes 的百分比是多少? |
代理回复中是否有有害内容?
safety
LLM 判定针对生成的响应是否包含有害或有毒的内容,返回二元评分和书面理由。
safety
所需的输入
不需要基本事实。
输入评估集必须具有下面的列:
request
此外,如果不使用 model
参数(在 mlflow.evaluate()
调用中),则还必须提供 response
或 trace
。
safety
的输出
每个问题都会计算以下指标:
数据字段 | 类型 | 描述 |
---|---|---|
response/llm_judged/safety/rating |
string |
如果回复没有有害或有毒的内容,则为 yes ;否则为 no 。 |
response/llm_judged/safety/rationale |
string |
yes 或 no 的 LLM 书面理由。 |
response/llm_judged/safety/error_message |
string |
如果计算此指标时出错,这里提供了错误的详细信息。 如果没有错误,则为 NULL。 |
针对整个评估集计算以下指标:
指标名称 | 类型 | 描述 |
---|---|---|
response/llm_judged/safety/rating/average |
float, [0, 1] |
所有问题中被判定为 yes 的百分比。 |
检索法官
检索质量指标评估检索器在查找与输入请求相关的文档时的性能。 这些指标评估因素,例如:检索器是否找到相关的区块? 它找到多少个已知相关文档? 它找到的文档是否足以生成预期的响应?
检索器是否找到相关的区块?
chunk-relevance-precision
LLM 判定确定检索器返回的区块是否与输入请求相关。 精度计算方式为返回的相关区块数除以返回的区块总数。 例如,如果检索器返回四个区块,并且 LLM 判定确定四个返回的文档中有三个与请求相关,则 llm_judged/chunk_relevance/precision
为 0.75。
llm_judged/chunk_relevance
所需的输入
不需要基本事实。
输入评估集必须具有下面的列:
request
此外,如果不使用 model
参数(在 mlflow.evaluate()
调用中),则还必须提供 retrieved_context[].content
或 trace
。
llm_judged/chunk_relevance
的输出
每个问题都会计算以下指标:
数据字段 | 类型 | 描述 |
---|---|---|
retrieval/llm_judged/chunk_relevance/ratings |
array[string] |
对于每个区块, yes 或 no ,指示检索的区块是否与输入请求相关。 |
retrieval/llm_judged/chunk_relevance/rationales |
array[string] |
对于每个区块,LLM 的相应评分理由。 |
retrieval/llm_judged/chunk_relevance/error_messages |
array[string] |
对于每个区块,如果计算评分时出错,这里将显示错误的详细信息,其他输出值将为 NULL。 如果没有错误,则为 NULL。 |
retrieval/llm_judged/chunk_relevance/precision |
float, [0, 1] |
计算检索到的所有区块中相关区块的百分比。 |
针对整个评估集报告以下指标:
指标名称 | 类型 | 描述 |
---|---|---|
retrieval/llm_judged/chunk_relevance/precision/average |
float, [0, 1] |
所有问题上 chunk_relevance/precision 的平均值。 |
检索器找到多少个已知相关文档?
document_recall
的计算方式为返回的相关文档数除以基于基本事实的相关文档总数。 例如,假设基于基本事实,两个文档相关。 如果检索器返回其中一个文档,则 document_recall
为 0.5。 此指标不受返回的文档总数影响。
此指标是确定性的,不使用 LLM 判定。
document_recall
所需的输入
需要基本事实。
输入评估集必须具有下面的列:
expected_retrieved_context[].doc_uri
此外,如果不使用 model
参数(在 mlflow.evaluate()
调用中),则还必须提供 retrieved_context[].doc_uri
或 trace
。
document_recall
的输出
每个问题都会计算以下指标:
数据字段 | 类型 | 描述 |
---|---|---|
retrieval/ground_truth/document_recall |
float, [0, 1] |
检索到的区块中基本事实 doc_uris 的百分比。 |
针对整个评估集计算以下指标:
指标名称 | 类型 | 描述 |
---|---|---|
retrieval/ground_truth/document_recall/average |
float, [0, 1] |
所有问题上 document_recall 的平均值。 |
检索器是否找到了足以生成预期响应的文档?
context_sufficiency
LLM 判定确定检索器是否检索到足以生成预期响应的文档。
context_sufficiency
所需的输入
需要基本事实 expected_response
。
输入评估集必须具有下面的列:
request
expected_response
此外,如果不使用 model
参数(在 mlflow.evaluate()
调用中),则还必须提供 retrieved_context[].content
或 trace
。
context_sufficiency
的输出
每个问题都会计算以下指标:
数据字段 | 类型 | 描述 |
---|---|---|
retrieval/llm_judged/context_sufficiency/rating |
string |
yes 或 no 。 yes 表示检索到的上下文足以生成预期的响应。 no 表示需要针对此问题优化检索,以便它返回缺失的信息。 输出理由应提及缺少哪些信息。 |
retrieval/llm_judged/context_sufficiency/rationale |
string |
yes 或 no 的 LLM 书面理由。 |
retrieval/llm_judged/context_sufficiency/error_message |
string |
如果计算此指标时出错,这里提供了错误的详细信息。 如果没有错误,则为 NULL。 |
针对整个评估集计算以下指标:
指标名称 | 类型 | 描述 |
---|---|---|
retrieval/llm_judged/context_sufficiency/rating/percentage |
float, [0, 1] |
上下文充足性判定为 yes 的百分比。 |
自定义判定指标
可创建自定义判定来执行特定于用例的评估。 有关详细信息,请参阅创建自定义 LLM 判定。
由自定义判定生成的输出取决于其 assessment_type
、ANSWER
或 RETRIEVAL
。
用于 ANSWER 评估的自定义 LLM 判定
用于 ANSWER 评估的自定义 LLM 判定会评估每个问题的答案。
为每个评估提供的输出:
数据字段 | 类型 | 描述 |
---|---|---|
response/llm_judged/{assessment_name}/rating |
string |
yes 或 no 。 |
response/llm_judged/{assessment_name}/rationale |
string |
yes 或 no 的 LLM 书面理由。 |
response/llm_judged/{assessment_name}/error_message |
string |
如果计算此指标时出错,这里提供了错误的详细信息。 如果没有错误,则为 NULL。 |
针对整个评估集计算以下指标:
指标名称 | 类型 | 描述 |
---|---|---|
response/llm_judged/{assessment_name}/rating/percentage |
float, [0, 1] |
在所有问题中,{assessment_name} 被判定为 yes 的百分比。 |
RETRIEVAL 评估的自定义 LLM 判定
RETRIEVE 评估的自定义 LLM 判定会评估所有问题中检索到的每个区块。
为每个评估提供的输出:
数据字段 | 类型 | 描述 |
---|---|---|
retrieval/llm_judged/{assessment_name}/ratings |
array[string] |
每个区块的自定义判定的评估,yes 或 no 。 |
retrieval/llm_judged/{assessment_name}/rationales |
array[string] |
对于每个区块,yes 或 no 的 LLM 书面理由。 |
retrieval/llm_judged/{assessment_name}/error_messages |
array[string] |
对于每个区块,如果计算此指标时出错,这里提供错误的详细信息,其他值为 NULL。 如果没有错误,则为 NULL。 |
retrieval/llm_judged/{assessment_name}/precision |
float, [0, 1] |
自定义判定计算为 yes 的所有检索到的区块的百分比。 |
针对整个评估集报告的指标:
指标名称 | 类型 | 描述 |
---|---|---|
retrieval/llm_judged/{assessment_name}/precision/average |
float, [0, 1] |
所有问题上 {assessment_name}_precision 的平均值。 |