コンテンツ類似度の評価
We just released a new evals API called Scorers, with a more ergonomic API and more metadata stored for error analysis, and more flexibility to evaluate data structures. It’s fairly simple to migrate, but we will continue to support the existing Evals API.
ContentSimilarityMetric
を使用して、コンテンツの重複度に基づき、応答が参照とどれほど似ているかを評価します。メトリクスは query
と response
を受け取り、スコアと、類似度の値を含む info
オブジェクトを返します。
インストール
npm install @mastra/evals
高い類似度の例
この例では、応答は構造と意味の両面でクエリと非常に近似しています。時制や言い回しのわずかな違いは、全体的な類似度にほとんど影響しません。
import { ContentSimilarityMetric } from "@mastra/evals/nlp";
const metric = new ContentSimilarityMetric();
const query = "The quick brown fox jumps over the lazy dog.";
const response = "A quick brown fox jumped over a lazy dog.";
const result = await metric.measure(query, response);
console.log(result);
高い類似度の出力
この出力は、応答がわずかな言い換えのみでクエリの意図と内容を保っているため、高いスコアとなります。
{
score: 0.7761194029850746,
info: {
similarity: 0.7761194029850746
}
}
中程度の類似度の例
この例では、応答はクエリと概念的にはいくつか重なっていますが、構造や表現が異なります。主要な要素は含まれているものの、言い回しに中程度の差異があります。
import { ContentSimilarityMetric } from "@mastra/evals/nlp";
const metric = new ContentSimilarityMetric();
const query = "A brown fox quickly leaps across a sleeping dog.";
const response = "The quick brown fox jumps over the lazy dog.";
const result = await metric.measure(query, response);
console.log(result);
中程度の類似度の出力
この出力は、応答がクエリの大意を捉えている一方で、表現の違いにより全体の類似度が下がっているため、中間的なスコアとなります。
{
score: 0.40540540540540543,
info: {
similarity: 0.40540540540540543
}
}
低類似度の例
この例では、文法構造は似ていても、response
と query
の意味は無関係です。共有される内容の重なりはほとんど、あるいはまったくありません。
import { ContentSimilarityMetric } from "@mastra/evals/nlp";
const metric = new ContentSimilarityMetric();
const query = "The cat sleeps on the windowsill.";
const response = "The quick brown fox jumps over the lazy dog.";
const result = await metric.measure(query, response);
console.log(result);
低類似度の出力
response
が query
の内容や意図と整合しないため、出力は低いスコアになります。
{
score: 0.25806451612903225,
info: {
similarity: 0.25806451612903225
}
}
メトリックの設定
ContentSimilarityMetric
インスタンスは既定の設定で作成できます。追加の設定は不要です。
const metric = new ContentSimilarityMetric();
設定オプションの一覧については、ContentSimilarityMetric を参照してください。
結果の理解
ContentSimilarityMetric
は次の形式の結果を返します:
{
score: number,
info: {
similarity: number
}
}
類似度スコア
0〜1 の範囲の類似度スコア:
- 1.0: 完全一致 – コンテンツはほぼ同一。
- 0.7–0.9: 高い類似度 – 語彙や構成にわずかな違い。
- 0.4–0.6: 中程度の類似度 – 全体としては重なるが、目立つ差異もある。
- 0.1–0.3: 低い類似度 – 共通要素や意味の共有が少ない。
- 0.0: 類似なし – まったく異なるコンテンツ。
類似度情報
スコアに関する説明で、次の内容を含みます:
- クエリとレスポンスの重なりの程度
- 一致する句やキーワード
- テキスト類似度に基づく意味的近さ