跳到主要内容

答案相关性 Scorer

createAnswerRelevancyScorer() 函数接受一个 options 对象,其中包含以下属性:

参数
参数的直接链接

model:

LanguageModel
用于评估相关性的模型配置。

uncertaintyWeight:

number
= 0.3
评分时赋予 'unsure' 判定的权重(0-1)。

scale:

number
= 1
最高分值。

此函数返回 MastraScorer 类的实例。.run() 方法接受与其他 Scorer 相同的输入(参见 MastraScorer 参考),但返回值包含下文所述的 LLM 特有字段。

.run() 返回值
run-returns的直接链接

runId:

string
本次运行的 id(可选)。

score:

number
相关性分数(0 到 scale,默认为 0-1)

preprocessPrompt:

string
预处理步骤发送给 LLM 的 prompt(可选)。

preprocessStepResult:

object
包含提取语句的对象:{ statements: string[] }

analyzePrompt:

string
分析步骤发送给 LLM 的 prompt(可选)。

analyzeStepResult:

object
包含结果的对象:{ results: Array<{ result: 'yes' | 'unsure' | 'no', reason: string }> }

generateReasonPrompt:

string
生成原因步骤发送给 LLM 的 prompt(可选)。

reason:

string
对分数的说明。

评分详情
评分详情的直接链接

该 Scorer 通过查询与答案的匹配程度评估相关性,会考虑完整性和详细程度,但不考虑事实准确性。

评分流程
评分流程的直接链接

  1. 语句预处理:
    • 在保留上下文的同时,将输出拆分为有意义的语句。
  2. 相关性分析:
    • 对每条语句进行如下评估:
      • "yes":直接匹配,获得完整权重
      • "unsure":近似匹配,获得部分权重(默认:0.3)
      • "no":内容不相关,权重为零
  3. 分数计算:
    • ((direct + uncertainty * partial) / total_statements) * scale

分数解读
分数解读的直接链接

相关性分数介于 0 和 1 之间:

  • 1.0:响应通过相关且聚焦的信息完整回答了查询。
  • 0.7 到 0.9:响应基本回答了查询,但可能包含少量无关内容。
  • 0.4 到 0.6:响应部分回答了查询,相关信息与无关信息混杂。
  • 0.1 到 0.3:响应仅包含极少的相关内容,且在很大程度上偏离了查询意图。
  • 0.0:响应完全无关,未回答查询。

示例
示例的直接链接

评估不同场景下 Agent 响应的相关性:

src/example-answer-relevancy.ts
import { runEvals } from '@mastra/core/evals'
import { createAnswerRelevancyScorer } from '@mastra/evals/scorers/prebuilt'
import { myAgent } from './agent'

const scorer = createAnswerRelevancyScorer({ model: 'openai/gpt-5.6-sol' })

const result = await runEvals({
data: [
{
input: 'What are the health benefits of regular exercise?',
},
{
input: 'What should a healthy breakfast include?',
},
{
input: 'What are the benefits of meditation?',
},
],
scorers: [scorer],
target: myAgent,
onItemComplete: ({ scorerResults }) => {
console.log({
score: scorerResults[scorer.id].score,
reason: scorerResults[scorer.id].reason,
})
},
})

console.log(result.scores)

有关 runEvals 的更多详情,请参阅 runEvals 参考

要将此 Scorer 添加到 Agent,请参阅 Scorer 概览指南。