Skip to content

LLM metrics reference

DataRobot's metrics for LLM evaluation provide basic information about prompts and responses, assess LLM performance, and help your organization report on prompt injection and hateful, toxic, or inappropriate content. また、これらの指標はハルシネーションや信頼性の低いレスポンス、個人を特定できる情報(PII)の共有から保護することもできます。

名前 説明 要件 出力タイプ
パフォーマンス
ROUGE-1 LLMブループリントから生成されたレスポンスとベクターデータベースから検索されたドキュメントの間の類似性を測定します。 ベクターデータベース 0 から 100%
忠実度 言語モデルから生成された回答が(ハルシネーションではなく)事実に忠実であるかどうかを評価します。 ベクターデータベース 1(忠実)または0(忠実ではない)
正確性 生成された回答の正確性およびリファレンス回答との関連性を評価します。 プロンプトとレスポンスのペアの評価データセット 1(最悪)~5(最良)
コサイン類似度 各プロンプトベクターと対応するコンテキストベクター間のコサイン類似度の平均、最大、または最小を計算します。 この指標は、既存のドキュメントで最もカバーされていないプロンプトを特定するのに役立ちます。 コサイン類似度の平均、最大、または最小
ユークリッド距離 各プロンプトベクターと対応するコンテキストベクター間のユークリッド距離の平均、最大、または最小を計算します。 この指標は、既存のドキュメントで最もカバーされていないプロンプトを特定するのに役立ちます。 ユークリッド距離の平均、最大、または最小
安全性
プロンプトインジェクション分類器 システムプロンプトの上書きや変更など、モデルの出力を変えることを目的とした入力操作を検出します。 プロンプトインジェクション分類器のデプロイ 0(プロンプトインジェクションの可能性が低い)~1(プロンプトインジェクションの可能性が高い)
感情分類器
[サイドカー指標]
事前に学習された感情分類モデルを使用して、テキストの感情を肯定的または否定的に分類します。 センチメント分類器のデプロイ 0(否定的な感情)から1(肯定的な感情)までのスコア
センチメント分類器
(NLTK)
自然言語ツールキット(NLTK)ライブラリを使用してテキストの感情を計算します。 -1(否定的な感情)~1(肯定的な感情)
PII検出 Microsoft Presidioライブラリを使用して、テキストに含まれる個人を特定できる情報(PII)を識別し、匿名化することで、個人のプライバシーを保護します。 PresidioのPII検出のデプロイ 0(PIIを含まない可能性が高い)~1(PIIが含む可能性が高い)
日本語のPII発生数 Microsoft Presidio Analyzerライブラリを使用して、日本語のテキスト内で個人を特定できる情報(PII)の出現回数を合計で算出します。 PIIの出現数
毒性
[サイドカー指標]
事前に学習された差別的発言の分類モデルを使用してテキストの毒性を測定し、有害なコンテンツを防止します。 毒性分類器のデプロイ 0(有毒でない可能性が高い)~1(有毒である可能性が高い)
読みやすさ
Dale-Chall 読みやすさ 難解な単語の割合と平均的な文章の長さに基づいて、テキストを理解するのに必要な米国の学年レベルを測定します。 テキストには少なくとも100語が含まれる必要があります。 0(簡単)~10(難しい)
フレッシュ読解容易性 平均的な文の長さと単語あたりの平均音節数に基づいて、テキストの読みやすさを測定します。 テキストには少なくとも100語が含まれる必要があります。 0(難しい)~100(簡単)
運用
トークン数 LLMへの入力、LLMからの出力やベクターデータベースから検索されたテキストに関連付けられたトークンの数を測定します。 トークン数
コスト 入力、出力、および検索されたテキストのトークン数を計算してから、トークンの価格設定を適用することで、LLMを使用する際の財務コストを推定します。 トークンの価格情報 米ドル単位のコスト
待ち時間 LLMブループリントの回答のレイテンシーを測定します。 時間(秒)
出力トークン数の平均 リクエストされた期間の完了時のトークンの平均数を計算します。 指標は、 tiktokenライブラリを使用するトークンの数を追跡します。 ( トークン数を参照してください。) 平均トークン数
プロンプトトークンの平均 リクエストされた期間のプロンプトでの平均トークン数を計算します。 指標は、 tiktokenライブラリを使用するトークンの数を追跡します。 ( トークン数を参照してください。) 平均トークン数
トークンの平均 プロンプトと補完のトークンの平均数を計算します。 指標は、 tiktokenライブラリを使用するトークンの数を追跡します。 ( トークン数を参照してください。) 平均トークン数
テキスト
読み終わるまでの時間 LLMが生成したテキストを人が読むのにかかる平均時間を推定します。 時間(秒)
文字カウント[日本語] LLMに送信されるユーザープロンプトの日本語文字数の合計を計算します。 DataRobotでは、デフォルトの指標はプロンプトテキストのみを分析しますが、カスタム指標コードを編集することで、補完テキストも分析対象に含めることができます。 日本語の文字数
文章数 LLMによって生成されたユーザープロンプトとテキスト内の文章の総数を計算します。 文章数
音節数 ユーザープロンプトとLLMが生成したテキストに含まれる単語の音節数の合計を計算します。 音節数
ワードカウント ユーザープロンプトとLLMが生成したテキストに含まれる単語数の合計を計算します。 単語数

