> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ja/llms.txt # 回答類似度 Scorer `createAnswerSimilarityScorer()` 関数は、Agent の出力が正解とどの程度類似しているかを評価する Scorer を作成します。この Scorer は、期待する回答があり、長期的な一貫性を確保したい CI/CD テストシナリオ向けに設計されています。 ## パラメーター **model** (`LanguageModel`): 出力と正解の意味的類似性を評価するために使用する言語モデル。 **options** (`AnswerSimilarityOptions`): Scorer の設定オプション。 **options.requireGroundTruth** (`boolean`): 評価に正解を必須とするかどうか。false の場合、正解がなければスコア 0 を返します。 **options.semanticThreshold** (`number`): 完全一致に対する意味的一致の重み(0~1)。 **options.exactMatchBonus** (`number`): 完全一致に対する追加スコアボーナス(0~1)。 **options.missingPenalty** (`number`): 正解に含まれる重要な概念が欠けるごとに適用するペナルティ。 **options.contradictionPenalty** (`number`): 矛盾する情報に対するペナルティ。値を大きくすると、誤った回答のスコアが 0 に近づきます。 **options.extraInfoPenalty** (`number`): 正解にない追加情報に対する軽微なペナルティ(上限 0.2)。 **options.scale** (`number`): スコアのスケーリング係数。 この関数は MastraScorer クラスのインスタンスを返します。`.run()` メソッドは他の Scorer と同じ入力を受け取ります([MastraScorer リファレンス](https://mastra.zisheng.pro/ja/reference/evals/mastra-scorer)を参照)が、Run オブジェクトに**正解を指定する必要があります**。 ## `.run()` の戻り値 **runId** (`string`): Run の ID(任意)。 **score** (`number`): 0~1 の類似度スコア(カスタムスケールを使用する場合は 0~scale)。スコアが高いほど正解との類似度が高いことを示します。 **reason** (`string`): 実行可能な Feedback を含む、人が読めるスコアの説明。 **preprocessStepResult** (`object`): 出力と正解から抽出した意味単位。 **analyzeStepResult** (`object`): 一致、矛盾、追加情報の詳細な分析。 **preprocessPrompt** (`string`): 意味単位の抽出に使用した Prompt。 **analyzePrompt** (`string`): 類似性の分析に使用した Prompt。 **generateReasonPrompt** (`string`): 説明の生成に使用した Prompt。 ## スコアリングの詳細 Scorer は複数の Step で処理します。 1. **抽出**:出力と正解を意味単位に分解します 2. **分析**:意味単位を比較し、一致、矛盾、欠落を特定します 3. **スコア**:矛盾に対するペナルティを適用して、重み付き類似度を計算します 4. **理由**:人が読める説明を生成します スコアの計算:`max(0, base_score - contradiction_penalty - missing_penalty - extra_info_penalty) × scale` ## 使用例 さまざまなシナリオで、Agent の回答と正解の類似度を評価します。 ```typescript import { runEvals } from '@mastra/core/evals' import { createAnswerSimilarityScorer } from '@mastra/evals/scorers/prebuilt' import { myAgent } from './agent' const scorer = createAnswerSimilarityScorer({ model: 'openai/gpt-5.6-sol' }) const result = await runEvals({ data: [ { input: 'What is 2+2?', groundTruth: '4', }, { input: 'What is the capital of France?', groundTruth: 'The capital of France is Paris', }, { input: 'What are the primary colors?', groundTruth: 'The primary colors are red, blue, and yellow', }, ], scorers: [scorer], target: myAgent, onItemComplete: ({ scorerResults }) => { console.log({ score: scorerResults[scorer.id].score, reason: scorerResults[scorer.id].reason, }) }, }) console.log(result.scores) ``` `runEvals` の詳細は、[runEvals リファレンス](https://mastra.zisheng.pro/ja/reference/evals/run-evals)を参照してください。 この Scorer を Agent に追加する方法は、[Scorer の概要](https://mastra.zisheng.pro/ja/docs/evals/overview)ガイドを参照してください。