關鍵字覆蓋率評分器
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,請參閱評分器概觀指南。