Summarization スコアラー
createSummarizationScorer() 関数は、要約を 2 つの軸で評価するスコアラーを作成します。1 つ目は要約内のすべての主張が元のテキストによって裏付けられているか、2 つ目は元のテキストに記載された情報を維持しているかです。最終スコアには 2 つのうち低い方が採用されるため、忠実でも内容が空の要約や、網羅的でも誤った要約は合格できません。
要約にはテキストを含む Agent の最後のメッセージが使用され、元のテキストにはデフォルトで実行入力の最初のユーザーメッセージが使用されます。要約対象のテキストが Tool の結果など別の場所にある場合は、source または sourceExtractor を渡します。
使用例使用例への直接リンク
文書を要約した内容を、その文書と照らして採点します。
import { createSummarizationScorer } from '@mastra/evals/scorers/prebuilt'
const scorer = createSummarizationScorer({
model: 'openai/gpt-5.6-sol',
})
const result = await scorer.run({
input: {
inputMessages: [{ id: '1', role: 'user', content: sourceDocument }],
},
output: [{ id: '2', role: 'assistant', content: summary }],
})
console.log(result.score)
console.log(result.reason)
要約の評価要約の評価への直接リンク
Agent がテキストを要約する場合に、このスコアラーを使用します。
- 文書や文字起こしの要約
- サポートスレッドやメールのダイジェスト
- 長い入力を短い出力に圧縮するあらゆるステップ
パラメーターパラメーターへの直接リンク
model:
options?:
source?:
sourceExtractor?:
maxQuestions?:
scale?:
.run() の戻り値run-returnsへの直接リンク
score:
reason:
preprocessStepResult:
alignment:
questions:
analyzeStepResult:
coverage:
各軸のスコアは保存されるのではなく、これらの判定結果から算出されます。整合性は supported: true である alignment エントリの割合、カバレッジは対応する coverage エントリが answered: true である questions の割合です。
採点の詳細採点の詳細への直接リンク
2 軸による評価2 軸による評価への直接リンク
スコアラーは、次の 3 ステップのパイプラインを実行します。
- 元のテキストに基づく判定: 要約内の主張を抽出して元のテキストと照合し、元のテキストからクローズドクエスチョンを作成します。すべての質問は、元のテキストに基づく答えが「はい」になるように記述されます。
- カバレッジ: 要約だけを使用して各質問に回答します。
- 採点: 2 つの割合を計算し、低い方をスコアとします。
カバレッジのステップは、元のテキストを一切受け取らない独立したモデル呼び出しとして実行されます。判定モデルが元のテキストを参照できると、要約ではなく元のテキストから質問に回答してしまい、この軸が測定するために存在する情報の欠落が隠れてしまいます。
採点式採点式への直接リンク
Alignment = supported_claims / total_claims
Coverage = answered_questions / total_questions
Summarization = min(Alignment, Coverage) × scale
要約から主張が得られない場合、または元のテキストから質問が得られない場合、スコアは 0 です。
スコアの解釈スコアの解釈への直接リンク
次の範囲は、デフォルトの scale である 1 を前提としています。カスタムスケールを使用する場合は、それに応じて乗算してください。
- 0.9-1.0: 元のテキストに忠実で、主要なポイントを網羅した優れた要約
- 0.7-0.8: 小さな情報の欠落、または裏付けのない詳細がある良い要約
- 0.4-0.6: 重要な情報が欠けている、または元のテキストから逸脱している中程度の要約
- 0.1-0.3: 元のテキストの大部分が失われている、または矛盾している不十分な要約
- 0.0: 要約に判定対象がないか、どの主張も裏付けられていません。どの質問にも答えていない要約もこのスコアになります
2 つの軸の読み方2 つの軸の読み方への直接リンク
両方の軸の判定結果は実行結果に残ります。整合性の判定結果は前処理ステップ、カバレッジの判定結果は分析ステップにあります。各判定結果には、対応する主張または質問と、その判定理由が含まれます。整合性スコアが低い場合とカバレッジスコアが低い場合では、意味が異なります。
- カバレッジが高く整合性スコアが低い場合、要約が詳細を捏造または歪曲しています
- 整合性が高くカバレッジスコアが低い場合、要約は正確ですが、多くの情報が欠けています
reason フィールドには、スコアの決定要因となった軸の名前が示されます。
スコアに含まれない要素スコアに含まれない要素への直接リンク
長さはスコアに一切影響しません。元のテキストを一語一句繰り返す要約は、すべての主張が裏付けられ、すべての質問に答えるため、スコアは 1 になります。圧縮の度合いもテスト対象に含める場合は、独自の長さチェックを追加してください。
コストコストへの直接リンク
各評価では、モデルが 3 回呼び出されます。maxQuestions はカバレッジに関する処理量の上限を設定します。この処理量は、上限がなければ元のテキストの長さに応じて増加します。10 個の質問では内容を表現できない長い文書の場合は、値を増やしてください。
スコアラーの設定スコアラーの設定への直接リンク
実行入力を要約する実行入力を要約するへの直接リンク
const scorer = createSummarizationScorer({
model: 'openai/gpt-5.6-sol',
})
別の場所にある文書を要約する別の場所にある文書を要約するへの直接リンク
import { extractToolResults } from '@mastra/evals/scorers/utils'
const scorer = createSummarizationScorer({
model: 'openai/gpt-5.6-sol',
options: {
sourceExtractor: (input, output) => {
return extractToolResults(output)
.filter(({ toolName }) => toolName === 'fetchDocument')
.map(({ result }) => String(result))
.join('\n\n')
},
maxQuestions: 20,
},
})
例例への直接リンク
一連の文書を使用して、要約 Agent を評価します。
import { runEvals } from '@mastra/core/evals'
import { createSummarizationScorer } from '@mastra/evals/scorers/prebuilt'
import { summarizerAgent } from './agent'
const scorer = createSummarizationScorer({
model: 'openai/gpt-5.6-sol',
options: { maxQuestions: 10 },
})
const result = await runEvals({
target: summarizerAgent,
scorers: [scorer],
data: [
{
input:
'The company was founded in 1995 by John Smith. It started with 10 employees and grew to 500 by 2020. The company is based in Seattle.',
},
],
onItemComplete: ({ scorerResults }) => {
console.log({
score: scorerResults[scorer.id].score,
reason: scorerResults[scorer.id].reason,
})
},
})
console.log(result.scores)
runEvals の詳細については、runEvals リファレンスを参照してください。
このスコアラーを Agent に追加する方法については、Scorers の概要ガイドを参照してください。
Faithfulness との比較Faithfulness との比較への直接リンク
| ユースケース | Summarization | Faithfulness |
|---|---|---|
| 測定対象 | 裏付けとカバレッジの両方 | 裏付けのみ |
| 評価基準 | 要約対象となる元のテキスト | 取得したコンテキストまたは Tool の結果 |
| 情報の欠落を検出 | はい | いいえ |
| 元のテキスト全体が必要 | はい | いいえ。コンテキストだけで十分です |
取得したコンテキストに回答が根拠付けられているかを確認する場合は、faithfulness を使用します。出力が長いテキストの代わりとなることを意図している場合は、summarization を使用します。
関連項目関連項目への直接リンク
- Faithfulness Scorer: 回答がコンテキストに根拠付けられているかを測定します
- Completeness Scorer: モデルを使用せずに要素のカバレッジを比較します
- Content Similarity Scorer: モデルを使用せずにテキストの類似性を比較します
- Custom Scorers: 独自の評価指標を作成します