メインコンテンツへ移動

キーワード網羅率 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")
  • 大文字と小文字を区別しない照合
  • 語形の変化への対応
  • 技術用語と複合語の特別な処理

スコアリング処理
スコアリング処理への直接リンク

  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:回答にキーワードがまったく含まれていません。

特殊なケース
特殊なケースへの直接リンク

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 の概要ガイドを参照してください。