メインコンテンツへ移動

回答関連性スコアラー

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

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

model:

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

uncertaintyWeight:

number
= 0.3
スコアリングで 'unsure' の判定に与える重み(0〜1)。

scale:

number
= 1
スコアの最大値。

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

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

runId:

string
実行 ID(任意)。

score:

number
関連性スコア(0〜scale、デフォルトは 0〜1)。

preprocessPrompt:

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

preprocessStepResult:

object
抽出された文を持つオブジェクト: { statements: string[] }

analyzePrompt:

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

analyzeStepResult:

object
結果を持つオブジェクト: { results: Array<{ result: 'yes' | 'unsure' | 'no', reason: string }> }

generateReasonPrompt:

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

reason:

string
スコアの説明。

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

スコアラーは、完全性と詳細度を考慮しながらクエリと回答の整合性を通じて関連性を評価しますが、事実の正確性は評価しません。

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

  1. 文の前処理:
    • コンテキストを維持しながら、出力を有用な文に分割します。
  2. 関連性の分析:
    • 各文を次のように評価します。
      • "yes": 直接一致する場合は最大の重み
      • "unsure": おおよそ一致する場合は部分的な重み(デフォルト: 0.3)
      • "no": 関連のない内容には重み 0
  3. スコアの計算:
    • ((direct + uncertainty * partial) / total_statements) * scale

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

関連性スコアは 0〜1 です。

  • 1.0: 回答は関連性の高い的確な情報でクエリに完全に答えています。
  • 0.7〜0.9: 回答はクエリにほぼ答えていますが、関連の薄い内容が少し含まれる場合があります。
  • 0.4〜0.6: 回答はクエリに部分的に答えており、関連する情報と関連しない情報が混在しています。
  • 0.1〜0.3: 回答に関連する内容はわずかしかなく、クエリの意図をほとんど満たしていません。
  • 0.0: 回答はまったく関連がなく、クエリに答えていません。

例への直接リンク

さまざまなシナリオで Agent の回答の関連性を評価します。

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

const scorer = createAnswerRelevancyScorer({ model: 'openai/gpt-5.6-sol' })

const result = await runEvals({
data: [
{
input: 'What are the health benefits of regular exercise?',
},
{
input: 'What should a healthy breakfast include?',
},
{
input: 'What are the benefits of meditation?',
},
],
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 に追加する方法については、スコアラーの概要ガイドを参照してください。