跳至主要內容

關鍵字涵蓋率評分器

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」)
  • 不區分大小寫配對
  • 處理詞形變化
  • 特別處理技術術語和複合詞

評分流程
評分流程 的直接連結

  1. 處理輸入和輸出的關鍵字:
    • 過濾常用詞和停用詞
    • 標準化大小寫和詞形
    • 處理特殊術語和複合詞
  2. 計算關鍵字涵蓋率:
    • 配對文本之間的關鍵字
    • 計算成功配對的數目
    • 計算涵蓋率

最終分數:(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,請參閱 評分器概覽指南。