Databricks生成AIクックブック - 4.2. パフォーマンスの評価: メトリクスが重要です

[4\.2\. Assessing performance: Metrics that Matter — Databricks Generative AI Cookbook](https://ai-cookbook.io/nbs/4-evaluation-metrics.html) [2024/6/23時点]の翻訳です。

:::note warn
本書は著者が手動で翻訳したものであり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

> [Databricks生成AIクックブック](https://qiita.com/taka_yayoi/items/36c51bce8f33a70cf204)のコンテンツです。


評価セットを用いることで、以下を含む様々な数多くの次元であなたのRAGアプリケーションのパフォーマンスを計測できるようになります:

- **収集の品質:** 収集のメトリクスは、あなたのRAGアプリケーションが適切なサポートデータをどれだけうまく収集するのかを評価します。精度と再現率が２つのキーとなる収集メトリクスです。
- **レスポンスの品質:** レスポンス品質のメトリクスは、ユーザーのリクエストに対してRAGアプリケーションがどれだけ適切にレスポンスしたのかを評価します。レスポンスのメトリクスでは、例えば、結果の回答が正解データについて正確だったのか、収集されたコンテキストに対してレスポンスがどれだけ事実に立脚していたのか(LLMがハルシネーションしたのか)、レスポンスがどれだけ安全だったのか(毒性なし)を計測することができます。
- **システムのパフォーマンス(コストとレーテンシー)** メトリクスはRAGアプリケーションの全体的なコストとパフォーマンスをキャプチャします。全体的なレーテンシーやトークンの消費はチェーンのパフォーマンスメトリクスの例となります。

レスポンスと収集のメトリクスの両方を収集することが非常に重要です。あるRAGアプリケーションは適切なコンテンツを収集したとしてもレスポンスが貧弱な場合があります。また、間違った収集結果に基づいて優れたレスポンスを返すこともあります。両方のコンポーネントを計測することによってのみ、アプリケーションの問題を正確に診断、対応することができます。

これらのメトリクスのパフォーマンスを継続する2つのキーとなるアプローチが存在します:

- **決定論的な計測:** コストとレーテンシーは、アプリケーションのアウトプットに基づき決定論的に計算することができます。評価セットに、質問に対する回答が含まれているドキュメントのリストがあるのであれば、収集メトリクスのサブセットも決定論的に計算することができます。
- **LLM審判ベースの計測:** このアプローチでは、RAGアプリケーションの収集とレスポンスの品質を評価するために、別の[LLMが審判](https://arxiv.org/abs/2306.05685)として動作することになります。いくつかのLLMが回答の適切性を判定し、人間がラベル付けした正解データとアプリケーションのアウトプットを比較します。他のLLM審判は事実への立脚度を判断しますが、この場合はアプリケーションのアウトプットを評価するために人間がラベル付けした正解データを必要としません。

:::note warn
**重要**
LLM審判を効果的にするには、ユースケースを理解するようにチューニングする必要があります。これを行うためには、審判がどのような場合にうまく動作し、うまく動作しないのかを理解し、失敗するケースでの審判を改善するために注意深くなる必要があります。
:::

:::note info
[Mosaic AI Agent Evaluation](https://docs.databricks.com/generative-ai/agent-evaluation/index.html)は、このページで議論しているそれぞれのメトリックに対して、ホストされたLLM審判モデルを用いて、すぐに利用できる実装を提供します。Agent Evaluationのドキュメントでは、これらのメトリクスと審判がどのように実装されているのかの[詳細](https://docs.databricks.com/ja/generative-ai/agent-evaluation/llm-judge-metrics.html)と精度を高めるためにあなたのデータを用いて審判をチューニングする[機能](https://docs.databricks.com/ja/generative-ai/agent-evaluation/advanced-agent-eval.html#provide-examples-to-the-built-in-llm-judges)を提供しています。
:::

## 4.2.1. メトリックの概要

以下に、あなたのRAGアプリケーションの品質、コスト、レーテンシーを計測するためにDatabricksが推奨するメトリクスのサマリーを示します。これらのメトリクスは、[Mosaic AI Agent Evaluation](https://docs.databricks.com/generative-ai/agent-evaluation/index.html)で実装されています。

| 次元 | メトリック名 | 質問 | 計測方法 | 正解データが必要か？ |
|:--|:--|:--|:--|:--|
|収集   | `chunk_relevance/precision`  | [リトリーバーは関連するチャンクを見つけたか](https://docs.databricks.com/ja/generative-ai/agent-evaluation/llm-judge-metrics.html#chunk-relevance-precision)  |  LLM審判 |	✖️   |
|収集   | `document_recall`  |  [レトリーバーは既知の関連文書をいくつ見つけましたか？](https://docs.databricks.com/ja/generative-ai/agent-evaluation/llm-judge-metrics.html#chunk-relevance-precision) |  決定論的 | 	✔️  |
| レスポンス  |`correctness`   | [全体として、LLMは正確な答えを出しましたか？](https://docs.databricks.com/ja/generative-ai/agent-evaluation/llm-judge-metrics.html#correctness)  | LLM審判  | 	✔️  |
|  レスポンス | `relevance_to_query`  | [レスポンスはリクエストに関連していますか？](https://docs.databricks.com/ja/generative-ai/agent-evaluation/llm-judge-metrics.html#answer-relevance)  |  LLM審判 |  ✖️ |
| レスポンス  | `groundedness`  |  [その反応は幻覚ですか、それとも文脈に基づいていますか？](https://docs.databricks.com/ja/generative-ai/agent-evaluation/llm-judge-metrics.html#is-the-response-a-hallucination-or-is-it-grounded-in-context) | LLM審判  |  ✖️ |
|  レスポンス |  `safety` | [エージェントの回答に有害な内容はありますか？](https://docs.databricks.com/ja/generative-ai/agent-evaluation/llm-judge-metrics.html#safety)  |LLM審判   | ✖️  |
| コスト  | `total_token_count, total_input_token_count, total_output_token_count`  |  [RAGエージェントを実行するトークンのコストはいくらか](https://docs.databricks.com/ja/generative-ai/agent-evaluation/llm-judge-metrics.html#token-count) | 決定論的  |  ✖️ |
|  レーテンシー | `latency_seconds`  |  [RAGエージェントの実行の待ち時間はどれくらいか](https://docs.databricks.com/ja/generative-ai/agent-evaluation/llm-judge-metrics.html#latency)|  決定論的 |   ✖️|

### 4.2.1.1. 収集メトリクスの動作原理の理解

収集メトリクスは、あなたのリトリーバーが適切な結果を提供しているのかどうかの理解の助けとなります。収集メトリクスは精度と再現率をベースにしています。

| メトリック名 | 回答すべき質問 | 詳細 |
|:--|:--|:--|
| 精度  | 収集されたチャンクの何%がリクエストに適しているのか？  |  精度は、ユーザーのリクエストに実際に適応した収集ドキュメントの割合です。ユーザーのリクエストに対してそれぞれの収集チャンクの適切性を評価するためにLLM審判を活用することができます。 |
| 再現率  | 収集されたチャンクに正解ドキュメントの何%が含まれているのか？  | 再現率は、収集されたチャンクに含まれる正解ドキュメントの割合です。これは、結果の完全性の指標となります。  |

以下に素晴らしい[Wikipediaの記事](https://en.wikipedia.org/wiki/Precision_and_recall)から得た精度と再現率のクイックな入門書を示します。

精度(Precision)は、"収集したチャンクの内、これらのアイテムの何%がユーザーのクエリーに適合していたのか？"を計測します。精度の計算では、全ての適切なアイテムを知る必要はありません。

![](https://ai-cookbook.io/_images/2_img2.png)

再現率(Recall)は"ユーザーのクエリーに適切であることを知っている全てのドキュメントの内、何%がチャンクとして収集されたのか？"を計測します。再現率の計算には、全ての適切なアイテムを含めるための正解データが必要となります。

![](https://ai-cookbook.io/_images/3_img2.png)

* アイテムはドキュメント、あるいはドキュメントのチャンクとなります。

以下の例では、収集された3つの内2つがユーザークエリーに適したものでしたので、精度は0.66(2/3)となります。収集された文書には適切な4つの文書の内の2つが含まれたので、再現率は0.5(2/5)となります。
![](https://ai-cookbook.io/_images/1_img3.png)

- [目次](https://qiita.com/taka_yayoi/items/36c51bce8f33a70cf204#%E7%9B%AE%E6%AC%A1)
- 前のセクション: [4\.1\. "品質"の定義: 評価セット](https://qiita.com/taka_yayoi/items/8f4c2777a1151e1d7b6a)
- 次のセクション: [4\.3\. 計測の実現: サポートするインフラストラクチャ](https://qiita.com/taka_yayoi/items/e8c2b711a2ebe5bd1d1d)

### はじめてのDatabricks

[はじめてのDatabricks](https://qiita.com/taka_yayoi/items/8dc72d083edb879a5e5d)

### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)