パフォーマンス

パフォーマンス指標は、LLMのレスポンスの事実に基づく精度を評価します。

ROUGE-1

Recall-Oriented UnderStudy for Gisting EvaluationROUGE-1)は、生成されたレスポンスがベクターデータベースで取得されたコンテキストからの関連情報を使用するかどうかを判断することで、LLMによって生成されたテキストの品質を測定します。 具体的には、ROUGE-1は、ベクターデータベースからのリファレンステキストと生成されたテキストとの間のユニグラム(単一の「単語」)の重複を評価します。 この指標は次のように計算されます。

\[ \text{ROUGE-1} = \frac{\sum_{S\in\{\text{RefSummaries}\}} \sum_{gram_1 \in S} Count_{match}(gram_1)}{\sum_{S\in\{\text{RefSummaries}\}} \sum_{gram_1 \in S} Count(gram_1)} \]

この式では、特徴量は以下の通りです。

  • \(S\): リファレンスサマリーのセット。
  • \(gram_1\): リファレンス・サマリー内の単語。
  • \(Count\_{match}(gram_1)\): 候補サマリーとリファレンスサマリーで共起する単語の最大数。
  • \(Count(gram_1)\): リファレンスサマリーの単語数。

つまり、ROUGE-1は次のように計算されます。

\[ \text{ROUGE-1} =\frac{\text{生成テキストと参照テキスト間で一致するユニグラムの総数}}{\text{参照テキストのユニグラムの総数}} \]

ROUGE-1スコアの範囲は0~1(または0~100%)で、スコアが高いほど、生成されたレスポンスと取得されたドキュメントの間で情報の重複が多いことを示します。 DataRobotは、 rouge-scoreライブラリを使用して指標を実装し、以下の最大値を返します。

  • プレシジョン: 生成されたテキストに含まれるユニグラムのうち、リファレンステキストにも含まれるユニグラムの割合を指します。
  • リコール:リファレンステキストに含まれるユニグラムのうち、生成されたテキストにも含まれるユニグラムの割合を指します。

忠実度

忠実度 指標は、言語モデルによって生成された回答が、ベクターデータベース内のソースドキュメントに忠実であるか、またはソースに基づいていないハルシネーション情報を含んでいるかを評価します。

この指標ではLlamaIndex Faithfulness Evaluatorを使用し、以下のものを入力として取り込みます。

  • 生成された回答
  • 回答の根拠となるべきソースドキュメント/節

評価者は言語モデル(GPT-4など)を使用して、回答が提供されたソースによってサポートされるかどうかを分析します。 出力される内容:

  • 1(忠実)または0(忠実ではない)の2値「合格」スコア
  • 忠実度評価の背後にある理由の文章による説明 プレイグラウンドでの忠実度の使用は、LLMプロンプトのユーザー制限にカウントされます( GenAIに関する注意事項を参照してください)。

