內容相似度評分器
createContentSimilarityScorer() 函式會量度兩個字串之間的文本相似度,並提供表示兩者相符程度的分數。它支援設定大小寫敏感度及空白字元處理方式。
參數參數 的直接連結
createContentSimilarityScorer() 函式接受一個選項物件,當中包含以下屬性:
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 表示完全相似。
評分詳情評分詳情 的直接連結
評分器透過字元層級配對及可設定的文本標準化來評估文本相似度。
評分流程評分流程 的直接連結
- 標準化文本:
- 大小寫標準化(如 ignoreCase: true)
- 空白字元標準化(如 ignoreWhitespace: true)
- 使用字串相似度演算法比較已處理的字串:
- 分析字元序列
- 對齊詞語邊界
- 考慮相對位置
- 計入長度差異
最終分數:similarity_value * scale
範例範例 的直接連結
評估預期與實際 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 參考。
如要將此評分器加入 Agent,請參閱 評分器概覽指南。
分數解讀分數解讀 的直接連結
相似度分數介乎 0 至 1:
- 1.0:完全相符,內容幾乎完全相同。
- 0.7 至 0.9:相似度高,選詞或結構只有輕微差異。
- 0.4 至 0.6:相似度中等,整體有所重疊,但有明顯變化。
- 0.1 至 0.3:相似度低,只有少量共同元素或共通意思。
- 0.0:毫無相似之處,內容完全不同。