メインコンテンツへ移動

忠実性スコアラー

createFaithfulnessScorer() 関数は、提供されたコンテキストと比較して LLM の出力が事実としてどの程度正確かを評価します。出力から主張を抽出してコンテキストと照合するため、RAG パイプラインの応答の信頼性を測定するうえで不可欠です。

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

createFaithfulnessScorer() 関数は、次のプロパティを持つ単一の options オブジェクトを受け取ります。

model:

LanguageModel
忠実性の評価に使用するモデルの設定。

context:

string[]
出力内の主張を検証する対象となるコンテキストチャンクの配列。

scale:

number
= 1
スコアの最大値。最終スコアはこのスケールに正規化されます。

この関数は MastraScorer クラスのインスタンスを返します。.run() メソッドは他のスコアラーと同じ入力を受け取ります(MastraScorer リファレンスを参照)。ただし、戻り値には以下に示す LLM 固有のフィールドが含まれます。

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

runId:

string
実行 ID(任意)。

preprocessStepResult:

string[]
出力から抽出された主張の配列。

preprocessPrompt:

string
preprocess ステップで LLM に送信されたプロンプト(任意)。

analyzeStepResult:

object
判定を持つオブジェクト:{ verdicts: Array<{ verdict: 'yes' | 'no' | 'unsure', reason: string }> }

analyzePrompt:

string
analyze ステップで LLM に送信されたプロンプト(任意)。

score:

number
0 から設定済みの scale までのスコア。コンテキストによって裏付けられた主張の割合を表します。

reason:

string
裏付けられた主張、矛盾した主張、または不明とされた主張を含む、スコアの詳細な説明。

generateReasonPrompt:

string
generateReason ステップで LLM に送信されたプロンプト(任意)。

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

スコアラーは、提供されたコンテキストと主張を照合して忠実性を評価します。

スコアリング手順
スコアリング手順への直接リンク

  1. 主張とコンテキストを分析します。
    • すべての主張(事実に関するものと推測的なもの)を抽出する
    • 各主張をコンテキストと照合する
    • 次の3つの判定のいずれかを割り当てる
      • "yes" - 主張がコンテキストによって裏付けられている
      • "no" - 主張がコンテキストと矛盾している
      • "unsure" - 主張を検証できない
  2. 忠実性スコアを計算します。
    • 裏付けられた主張を数える
    • 主張の総数で割る
    • 設定した範囲にスケーリングする

最終スコア:(supported_claims / total_claims) * scale

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

0〜1 の忠実性スコアは次のように解釈します。

  • 1.0:すべての主張が正確で、コンテキストによって直接裏付けられている。
  • 0.7〜0.9:ほとんどの主張は正しいが、軽微な追加や省略がある。
  • 0.4〜0.6:一部の主張は裏付けられているが、検証できないものもある。
  • 0.1〜0.3:内容の大半が不正確、または裏付けられていない。
  • 0.0:すべての主張が誤り、またはコンテキストと矛盾している。

例への直接リンク

提供されたコンテキストに対する Agent の応答の忠実性を評価します。

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

// Context is typically populated from agent tool calls or RAG retrieval
const scorer = createFaithfulnessScorer({
model: 'openai/gpt-5.6-sol',
})

const result = await runEvals({
data: [
{
input: 'Tell me about the Tesla Model 3.',
},
{
input: 'What are the key features of this electric vehicle?',
},
],
scorers: [scorer],
target: myAgent,
onItemComplete: ({ scorerResults }) => {
console.log({
score: scorerResults[scorer.id].score,
reason: scorerResults[scorer.id].reason,
})
},
})

console.log(result.scores)

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

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