デプロイガードレールとして忠実度を使用するには、ユーザーが自分自身のOpenAI資格情報を提供する必要があります。

正確性

正確性 指標は、生成された回答がリファレンス回答にどの程度一致しているかを評価します。 1と5の間のスコアを出力し、1が最悪で、5が最良です。

評価プロセスでは、LlamaIndex 正解性評価ツールを使用して、次の手順を実行します。

  1. 入力:評価者は、ユーザークエリー、リファレンス回答、生成された回答の3つの入力を受け取ります。
  2. スコアリング:評価者は、事前に定義されたスコアリングシステムを使用して、生成された回答の関連性と正確性に基づいてスコアを割り当てます。

    • スコア1:生成された回答は、ユーザークエリーに関連していません。
    • スコア2~3:生成された回答は関連していますが、間違いが含まれています。
    • スコア4~5:生成された回答は関連性があり、正しいです。
  3. 出力:評価者はスコアとその理由の両方を提供します。 指定されたしきい値(デフォルトは4.0)以上のスコアは合格と見なされます。

評価はチャットインターフェイスを通じて行われ、評価プロセスをガイドするためにシステムとユーザープロンプトが定義されます。 システムプロンプトは評価者に回答を判断する方法を指示し、ユーザープロンプトは評価のために特定のクエリー、リファレンス回答、および生成された回答を提供します。

DataRobotでは、正確性は 評価データセットに対する集計指標として、プレイグラウンドでのみ使用できます。 また、正確性の使用もLLMプロンプトのユーザー制限にカウントされます( GenAIに関する注意事項を参照してください)。

安全性

Safety metrics are used to monitor the security and privacy of LLM responses and, in some cases, moderate output.

プロンプトインジェクション分類器

プロンプトインジェクション スコアは、 deberta-v3-base-injectionモデルを使用して、与えられた入力にプロンプトインジェクションの試行が含まれるかどうかを分類します。 (このモデルは prompt-injectionsデータセットでファインチューニングされ、評価セットで99.14%の精度を達成しました。)1のプロンプトインジェクションスコアは、入力にプロンプトインジェクションの試みが含まれている可能性が高いことを示し、0のスコアは入力が正当なリクエストであるように思われることを意味します。 スコアを使用すると、プロンプトインジェクション攻撃を防止するためのセキュリティレイヤーが提供されますが、一部のプロンプトインジェクションの試みはそれでも検出をバイパスする可能性があります。

DataRobotでは、プロンプトインジェクションスコアの計算には、 レジストリ内のグローバルモデルとして利用可能な、デプロイされたプロンプトインジェクション分類器が必要です。

センチメント分類器

感情 スコアは、 distilbert-base-uncased-finetuned-sst-2-englishモデルを使用して、テキストを肯定的または否定的な感情のいずれかに分類します。 (このモデルは 、Stanford Sentiment Treebank SST-2データセットでファインチューニングされ、SST-2開発セットで91.3%の精度を達成しました。)モデルは0~1の確率スコアを出力し、スコアが低いほど否定的な感情が強くなり、スコアが高いほど肯定的な感情が強くなります。

DataRobotでは、感情スコアの計算には、 レジストリ内のグローバルモデルとして利用可能な、デプロイされた感情分類器が必要です。

センチメント分類器(NLTK)

NLTK感情スコアは、NLTKライブラリで事前にトレーニング済みのモデルである SentimentIntensityAnalyzerを使用して、与えられたテキストの感情の極性(肯定的、否定的、中立)および強度を決定します。 解析器は、 VADER(Valence Aware Dictionary and sEntiment Reasoner)辞書に基づいています。 感情スコアの範囲は-1~1です。

  • -1は完全に否定的な感情を表します。
  • 0は中立的な感情を表します。
  • 1は完全に肯定的な感情を表します。

