エージェントのメトリクスとLLM審査員を使用してアプリのパフォーマンスを評価する

プレビュー

この機能はパブリックプレビュー段階です。

この記事では、エージェントメトリクスと大規模言語モデル ( LLM ) ジャッジ評価コンピュートによる Agent Evaluation の実行について説明します。 評価結果を使用してエージェントアプリケーションの品質を判断する方法を学びます。

Databricksは、人間の評価者との一致を測定することで、ジャッジの質を向上させることに尽力しています。Databricksは、学術的および独自のデータセットからの多様で挑戦的な例を使用して、最先端のLLMジャッジアプローチに対してジャッジをベンチマークおよび改善し、継続的な改善と高い精度を保証します。

評価実行の出力

評価実行では、次のタイプの出力が生成されます。

  • リクエストと応答情報

    • request_id

    • request

    • response

    • expected_retrieved_context

    • expected_response

    • retrieved_context

    • trace

  • エージェントメトリクスとLLMジャッジ

エージェントのメトリクスとLLMジャッジは、アプリケーションの品質を判断するのに役立ちます。

エージェントのメトリクスとジャッジ

これらのメトリックのパフォーマンスを測定するには、2 つのアプローチがあります。

LLM 審査員を使用する:別の LLM が審査員として機能し、アプリケーションの取得と応答の品質を評価します。 このアプローチにより、さまざまな側面で評価が自動化されます。

決定論的関数を使用する:アプリケーションのトレースと、オプションで評価セットに記録された真実から決定論的メトリックを導出して、パフォーマンスを評価します。 例としては、コストとレイテンシに関するメトリクスや、グラウンドトゥルース文書に基づく検索リコールの評価などが挙げられます。

次の表に、組み込みメトリクスとそれによって回答できる質問を示します。

メトリクス名

質問

メトリクスタイプ

chunk_relevance

リトリーバーは関連するチャンクを見つけたか

LLM審査

document_recall

レトリーバーは既知の関連文書をいくつ見つけましたか?

決定論的 (グラウンド トゥルースが必要)

correctness

全体として、エージェントは正しい応答を生成したか

LLM 審査済み (グラウンドトゥルースが必要)

relevance_to_query

応答は要求に関連していますか?

LLM審査

groundedness

その反応は困惑なのか、それとも文脈に根ざしたものか

LLM審査

safety

応答に有害なコンテンツが含まれていますか?

LLM審査

total_token_counttotal_input_token_counttotal_output_token_count

LLM世代のトークンの総数はいくつか

確定的

latency_seconds

エージェントの実行の待機時間はどれくらいか

確定的

また、カスタムLLMジャッジを定義して、ユースケースに固有の基準を評価することもできます。

LLMジャッジの信頼性と安全性に関する情報については、「LLMジャッジを強化するモデルに関する情報」を参照してください。

検索メトリクス

検索メトリクスは、エージェント アプリケーションが関連するサポート データをどれだけ正常に取得できるかを評価します。 精度と再現率は 2 つの重要な検索メトリクスです。

recall    =  # of relevant retrieved items / total # of relevant items
precision =  # of relevant retrieved items / # of items retrieved

リトリーバーは関連するチャンクを見つけたか

リトリーバーが入力要求に関連するチャンクを返すかどうかを判断します。 LLMジャッジを使用して、グラウンドトゥルースなしでチャンクの関連性を判断し、派生した精度メトリックを使用して、返されたチャンクの全体的な関連性を定量化できます。

チャンク関連性精度の例
  • LLMジャッジ:chunk-relevance-precisionジャッジ

  • グラウンドトゥルースが必要: None

  • 入力評価セットのスキーマ:

    • request

    • retrieved_context[].content または trace ( model 引数が mlflow.evaluate()で使用されていない場合のみ)

yes:取得されたチャンクは、入力リクエストに関連しています。

no:取得されたチャンクは、入力リクエストとは無関係です。

各質問の出力:

データフィールド

タイプ

説明

retrieval/llm_judged/chunk_relevance/ratings

array[string]

各チャンクについて、関連性があると判断された場合はyesまたはno

retrieval/llm_judged/chunk_relevance/rationales

array[string]

チャンクごとに、対応する評価に対するLLMの理由

retrieval/llm_judged/chunk_relevance/error_messages

array[string]

各チャンクについて、評価の計算でエラーが発生した場合、エラーの詳細がここに表示され、他の出力値はNULLになります。エラーがない場合、これはNULLです。

retrieval/llm_judged/chunk_relevance/precision

float, [0, 1]

取得されたすべてのチャンクのうち関連するチャンクの割合を計算します。

評価セット全体について報告されるメトリクス:

メトリクス名

タイプ

説明

retrieval/llm_judged/chunk_relevance/precision/average

float; [0, 1]

すべての質問におけるchunk_relevance/precisionの平均値

レトリーバーは既知の関連文書をいくつ見つけましたか?

リトリーバーによって正常に取得されたグラウンドトゥルース関連ドキュメントのリコール率を計算します。

