答案相关性 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 通过查询与答案的匹配程度评估相关性,会考虑完整性和详细程度,但不考虑事实准确性。
评分流程评分流程的直接链接
- 语句预处理:
- 在保留上下文的同时,将输出拆分为有意义的语句。
- 相关性分析:
- 对每条语句进行如下评估:
- "yes":直接匹配,获得完整权重
- "unsure":近似匹配,获得部分权重(默认:0.3)
- "no":内容不相关,权重为零
- 对每条语句进行如下评估:
- 分数计算:
((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 概览指南。