キーワード網羅率 Scorer
createKeywordCoverageScorer() 関数は、LLM の出力が入力の重要なキーワードをどの程度網羅しているかを評価します。一般的な単語やストップワードを無視しながら、キーワードの有無と一致を分析します。
パラメーターパラメーターへの直接リンク
createKeywordCoverageScorer() 関数はオプションを受け取りません。
この関数は MastraScorer クラスのインスタンスを返します。.run() メソッドとその入出力の詳細は、MastraScorer リファレンスを参照してください。
.run() の戻り値run-returnsへの直接リンク
runId:
string
Run の 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
}
スコアリングの詳細スコアリングの詳細への直接リンク
Scorer は、次の機能でキーワードを照合して網羅率を評価します。
- 一般的な単語とストップワードの除外(例:"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:回答にキーワードがまったく含まれていません。
特殊なケース特殊なケースへの直接リンク
Scorer は、いくつかの特殊なケースを処理します。
- 空の入力/出力:両方が空ならスコア 1.0、片方だけが空なら 0.0 を返します
- 単一の単語:1つのキーワードとして扱います
- 技術用語:複合技術用語を維持します(例:"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 リファレンスを参照してください。
この Scorer を Agent に追加する方法は、Scorer の概要ガイドを参照してください。