Answer Relevancy Scorer
createAnswerRelevancyScorer()
関数は、以下のプロパティを持つ単一のオプションオブジェクトを受け取ります:
使用例については、Answer Relevancy Examplesを参照してください。
パラメータ
model:
LanguageModel
関連性を評価するために使用されるモデルの設定。
uncertaintyWeight:
number
= 0.3
スコアリングにおける「不確実」な判定に与えられる重み(0-1)。
scale:
number
= 1
最大スコア値。
この関数はMastraScorerクラスのインスタンスを返します。.run()
メソッドは他のスコアラーと同じ入力を受け取りますが(MastraScorerリファレンスを参照)、戻り値には以下に記載されているLLM固有のフィールドが含まれます。
.run() の戻り値
runId:
string
実行のID(任意)。
score:
number
関連性スコア(0からスケール、デフォルト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
スコアの説明。
スコアリング詳細
スコアラーは、完全性と詳細レベルを考慮してクエリと回答の整合性を通じて関連性を評価しますが、事実の正確性は評価しません。
スコアリングプロセス
- ステートメント前処理:
- コンテキストを保持しながら出力を意味のあるステートメントに分割します。
- 関連性分析:
- 各ステートメントは以下のように評価されます:
- “yes”:直接一致に対する完全な重み
- “unsure”:近似一致に対する部分的重み(デフォルト:0.3)
- “no”:無関係なコンテンツに対するゼロ重み
- 各ステートメントは以下のように評価されます:
- スコア計算:
((direct + uncertainty * partial) / total_statements) * scale
スコア解釈
- 1.0:完璧な関連性 - 完全かつ正確
- 0.7-0.9:高い関連性 - 軽微なギャップや不正確さ
- 0.4-0.6:中程度の関連性 - 重要なギャップ
- 0.1-0.3:低い関連性 - 重大な問題
- 0.0:関連性なし - 不正確またはトピック外