SentimentIntensityAnalyzerは、感情スコアを次のように計算します。

  1. アナライザーは入力テキスト内の各単語をVADER辞書で照合します。この辞書は、単語ごとに付与された感情スコアを含む広範なリストで、スコア範囲は-1(非常に否定的)から+1(非常に肯定的)までとなります。
  2. アナライザーは、大文字、句読点、否定、程度修飾語などの言語的特徴を考慮し、感情の強度を調整します。
  3. 各単語のスコアは、加重平均を使用して合計されます。 DataRobotでは、感情のカスタム指標テンプレートは英語のプロンプトのみを評価します。

PII検出

PII検出 スコアは、 Microsoft Presidioライブラリを使用して、以下のような機密性の高い、個人を特定できる情報(PII)を検出し、匿名化します。

  • 名前
  • Eメールアドレス
  • 電話番号
  • クレジットカード番号
  • 社会保障番号
  • 位置
  • 財務データ

Presidioは、正規表現、ルールベースのロジック、チェックサム、名前付きエンティティ認識モデルを使用して、関連するコンテキストでPIIを検出します。

PII検出スコアを測定することで、リリース前や下流のアプリケーションで使用する前に保護が必要な情報を特定することで、モデルが個人のプライバシーをどの程度保護しているかを評価できます。これは、データ保護法の遵守と信頼の維持にとって非常に重要です。

DataRobotでは、PII検出スコアの計算には、 レジストリ内のグローバルモデルとして利用可能な、デプロイされたPresidio PII検出モデルが必要です。

PII検出モデルは、以下もサポートします。

  • カラムまたはentitiesで検出するPIIのタイプをカンマ区切りの文字列で指定します。 この列が指定されていない場合は、サポートされているすべてのエンティティが検出されます。 PresidioドキュメントがサポートするPIIエンティティを確認します。
  • 検出結果を返し、検出されたPIIをプレースホルダーに置き換えたバージョンを含むanonymized_text列を提供します。

日本語のPII発生数

日本語のPII出現数 指標は、 Microsoft Presidioライブラリを使用して、日本語のテキストで書かれたプロンプトから機密性の高い個人情報の存在を定量化します。 指標は、プライバシーリスクの評価およびデータ保護法の遵守に役立ちます。

この指標は、以下を含むがこれに限らないPIIの存在を定量化します。

  • 名前
  • アドレス
  • Eメールアドレス
  • 電話番号
  • パスポート番号

指標を計算するには:

  1. 日本語テキストはPresidioアナライザーに渡され、テキストをスキャンし、日本語の事前に定義されたエンティティ認識モデルに基づいてPIIのインスタンスを検出します。
  2. 検出された各PIIエンティティタイプについて、アナライザーは出現回数を返し、すべてのPIIエンティティタイプのカウントを合計して、PIIの出現回数の合計を求めます。 DataRobotでは、デフォルトの指標はプロンプトテキストのみを分析しますが、カスタム指標コードを編集することで、補完テキストも分析対象に含めることができます。

毒性

毒性 スコアは、 martin-ha/toxic-comment-modelを使用してテキストコンテンツの毒性を分類します。 このモデルは、 Kaggleコンペティションのデータで訓練された、 DistilBERTモデルのファインチューニングされたバージョンです。

モデルは、0~1の確率スコアを出力し、スコアが高いほど毒性の高いコンテンツであることを示します。 このモデルは、特定のアイデンティティサブグループについて言及しているテキストではうまく機能しない場合があることに注意してください。

DataRobotでは、毒性スコアの計算には、 レジストリ内のグローバルモデルとして利用可能な、デプロイされた毒性分類器モデルが必要です。

読みやすさ

一般的に、読みやすさの指標は、主に単語の長さや日常的によく使われる単語かどうかを基に、読者が文章を理解するために何年の教育が必要かを測ります。

Dale-Chall 読みやすさ

Dale-Chall可読性 スコアは、「難解な」単語の割合と文章の平均長さの2つの主な要素を考慮して、英語のテキストの難易度を評価する、 読みやすさの指標です。 この式には、米国の小学4年生ならほとんどの生徒が知っていると思われる約3,000語が使われています。 このリストにない単語は「難しい単語」とみなされます。スコアは次の式を使用して計算されます。

