關鍵字涵蓋率評分器
createKeywordCoverageScorer() 函式會評估 LLM 輸出涵蓋輸入中重要關鍵字的程度。它會分析關鍵字是否出現及配對情況,同時忽略常用詞和停用詞。
參數參數 的直接連結
createKeywordCoverageScorer() 函式不接受任何選項。
此函式會傳回 MastraScorer 類別的實例。有關 .run() 方法及其輸入/輸出的詳情,請參閱 MastraScorer 參考。
.run() 傳回值run-returns 的直接連結
runId:
string
執行的 ID(選填)。
preprocessStepResult:
object
包含已擷取關鍵字的物件:{ referenceKeywords: Set<string>, responseKeywords: Set<string> }
analyzeStepResult:
object
包含關鍵字涵蓋率的物件:{ totalKeywords: number, matchedKeywords: number }
score:
number
涵蓋率分數(0 至 1),表示相符關鍵字的比例。
.run() 會傳回以下結構的結果:
{
runId: string,
extractStepResult: {
referenceKeywords: Set<string>,
responseKeywords: Set<string>
},
analyzeStepResult: {
totalKeywords: number,
matchedKeywords: number
},
score: number
}
評分詳情評分詳情 的直接連結
評分器會配對關鍵字,並以以下功能評估關鍵字涵蓋率:
- 過濾常用詞和停用詞(例如「the」、「a」、「and」)
- 不區分大小寫配對
- 處理詞形變化
- 特別處理技術術語和複合詞
評分流程評分流程 的直接連結
- 處理輸入和輸出的關鍵字:
- 過濾常用詞和停用詞
- 標準化大小寫和詞形
- 處理特殊術語和複合詞
- 計算關鍵字涵蓋率:
- 配對文本之間的關鍵字
- 計算成功配對的數目
- 計算涵蓋率
最終分數:(matched_keywords / total_keywords) * scale
分數解讀分數解讀 的直接連結
涵蓋率分數介乎 0 至 1:
- 1.0:完全涵蓋,所有關鍵字均有出現。
- 0.7 至 0.9:涵蓋率高,包含大部分關鍵字。
- 0.4 至 0.6:部分涵蓋,部分關鍵字有出現。
- 0.1 至 0.3:涵蓋率低,只有少量關鍵字相符。
- 0.0:回應不包含任何關鍵字。
特殊情況特殊情況 的直接連結
評分器會處理多種特殊情況:
- 空白輸入/輸出:如兩者皆為空白,傳回 1.0 分;如只有一方為空白,則傳回 0.0 分
- 單一詞語:視為單一關鍵字
- 技術術語:保留複合技術術語(例如「React.js」、「machine learning」)
- 大小寫差異:「JavaScript」與「javascript」相符
- 常用詞:評分時忽略,以聚焦於有用的關鍵字
範例範例 的直接連結
評估輸入查詢與 Agent 回應之間的關鍵字涵蓋率:
src/example-keyword-coverage.ts
import { runEvals } from '@mastra/core/evals'
import { createKeywordCoverageScorer } from '@mastra/evals/scorers/prebuilt'
import { myAgent } from './agent'
const scorer = createKeywordCoverageScorer()
const result = await runEvals({
data: [
{
input: 'JavaScript frameworks like React and Vue',
},
{
input: 'TypeScript offers interfaces, generics, and type inference',
},
{
input:
'Machine learning models require data preprocessing, feature engineering, and hyperparameter tuning',
},
],
scorers: [scorer],
target: myAgent,
onItemComplete: ({ scorerResults }) => {
console.log({
score: scorerResults[scorer.id].score,
})
},
})
console.log(result.scores)
有關 runEvals 的詳情,請參閱 runEvals 參考。
如要將此評分器加入 Agent,請參閱 評分器概覽指南。