メインコンテンツへ移動

コンテンツ類似度スコアラー

createContentSimilarityScorer() 関数は 2 つの文字列間のテキスト類似度を測定し、どの程度一致しているかを示すスコアを返します。大文字と小文字の区別や空白の処理を設定できます。

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

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

ignoreCase:

boolean
= true
文字列の比較時に大文字と小文字の違いを無視するかどうか。

ignoreWhitespace:

boolean
= true
文字列の比較時に空白を正規化するかどうか。

この関数は MastraScorer クラスのインスタンスを返します。.run() メソッドとその入出力の詳細については、MastraScorer リファレンスを参照してください。

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

runId:

string
実行 ID(任意)。

preprocessStepResult:

object
処理済みの入力と出力を持つオブジェクト: { processedInput: string, processedOutput: string }

analyzeStepResult:

object
類似度を持つオブジェクト: { similarity: number }

score:

number
類似度スコア(0〜1)。1 は完全な類似を示します。

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

スコアラーは、文字単位の照合と設定可能なテキスト正規化によってテキスト類似度を評価します。

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

  1. テキストを正規化します。
    • 大文字と小文字を正規化(ignoreCase: true の場合)
    • 空白を正規化(ignoreWhitespace: true の場合)
  2. string-similarity アルゴリズムを使って処理済みの文字列を比較します。
    • 文字シーケンスを分析
    • 単語境界を整列
    • 相対位置を考慮
    • 長さの違いを考慮

最終スコア: similarity_value * scale

例への直接リンク

期待される Agent の出力と実際の出力のテキスト類似度を評価します。

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

const scorer = createContentSimilarityScorer()

const result = await runEvals({
data: [
{
input: 'Summarize the benefits of TypeScript',
groundTruth:
'TypeScript provides static typing, better tooling support, and improved code maintainability.',
},
{
input: 'What is machine learning?',
groundTruth:
'Machine learning is a subset of AI that enables systems to learn from data without explicit programming.',
},
],
scorers: [scorer],
target: myAgent,
onItemComplete: ({ scorerResults }) => {
console.log({
score: scorerResults[scorer.id].score,
groundTruth: scorerResults[scorer.id].groundTruth,
})
},
})

console.log(result.scores)

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

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

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

類似度スコアは 0〜1 です。

  • 1.0: 完全に一致し、コンテンツはほぼ同一です。
  • 0.7〜0.9: 類似度が高く、語句の選択や構造にわずかな違いがあります。
  • 0.4〜0.6: 類似度は中程度で、全体的には重なるものの明確な違いがあります。
  • 0.1〜0.3: 類似度が低く、共通する要素や意味はわずかです。
  • 0.0: 類似性がなく、コンテンツはまったく異なります。