メインコンテンツへ移動

完全性 Scorer

createCompletenessScorer() 関数は、LLM の出力が入力に含まれる重要な要素をどの程度網羅しているかを評価します。名詞、動詞、トピック、用語を分析して網羅率を求め、詳細な完全性スコアを提供します。

パラメーター
パラメーターへの直接リンク

createCompletenessScorer() 関数はオプションを受け取りません。

この関数は MastraScorer クラスのインスタンスを返します。.run() メソッドとその入出力の詳細は、MastraScorer リファレンスを参照してください。

.run() の戻り値
run-returnsへの直接リンク

runId:

string
Run の ID(任意)。

preprocessStepResult:

object
抽出した要素と網羅状況の詳細を含むオブジェクト:{ inputElements: string[], outputElements: string[], missingElements: string[], elementCounts: { input: number, output: number } }

score:

number
出力で網羅された入力要素の割合を表す完全性スコア(0~1)。

.run() メソッドは次の形式の結果を返します。

{
runId: string,
extractStepResult: {
inputElements: string[],
outputElements: string[],
missingElements: string[],
elementCounts: { input: number, output: number }
},
score: number
}

要素抽出の詳細
要素抽出の詳細への直接リンク

Scorer は、次の種類の要素を抽出して分析します。

  • 名詞:重要なオブジェクト、概念、Entity
  • 動詞:動作と状態(不定詞に変換)
  • トピック:主な題材とテーマ
  • 用語:個々の実質語

抽出処理には次のものが含まれます。

  • テキストの正規化(ダイアクリティカルマークの削除、小文字への変換)
  • camelCase の単語の分割
  • 単語境界の処理
  • 短い単語(3文字以下)の特別な処理
  • 要素の重複排除

extractStepResult
extractstepresultへの直接リンク

.run() メソッドから、次のプロパティを持つ extractStepResult オブジェクトを取得できます。

  • inputElements:入力で検出された重要な要素(名詞、動詞、トピック、用語など)。
  • outputElements:出力で検出された重要な要素。
  • missingElements:出力で検出されなかった入力要素。
  • elementCounts:入力と出力に含まれる要素の数。

スコアリングの詳細
スコアリングの詳細への直接リンク

Scorer は、言語要素の網羅率分析によって完全性を評価します。

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

  1. 重要な要素を抽出します。
    • 名詞と固有 Entity
    • 動作を表す動詞
    • トピック固有の用語
    • 正規化した語形
  2. 入力要素の網羅率を計算します。
    • 短い用語(3文字以下)は完全一致
    • 長い用語は十分な重複(60%超)

最終スコア:(covered_elements / total_input_elements) * scale

スコアの解釈
スコアの解釈への直接リンク

完全性スコアは 0~1 です。

  • 1.0:クエリのすべての側面を十分かつ詳細に扱っています。
  • 0.7~0.9:重要な側面の大半を詳しく扱っていますが、軽微な欠落があります。
  • 0.4~0.6:重要な点の一部を扱っていますが、重要な側面や詳細が不足しています。
  • 0.1~0.3:クエリの一部しか扱っておらず、大幅な欠落があります。
  • 0.0:クエリに対応していないか、無関係な情報を提供しています。

使用例
使用例への直接リンク

複雑さの異なるクエリに対する Agent の回答の完全性を評価します。

src/example-completeness.ts
import { runEvals } from '@mastra/core/evals'
import { createCompletenessScorer } from '@mastra/evals/scorers/prebuilt'
import { myAgent } from './agent'

const scorer = createCompletenessScorer()

const result = await runEvals({
data: [
{
input:
'Explain the process of photosynthesis, including the inputs, outputs, and stages involved.',
},
{
input: 'What are the benefits and drawbacks of remote work for both employees and employers?',
},
{
input:
'Compare renewable and non-renewable energy sources in terms of cost, environmental impact, and sustainability.',
},
],
scorers: [scorer],
target: myAgent,
onItemComplete: ({ scorerResults }) => {
console.log({
score: scorerResults[scorer.id].score,
})
},
})

console.log(result.scores)

runEvals の詳細は、runEvals リファレンスを参照してください。

この Scorer を Agent に追加する方法は、Scorer の概要ガイドを参照してください。