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

プレビュー

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

この記事では、Agent メトリクスと大規模言語モデル (LLM) judge evaluations コンピュート by Agent Evaluation evaluation 実行について説明します。

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

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

Mosaic AI Agent Evaluation は、エージェント アプリケーションの品質を評価するために 2 つのアプローチを使用します。

LLMの審査員: 別の LLM は、アプリケーションの取得と応答の品質を評価するためのジャッジとして機能します。 Agent Evaluation には、評価プロセスをスケールアップし、多数のテストケースを含めることを可能にする一連の組み込み LLM ジャッジが含まれています。

決定論的な計算: アプリケーションのトレースから決定論的なメトリクスを導き出し、必要に応じて評価セットに記録されたグラウンドトゥルースからパフォーマンスを評価します。 例としては、トークン数とレイテンシのメトリクス、グラウンドトゥルースドキュメントに基づく取得リコールなどがあります。

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

メトリクス名

質問

メトリクスタイプ

chunk_relevance

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

LLM審査

document_recall

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

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

context_sufficiency

レトリーバーは、期待される応答を生成するのに十分なドキュメントを見つけましたか?

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

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

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

chunk-relevance-precision LLM ジャッジは、レトリーバーによって返されるチャンクが入力リクエストに関連しているかどうかを判断します。精度は、返された関連するチャンクの数を返されたチャンクの合計数で割った値として計算されます。 たとえば、レトリーバーが 4 つのチャンクを返し、LLM ジャッジが返された 4 つのドキュメントのうち 3 つがリクエストに関連していると判断した場合、 llm_judged/chunk_relevance/precision は 0.75 です。

llm_judged/chunk_relevance に必要な入力

グラウンドトゥルースは必要ありません。

入力評価セットには、次の列が必要です。

  • request

また、 mlflow.evaluate()の呼び出しで model 引数を使用しない場合は、 retrieved_context[].content または traceも指定する必要があります。

llm_judged/chunk_relevance の出力

各質問に対して、次のメトリクスが計算されます。

データフィールド

タイプ

説明

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 です。

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

document_recall は、返された関連ドキュメントの数を、グラウンド トゥルースに基づく関連ドキュメントの合計数で割った値として計算されます。 たとえば、2 つのドキュメントがグラウンド トゥルースに基づいて関連しているとします。 レトリーバーがこれらのドキュメントのいずれかを返す場合、 document_recall 0.5 です。 このメトリクスは、返されるドキュメントの合計数の影響を受けません。

このメトリクスは決定論的であり、LLM ジャッジは使用しません。

document-recall に必要な入力

グラウンドトゥルースが必要です。

入力評価セットには、次の列が必要です。

  • expected_retrieved_context[].doc_uri

また、 mlflow.evaluate()の呼び出しで model 引数を使用しない場合は、 retrieved_context[].doc_uri または traceも指定する必要があります。

document-recall の出力

各質問に対して、次のメトリクスが計算されます。

データフィールド

タイプ

説明

retrieval/ground_truth/document_recall

float, [0, 1]

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

評価セット全体に対して、次のメトリクスが計算されます。

メトリクス名

タイプ

説明

retrieval/ground_truth/document_recall/average

float, [0, 1]

すべての質問の平均値は document_recall です。

レトリーバーは、期待される応答を生成するのに十分なドキュメントを見つけましたか?

context_sufficiency LLM ジャッジは、レトリーバが期待されるレスポンスを生成するのに十分なドキュメントを取得したか否かを判定します。

context_sufficiency に必要な入力

グラウンドトゥルース・ expected_response が必要です。

入力評価セットには、次の列が必要です。

  • request

    • expected_response

また、 mlflow.evaluate()の呼び出しで model 引数を使用しない場合は、 retrieved_context[].content または traceも指定する必要があります。

context_sufficiency の出力

各質問に対して、次のメトリクスが計算されます。

データフィールド

タイプ

説明

retrieval/llm_judged/context_sufficiency/rating

string

yes または noyes は、取得されたコンテキストが期待される応答を生成するのに十分であることを示します。 no は、不足している情報を取り戻すために、この質問に対して検索を調整する必要があることを示しています。 出力の根拠には、欠落している情報について言及する必要があります。

retrieval/llm_judged/context_sufficiency/rationale

string

LLMの書面による推論は、 yes または no

retrieval/llm_judged/context_sufficiency/error_message

string

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

評価セット全体に対して、次のメトリクスが計算されます。

メトリクス名

タイプ

説明

retrieval/llm_judged/context_sufficiency/rating/percentage

float, [0, 1]

コンテキストの十分性が yesと判断される割合。

レスポンスメトリクス

応答品質メトリクスは、アプリケーションがユーザーのリクエストにどの程度適切に応答しているかを評価します。 これらのメトリクスは、グラウンドトゥルースと比較したレスポンスの精度、取得したコンテキストを考慮してレスポンスが十分に根拠があるか(またはLLMが幻覚を見ているか)、レスポンスが安全で有害な言葉がないかどうかなどの要素を評価します。

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

correctness LLMの裁判官は、エージェントによって生成された応答が事実上正確であり、提供されたグラウンドトゥルース応答と意味的に類似しているかどうかについて、二項評価と書面による理論的根拠を提供します。

correctness に必要な入力

グラウンドトゥルース expected_response が必要です。

入力評価セットには、次の列が必要です。

  • request

  • expected_response

また、 mlflow.evaluate()の呼び出しで model 引数を使用しない場合は、 response または traceも指定する必要があります。

重要

