> Discover all available pages from the documentation index: https://mastra.zisheng.pro/zh-HK/llms.txt # 關鍵字涵蓋率評分器 `createKeywordCoverageScorer()` 函式會評估 LLM 輸出涵蓋輸入中重要關鍵字的程度。它會分析關鍵字是否出現及配對情況,同時忽略常用詞和停用詞。 ## 參數 `createKeywordCoverageScorer()` 函式不接受任何選項。 此函式會傳回 MastraScorer 類別的實例。有關 `.run()` 方法及其輸入/輸出的詳情,請參閱 [MastraScorer 參考](https://mastra.zisheng.pro/zh-HK/reference/evals/mastra-scorer)。 ## `.run()` 傳回值 **runId** (`string`): 執行的 ID(選填)。 **preprocessStepResult** (`object`): 包含已擷取關鍵字的物件:{ referenceKeywords: Set\, responseKeywords: Set\ } **analyzeStepResult** (`object`): 包含關鍵字涵蓋率的物件:{ totalKeywords: number, matchedKeywords: number } **score** (`number`): 涵蓋率分數(0 至 1),表示相符關鍵字的比例。 `.run()` 會傳回以下結構的結果: ```typescript { runId: string, extractStepResult: { referenceKeywords: Set, responseKeywords: Set }, 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 回應之間的關鍵字涵蓋率: ```typescript 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 參考](https://mastra.zisheng.pro/zh-HK/reference/evals/run-evals)。 如要將此評分器加入 Agent,請參閱 [評分器概覽](https://mastra.zisheng.pro/zh-HK/docs/evals/overview)指南。 ## 相關內容 - [完整度評分器](https://mastra.zisheng.pro/zh-HK/reference/evals/completeness) - [內容相似度評分器](https://mastra.zisheng.pro/zh-HK/reference/evals/content-similarity) - [答案相關度評分器](https://mastra.zisheng.pro/zh-HK/reference/evals/answer-relevancy) - [文本差異評分器](https://mastra.zisheng.pro/zh-HK/reference/evals/textual-difference)