\[ \text{Raw Score} = 0.1579 \left( \frac{\text{難しい単語の数}}{\text{単語の総数}} \times 100 \right) + 0.0496 \left( \frac{\text{単語の総数}}{\text{文の総数}} \right) \]

難しい単語の割合が5%よりも大きい場合、生のスコアに3.6365の調整係数が追加されます。 Dale-Chall可読性スコアは、次のように学年レベルにマッピングされます。

スコア 米国の学年レベル
4.9以下 4年生以下
5.0 - 5.9 5~6年生
6.0 - 6.9 7~8年生
7.0 - 7.9 9~10年生
8.0 - 8.9 11~12年生
9.0 - 9.9 13~15年生(大学生)
10.0以上 16年生以上(大学卒業生)

DataRobotでは、分析されたテキストには、結果を計算するために少なくとも100の単語が含まれている必要があります。

フレッシュ読解容易性

Flesch Reading Ease スコアは、テキストの読みやすさを示す リーダビリティ指標です。 1単語あたりの音節の平均数と1文章あたりの単語の平均数に基づく式を使用します。 スコアは、次の式を使用して計算されます。

\[ \text{Flesch Reading Ease} = 206.835 - 1.015 \left(\frac{\text{単語の総数}}{\text{文の総数}}\right) - 84.6 \left(\frac{\text{音節の総数}}{\text{単語の総数}}\right) \]

通常、スコアは0~100の範囲で、スコアが高いほど読みやすいことを示します。 スコアは次のように解釈できます。

スコア 解釈 米国の学年レベル
90-100 とても簡単 5年生
80-89 簡単 6年生
70-79 かなり簡単 7年生
60-69 Standard 8~9年生
50-59 かなり難しい 10~12年生
30-49 難しい カレッジ
0-29 非常に難しい 大学卒業

スコアは、コンテンツの複雑さや技術的な専門用語は考慮していません。 DataRobotでは、結果を計算するために、分析するテキストには少なくとも100の単語が含まれている必要があります。

運用

Operational metrics are metrics measuring the LLM's system-related statistics.

トークン数

トークン数 指標は、 tiktokenライブラリが提供するるcl100k_baseトークン化スキームを使用して、テキストに関連付けられたトークンの数を追跡します。 このトークン化は、OpenAIのGPT-3およびGPT-4言語モデルと一致する方法でテキストをトークンに分割します。 トークンは、言語モデルが処理する基本的な単位であり、単語または単語の一部を表します。 一般的に、短いテキストは長いテキストよりもトークン数が少なくなりますが、トークンの正確な数は、句読点、希な単語、およびマルチバイト文字を処理するための特別なルールが原因で、使用される特定の単語と文字によって異なります。 トークン数の指標は、以下の言語モデルによって処理されるテキストを管理するのに役立ちます。

  • コストの見積もり:APIコールは、多くの場合、トークンの使用量に基づいて価格設定されています。
  • トークン制限管理:入力がモデルトークン制限を超えないようにします。
  • パフォーマンス監視:トークン数は、処理時間とリソースの使用量に影響します。
  • 出力長の制御: 生成されたテキストの長さを管理するのに役立ちます。

トークン化の方式が異なると、同じテキストでもトークン数が異なることがあります。また、他のプロバイダーの言語モデルでcl100k_baseエンコーディングを使用する場合、制限が課せられる場合があります。 DataRobotでは、異なるエンコーディングを実行時のパラメーターとして指定することができます。

コスト

コスト 指標は、言語モデルを実行するときに発生する費用を推定します。 モデルへの入力プロンプトに含まれるトークン数、モデルによって生成された出力、およびベクターデータベースから取得したテキストを考慮します。 この指標は、 tiktokenライブラリのcl100k_baseトークン化スキームを使用してトークンをカウントし( トークン数を参照)、2つの価格変数を適用します。

  • プロンプトトークンの価格:入力および取得されたテキストのトークンあたりのコスト
  • 出力トークンの価格:LLMの出力のトークンあたりのコスト