文書のリコール例
  • LLMジャッジ:なし、グラウンドトゥルースベース

  • グラウンドトゥルースが必要: Yes

  • 入力評価セットのスキーマ:

    • expected_retrieved_context[].doc_uri

    • retrieved_context[].doc_uri または trace ( model 引数が mlflow.evaluate()で使用されていない場合のみ)

各質問の出力:

データフィールド

タイプ

説明

retrieval/ground_truth/document_recall

float, [0, 1]

取得されたチャンク内に存在するグラウンドトゥルースdoc_urisの割合。

評価セット全体について報告されるメトリクス:

メトリクス名

タイプ

説明

retrieval/ground_truth/document_recall/average

float; [0, 1]

すべての質問で、document_recallの平均値はいくつか

レスポンスメトリクス

応答品質メトリックは、アプリケーションがユーザーの要求にどれだけ適切に応答するかを評価します。 応答メトリクスは、たとえば、結果として得られた回答が真実に基づいて正確であるかどうか、検索されたコンテキストを与えられた応答がどの程度根拠のあるものであったか (例: LLMが幻覚を起こしたか)、または応答がどの程度安全であったか (例: 毒性がない) を測定できます。

全体として、LLMは正確な答えを出しましたか?

エージェントが生成した応答が事実上正確で、提供されたグラウンドトゥルース応答と意味的に類似しているかどうかについて、二項評価と理論的根拠を書面で入手してください。

  • LLMジャッジ:correctnessジャッジ

  • グラウンドトゥルースが必要:はい、 expected_response

  • 入力評価セットのスキーマ:

    • request

    • expected_response

    • response または trace ( model 引数が mlflow.evaluate()で使用されていない場合のみ)

yes:生成された応答は非常に正確で、意味的には真実に類似しています。グラウンドトゥルースの意図を捉えている軽微な省略や不正確さは許容されます。

no:応答が基準を満たしていません。不正確であるか、部分的に正確であるか、意味的に異なっているかのいずれかです。

各質問に提供される出力:

データフィールド

タイプ

説明

response/llm_judged/correctness/rating

string

yes 答えが正しければ(事実上)、noです

response/llm_judged/correctness/rationale

string

LLMの「はい/いいえ」の理由。

retrieval/llm_judged/correctness/error_message

string

このメトリクスの計算にエラーがあった場合、エラーの詳細がここに表示されます。エラーがない場合、これはNULLです。

評価セット全体について報告されるメトリクス:

メトリクス名

タイプ

説明

response/llm_judged/correctness/rating/percentage

float; [0, 1]

すべての質問で、正しさが次のように判断される割合は yes

レスポンスはリクエストに関連していますか?

応答が入力リクエストに関連しているかどうかを判断します。

  • LLMジャッジ:relevance_to_queryジャッジ

  • グラウンドトゥルースが必要: None

  • 入力評価セットのスキーマ:

    • request

    • response または trace ( model 引数が mlflow.evaluate()で使用されていない場合のみ)

yes:応答は元の入力リクエストに関連します。

no:応答は元の入力リクエストとは無関係です。

各質問の出力:

データフィールド

タイプ

説明

response/llm_judged/relevance_to_query/rating

string

yes レスポンスがリクエストに関連すると判断された場合は、noです。

response/llm_judged/relevance_to_query/rationale

string

LLMの yesの書面による理由/no

response/llm_judged/relevance_to_query/error_message

string

このメトリクスの計算にエラーがあった場合、エラーの詳細がここに表示されます。エラーがない場合、これはNULLです。

評価セット全体について報告されるメトリクス:

メトリクス名

タイプ

説明

response/llm_judged/relevance_to_query/rating/percentage

float; [0, 1]

すべての質問の中で、relevance_to_query/ratingyesであると判断される割合はどれくらいか。

その反応は幻覚なのか、それとも取り出された文脈に基づいているのか。

生成された応答が取得したコンテキストと事実上一致しているかどうかについて、二項評価と理論的根拠を書面で入手してください。

  • LLMジャッジ:groundednessジャッジ

  • グラウンドトゥルースが必要:なし

  • 入力評価セットのスキーマ:

    • request

    • retrieved_context[].content または trace ( model 引数が mlflow.evaluate()で使用されていない場合のみ)

    • response または trace ( model 引数が mlflow.evaluate()で使用されていない場合のみ)

yes:取得されたコンテキストは、生成された応答のすべてまたはほぼすべてをサポートします。

no:取得されたコンテキストは、生成された応答をサポートしていません。

各質問に提供される出力:

データフィールド

タイプ

説明

response/llm_judged/groundedness/rating

string

yes 応答が根拠のある(困惑のない)場合は、noです。

response/llm_judged/groundedness/rationale

string

LLMの yesの書面による理由/no

retrieval/llm_judged/groundedness/error_message

string

このメトリクスの計算にエラーがあった場合、エラーの詳細がここに表示されます。エラーがない場合、これはNULLです。

評価セット全体について報告されるメトリクス:

メトリクス名

タイプ

説明

response/llm_judged/groundedness/rating/percentage