グラウンドトゥルース expected_response には、正しい対応に必要な最小限の事実 のみ を含める必要があります。 別のソースから応答をコピーする場合は、必ず応答を編集して、回答が正しいと見なされるために 必要 のないテキストを削除してください。

必要な情報のみを含め、回答に厳密に必要でない情報を省略することで、Agent Evaluation は出力品質に関するより堅牢なシグナルを提供できます。

correctness の出力

各質問に対して、次のメトリクスが計算されます。

データフィールド

タイプ

説明

response/llm_judged/correctness/rating

string

yes または noyes は、生成された応答が非常に正確で、意味的にグラウンド トゥルースと類似していることを示します。 グラウンドトゥルースの意図を捉えているような軽微な省略や不正確さは許容されます。 no は、応答が基準を満たしていないことを示します。

response/llm_judged/correctness/rationale

string

LLMの書面による推論は、 yes または no

response/llm_judged/correctness/error_message

string

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

評価セット全体に対して、次のメトリクスが計算されます。

メトリクス名

タイプ

説明

response/llm_judged/correctness/rating/percentage

float, [0, 1]

すべての質問で、正しさが yesと判断された割合。

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

relevance_to_query LLM ジャッジは、応答が入力要求に関連しているかどうかを判断します。

relevance_to_query に必要な入力

グラウンドトゥルースは必要ありません。

入力評価セットには、次の列が必要です。

  • request

また、 mlflow.evaluate()の呼び出しで model 引数を使用しない場合は、 response または traceも指定する必要があります。

relevance_to_query の出力

各質問に対して、次のメトリクスが計算されます。

データフィールド

タイプ

説明

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と判断された割合。

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

groundedness LLM ジャッジは、生成された応答が取得されたコンテキストと事実上一致しているかどうかについて、バイナリ評価と書面による理論的根拠を返します。

groundedness に必要な入力

グラウンドトゥルースは必要ありません。

入力評価セットには、次の列が必要です。

  • request

また、 mlflow.evaluate()の呼び出しで model 引数を使用しない場合は、 responseretrieved_context[].contentのいずれかまたは両方を trace または両方指定する必要があります。

groundedness の出力

各質問に対して、次のメトリクスが計算されます。

データフィールド

タイプ

説明

response/llm_judged/groundedness/rating

string

yes 取得されたコンテキストが生成されたレスポンスのすべてまたはほとんどすべてをサポートしている場合、 no サポートされていない場合。

response/llm_judged/groundedness/rationale

string

LLMの書面による推論は、 yes または no

response/llm_judged/groundedness/error_message

string

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

評価セット全体に対して、次のメトリクスが計算されます。

メトリクス名

タイプ

説明

response/llm_judged/groundedness/rating/percentage

float, [0, 1]

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

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

safety LLMの裁判官は、生成された回答に有害または有害なコンテンツが含まれているかどうかについて、バイナリ評価と書面による根拠を返します。

safety に必要な入力

グラウンドトゥルースは必要ありません。

入力評価セットには、次の列が必要です。

  • request

また、 mlflow.evaluate()の呼び出しで model 引数を使用しない場合は、 response または traceも指定する必要があります。

safety の出力

各質問に対して、次のメトリクスが計算されます。

データフィールド

タイプ

説明

response/llm_judged/safety/rating

string

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

response/llm_judged/safety/rationale

string

LLMの書面による推論は、 yes または no

response/llm_judged/safety/error_message

string

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

評価セット全体に対して、次のメトリクスが計算されます。

メトリクス名

タイプ

説明

response/llm_judged/safety/rating/average

float, [0, 1]

yesと判断された全質問の割合。

パフォーマンス指標

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

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

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

トークン数は、トレースが使用可能な場合にのみ計算されます。 mlflow.evaluate()の呼び出しに model 引数が含まれている場合は、トレースが自動的に生成されます。評価データセットに trace 列を直接指定することもできます。

各質問に対して、次のメトリクスが計算されます。

データフィールド

タイプ

説明

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

すべての質問の平均値。

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

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

レイテンシは、トレースが使用可能な場合にのみ計算されます。 mlflow.evaluate()の呼び出しに model 引数が含まれている場合は、トレースが自動的に生成されます。評価データセットに trace 列を直接指定することもできます。

各質問に対して、次のメトリクスが計算されます。

名前

説明

agent/latency_seconds

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

評価セット全体に対して、次のメトリクスが計算されます。

メトリクス名

説明

agent/latency_seconds/average

すべての質問の平均値

カスタムジャッジメトリクス

カスタムジャッジを作成して、ユースケースに固有の評価を実行できます。 詳細については、「 カスタム LLM ジャッジの作成」を参照してください

カスタムジャッジによって生成される出力は、その assessment_typeANSWER 、または RETRIEVALによって異なります。

ANSWER評価のためのカスタムLLMジャッジ

ANSWER評価用のカスタムLLMジャッジは、各質問の回答を評価します。

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

データフィールド

タイプ

説明

response/llm_judged/{assessment_name}/rating

string

yes または no

response/llm_judged/{assessment_name}/rationale

string

LLMの書面による推論は、 yes または no

response/llm_judged/{assessment_name}/error_message

string

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

評価セット全体に対して、次のメトリクスが計算されます。

メトリクス名

タイプ

説明

response/llm_judged/{assessment_name}/rating/percentage

float, [0, 1]

すべての質問で、{assessment_name}が yesと判断された割合。

検索評価のためのカスタムLLMジャッジ

RETRIEVAL評価用のカスタム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ジャッジを支援するモデルに関する情報

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

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

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

  • パートナー提供の AI 支援機能 を無効にすると、LLM の裁判官がパートナー提供モデルを呼び出すことができなくなります。

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

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