この指標は、LLMの使用に関する経費を以下の方法によって管理するのに便利です。

  • LLMサービスを呼び出す前にAPI使用コストを見積もります。
  • 予算編成とリソース配分
  • プロンプトと検索戦略を最適化し、コストを最小限に抑えます。
  • さまざまなLLM設定の比較

DataRobotでは、プロンプトと補完のトークン価格をランタイムパラメーターとして指定する必要があります。 トークンの価格設定は、LLMプロバイダーやモデルによって異なり、段階的な価格設定やボリュームディスカウントは、デフォルトでは指標に含まれません。

テキスト

テキスト指標は、プロンプトや補完テキストに関する基本的な情報(回答内の単語数や文章の数など)を提供します。 これらの指標は、入力および出力のトークン数よりも解釈しやすいものです。

読み終わるまでの時間

Completion Reading Time 指標は、平均的な人が言語モデルによって生成されたテキストを読むのに必要な時間を推定します。 この指標は、人間にとっての読みやすさと時間投資の観点から、テキスト出力の長さと複雑さを評価するのに便利です。

この指標は、 readtimeライブラリを使用して次の式で計算されます。

\[ \text{読了時間} = \left(\frac{\text{単語数}}{\text{1分あたりの単語数}}\right) \times 60 + (\text{画像数} \times \text{画像1枚あたりの秒数}) \]

この式では、特徴量は以下の通りです。

  • $ ext{ワードカウント}$: テキスト内の単語数をカウントします。
  • \(\text{分間単語数}\): 平均的な大人の読み取り速度は265に設定されています。
  • \(\text{画像数}\): コンテンツ内の画像の数(該当する場合)。
  • \(\text{画像1枚あたりの処理時間}\): 画像処理にかかる推定時間。12秒から始まり、処理中の画像が見つかるごとに1秒ずつ減少し、最小時間は3秒。

この指標の制限は次の通りです。

  • この指標は、すべてのユーザーを正確に表していない可能性がある、平均読み取り速度を前提としています。
  • コンテンツの複雑さは考慮されず、長さのみが考慮されます。
  • この指標は、実際の読み取り時間に影響を与える形式や構造を考慮していません。

文章数

文章数 指標は、プロンプトと補完からの文章数の合計を返します。 この指標は、生成されたテキストが長さと構造要件を満たしていることを確認し、言語モデルの出力を評価するのに役立ちます。

この指標は、句読点やその他の言語的な手がかりに基づいて文章の境界を識別する自然言語処理技術を採用した NLTKライブラリを使用して計算されます。 非常に短いテキストやインフォーマルなテキスト、型にはまらない文体で使用する場合、精度の高い文章検出には限界がある場合があります。

音節数

音節数 指標は、言語モデルとの対話中に書かれた単語の音節の総数を計算します。 この指標は、テキストの言語的複雑さや読みやすさを評価するのに役立ちます。

この指標は、次のステップを含む NLTKライブラリを使用して計算されます。

  1. トークン化:プロンプトと補完からのテキストは、 word_tokenizeを使用して個々の単語に分割されます。
  2. 音節の数え方:各単語について、 cmudict(カーネギーメロン大学発音辞典)を使用して音節数を決定します。 この辞典は、音節を数えるための単語の発音表記を提供します。
  3. 合計:すべての単語の音節数が合計されます。 cmudict辞書の包括性によっては、精度の高い音節数のカウントに限界がある場合があることに注意してください。

ワードカウント

単語数 指標は、言語モデルとの対話中に書かれた単語の総数を計算します。 この指標は、テキストの長さと複雑さを求めるのに役立ちます。

この指標は、 NLTKライブラリを使用して、 word_tokenizeでテキストを個々の単語にトークン化してから、句読点やその他の単語以外の文字を除いてトークンをカウントすることで計算されます。

短縮形の分割など、トークナイザーが句読点をどのように処理するかによって、精度の高い単語数に制約が生じる場合があります。