马赛克 AI 代理评估 LLM 评委参考

重要

此功能目前以公共预览版提供。

本文介绍马赛克 AI 代理评估中内置的每个 LLM 法官的详细信息,包括所需的输入和输出指标。 它还涵盖自定义法官生成的输出。

有关 LLM 评委的简介,请参阅 代理评估如何评估质量、成本和延迟。

响应法官

回复质量指标评估应用程序对用户请求的回复程度。 这些指标评估了与地面事实相比响应的准确性、根据检索到的上下文(还是 LLM 正在幻觉)以及响应是否安全且没有有毒语言等因素。

总体来说,LLM 是否给出了准确的答案?

correctness LLM 判定针对代理生成的响应是否事实上准确并且在语义上是否与所提供的基本事实响应相似,提供二元评估和书面理由。

correctness 所需的输入

需要基本事实 expected_response

输入评估集必须具有下面的列:

  • request
  • expected_response

此外,如果不使用 model 参数(在 mlflow.evaluate() 调用中),则还必须提供 responsetrace

重要

基本事实 expected_response包含正确响应所需的最小事实集。 如果从另一个源复制响应,请编辑响应以删除任何不需要将答案视为正确的文本。

仅包含所需的信息,而忽略答案中不严格要求的信息,使得代理评估能够提供更可靠的输出质量信号。

correctness 的输出

每个问题都会计算以下指标:

数据字段 类型 描述
response/llm_judged/correctness/rating string yesnoyes 指示生成的响应高度准确且语义上类似于基本事实。 捕捉到基本事实的意图但存在细微遗漏或不准确是可接受的。 no 指示响应不符合条件。
response/llm_judged/correctness/rationale string yesno 的 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() 调用中),则还必须提供 responsetrace

relevance_to_query 的输出

每个问题都会计算以下指标:

数据字段 类型 描述
response/llm_judged/relevance_to_query/rating string 如果判定回复与请求相关,则为 yes;否则为 no
response/llm_judged/relevance_to_query/rationale string yesno 的 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,或同时提供 responseretrieved_context[].content

groundedness 的输出

每个问题都会计算以下指标:

数据字段 类型 描述
response/llm_judged/groundedness/rating string 如果检索到的上下文支持所有或几乎所有生成的响应,则为 yes,否则为 no
response/llm_judged/groundedness/rationale string yesno 的 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() 调用中),则还必须提供 responsetrace

safety 的输出

每个问题都会计算以下指标:

数据字段 类型 描述
response/llm_judged/safety/rating string 如果回复没有有害或有毒的内容,则为 yes;否则为 no
response/llm_judged/safety/rationale string yesno 的 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[].contenttrace

llm_judged/chunk_relevance 的输出

每个问题都会计算以下指标:

数据字段 类型 描述
retrieval/llm_judged/chunk_relevance/ratings array[string] 对于每个区块, yesno,指示检索的区块是否与输入请求相关。
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_uritrace

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[].contenttrace

context_sufficiency 的输出

每个问题都会计算以下指标:

数据字段 类型 描述
retrieval/llm_judged/context_sufficiency/rating string yesnoyes 表示检索到的上下文足以生成预期的响应。 no 表示需要针对此问题优化检索,以便它返回缺失的信息。 输出理由应提及缺少哪些信息。
retrieval/llm_judged/context_sufficiency/rationale string yesno 的 LLM 书面理由。
retrieval/llm_judged/context_sufficiency/error_message string 如果计算此指标时出错,这里提供了错误的详细信息。 如果没有错误,则为 NULL。

针对整个评估集计算以下指标:

指标名称 类型 描述
retrieval/llm_judged/context_sufficiency/rating/percentage float, [0, 1] 上下文充足性判定为 yes 的百分比。

自定义判定指标

可创建自定义判定来执行特定于用例的评估。 有关详细信息,请参阅创建自定义 LLM 判定

由自定义判定生成的输出取决于其 assessment_typeANSWERRETRIEVAL

用于 ANSWER 评估的自定义 LLM 判定

用于 ANSWER 评估的自定义 LLM 判定会评估每个问题的答案。

为每个评估提供的输出:

数据字段 类型 描述
response/llm_judged/{assessment_name}/rating string yesno
response/llm_judged/{assessment_name}/rationale string yesno 的 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] 每个区块的自定义判定的评估,yesno
retrieval/llm_judged/{assessment_name}/rationales array[string] 对于每个区块,yesno 的 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 的平均值。