float; [0, 1]

すべての質問で、groundedness/ratingyesと判定される割合はどれくらいか。

エージェントの回答に有害な内容はありますか?

二者択一の評価と、生成された応答に有害または有毒な内容が含まれているかどうかの根拠を書面で調べてください。

  • LLMジャッジ:safetyジャッジ

  • グラウンドトゥルースが必要:なし

  • 入力評価セットのスキーマ:

    • request

    • response または trace ( model 引数が mlflow.evaluate()で使用されていない場合のみ)

yes:生成された応答には有害または有毒なコンテンツは含まれていません。

no:生成された応答には有害または有毒なコンテンツが含まれています。

各質問に提供される出力:

データフィールド

タイプ

説明

response/llm_judged/safety/rating

string

yes 応答に有害または有毒なコンテンツが含まれていない場合はnoです。

response/llm_judged/safety/rationale

string

LLMの yesの書面による理由/no

retrieval/llm_judged/safety/error_message

string

このメトリクスの計算にエラーがあった場合、エラーの詳細がここに表示されます。エラーがない場合、これはNULLです。

評価セット全体について報告されるメトリクス:

メトリクス名

タイプ

説明

response/llm_judged/safety/rating/average

float; [0, 1]

全問題のうち、yesと判定されたのは何パーセントか。

カスタム検索LLMジャッジ

カスタム検索ジャッジを使用して、検索された各チャンクに対してカスタム評価を実行します。すべての質問の各チャンクに対して、LLMジャッジが呼び出されます。カスタムジャッジの設定の詳細については、「高度なエージェント評価」を参照してください。

各評価で提供される出力:

データフィールド

タイプ

説明

retrieval/llm_judged/{assessment_name}/ratings

array[string]

各チャンクについて、カスタムジャッジの出力ごとにyes/no

retrieval/llm_judged/{assessment_name}/rationales

array[string]

各チャンクについて、LLMの yes/の推論を記述no

retrieval/llm_judged/{assessment_name}/error_messages

array[string]

各チャンクについて、このメトリクスの計算でエラーが発生した場合、エラーの詳細はここに表示され、他の値はNULLです。エラーがない場合、これはNULLです。

retrieval/llm_judged/{assessment_name}/precision

float, [0, 1]

取得されたすべてのチャンクのうち、カスタムジャッジによってyesと判断されるチャンクの割合はどのくらいか。

評価セット全体について報告されるメトリクス:

メトリクス名

タイプ

説明

retrieval/llm_judged/{assessment_name}/precision/average

float; [0, 1]

全問題の平均値 {assessment_name}_precision

パフォーマンス指標

パフォーマンス メトリックは、エージェント アプリケーションの全体的なコストとパフォーマンスを取得します。 全体的なレイテンシとトークン消費は、パフォーマンス メトリックの例です。

エージェントアプリケーションを実行するためのトークンコストはいくらですか?

トレース内のすべてのLLM生成呼び出しの合計トークン数を計算します。これは、トークンが多いほど総コストが高くなることを意味します。

各質問の出力:

データフィールド

タイプ

説明

agent/total_token_count

integer

エージェントのトレースのすべてのLLMスパンにわたるすべての入力トークンと出力トークンの合計

agent/total_input_token_count

integer

エージェントのトレースのすべてのLLMスパンにわたるすべての入力トークンの合計

agent/total_output_token_count

integer

エージェントのトレースのすべてのLLMスパンにわたるすべての出力トークンの合計

評価セット全体について報告されるメトリクス:

名前

説明

agent/total_token_count/average

すべての質問の平均値

agent/input_token_count/average

すべての質問の平均値

agent/output_token_count/average

すべての質問の平均値

エージェント アプリケーションの実行の待機時間はどれくらいですか?

トレースのアプリケーション全体のレイテンシを秒単位で表示します。

各質問の出力:

名前

説明

agent/latency_seconds

トレースに基づくエンドツーエンドの待機時間

評価セット全体について報告されるメトリクス:

メトリクス名

説明

agent/latency_seconds/average

すべての質問の平均値

LLMジャッジを支援するモデルに関する情報

  • LLMジャッジは、Microsoftが運営するAzure OpenAIなどのサードパーティサービスを使用して生成AIアプリケーションを評価する場合があります。

  • Azure OpenAIの場合、Databricksは不正行為モニタリングをオプトアウトしているため、プロンプトや応答はAzure OpenAIに保存されません。

  • 欧州連合(EU)のワークスペースの場合、LLMジャッジはEUでホストされているモデルを使用します。他のすべてのリージョンでは、米国でホストされているモデルを使用します。

  • パートナー駆動のAI 補助機能を無効にすると、LLM 審査員がパートナー駆動のモデルを呼び出せなくなります。

  • LLMジャッジに送信されたデータは、モデルのトレーニングには使用されません。

  • LLMジャッジは、顧客のRAGアプリケーションの評価を支援することを目的としており、LLMジャッジの出力は、LLMのトレーニング、改善、微調整のために使用されるべきではありません。