内容相似度 Scorer
createContentSimilarityScorer() 函数衡量两个字符串之间的文本相似度,并通过分数表示二者的匹配程度。它支持配置是否区分大小写以及如何处理空白字符。
参数参数的直接链接
createContentSimilarityScorer() 函数接受一个 options 对象,其中包含以下属性:
ignoreCase:
boolean
= true
比较字符串时是否忽略大小写差异。
ignoreWhitespace:
boolean
= true
比较字符串时是否规范化空白字符。
此函数返回 MastraScorer 类的实例。有关 .run() 方法及其输入/输出的详情,请参阅 MastraScorer 参考。
.run() 返回值run-returns的直接链接
runId:
string
本次运行的 id(可选)。
preprocessStepResult:
object
包含处理后输入和输出的对象:{ processedInput: string, processedOutput: string }
analyzeStepResult:
object
包含相似度的对象:{ similarity: number }
score:
number
相似度分数(0-1),其中 1 表示完全相似。
评分详情评分详情的直接链接
该 Scorer 通过字符级匹配和可配置的文本规范化来评估文本相似度。
评分流程评分流程的直接链接
- 规范化文本:
- 规范化大小写(如果 ignoreCase: true)
- 规范化空白字符(如果 ignoreWhitespace: true)
- 使用 string-similarity 算法比较处理后的字符串:
- 分析字符序列
- 对齐单词边界
- 考虑相对位置
- 将长度差异纳入考量
最终分数:similarity_value * scale
示例示例的直接链接
评估预期 Agent 输出和实际 Agent 输出之间的文本相似度:
src/example-content-similarity.ts
import { runEvals } from '@mastra/core/evals'
import { createContentSimilarityScorer } from '@mastra/evals/scorers/prebuilt'
import { myAgent } from './agent'
const scorer = createContentSimilarityScorer()
const result = await runEvals({
data: [
{
input: 'Summarize the benefits of TypeScript',
groundTruth:
'TypeScript provides static typing, better tooling support, and improved code maintainability.',
},
{
input: 'What is machine learning?',
groundTruth:
'Machine learning is a subset of AI that enables systems to learn from data without explicit programming.',
},
],
scorers: [scorer],
target: myAgent,
onItemComplete: ({ scorerResults }) => {
console.log({
score: scorerResults[scorer.id].score,
groundTruth: scorerResults[scorer.id].groundTruth,
})
},
})
console.log(result.scores)
有关 runEvals 的更多详情,请参阅 runEvals 参考。
要将此 Scorer 添加到 Agent,请参阅 Scorer 概览指南。
分数解读分数解读的直接链接
相似度分数介于 0 和 1 之间:
- 1.0:完全匹配,内容几乎相同。
- 0.7 到 0.9:相似度高,仅在用词或结构上有细微差异。
- 0.4 到 0.6:相似度中等,整体有所重叠,但存在明显差异。
- 0.1 到 0.3:相似度低,只有少量共同要素或共同含义。
- 0.0:毫无相似之处,内容完全不同。