Databricks生成AIクックブック - ステップ5: 品質問題の根本原因の特定

[Step 5: Identify the root cause of quality issues — Databricks Generative AI Cookbook](https://ai-cookbook.io/nbs/5-hands-on-improve-quality-step-1.html) [2024/6/25時点]の翻訳です。

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

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

# ステップ5: 品質問題の根本原因の特定

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

**想定時間:** 60分

## 要件

1. MLflowであなたのPOCの評価セットが利用できる
    - これまでのステップを実行しているのであれば当てはまっています！
1. 以前のステップの全ての要件

:::note info
[**コードレポジトリ**](https://github.com/databricks/genai-cookbook/tree/main/rag_app_sample_code)
[こちら](https://github.com/databricks/genai-cookbook/tree/main/rag_app_sample_code)からこのセクションで参照しているすべてのサンプルコードにアクセスすることができます。
:::

## 概要

根本原因の主要な2つのカテゴリーは収集と生成です。最初にどこにフォーカスすべきかを特定するために、あなたのアプリの品質にインパクトを与える最頻出の根本原因を特定するために、以前の[ステップ](https://qiita.com/taka_yayoi/items/c53863b12652a72d0607)で実行した[Mosaic AI Agent Evaluation](https://docs.databricks.com/ja/generative-ai/agent-evaluation/index.html)のLLM審判のアウトプットを活用します。

あなたの評価セットのそれぞれの行は以下のようにタグ付けされることになります:

1. **全体的な評価:** ![](https://ai-cookbook.io/_images/pass.png)か![](https://ai-cookbook.io/_images/fail.png)
1. **根本原因:** `Improve Retrieval`か`Improve Generation`
1. **根本原因の理由付け:** なぜ根本原因として選ばれたのかに関する簡単な説明

## 手順

このアプローチは、`expected_response`に格納されている質問に対する正解のレスポンスがあなたの評価セットに含まれているかどうかに依存します。`expected_response`が利用できる場合には、以下の最初の表を使ってください。そうでない場合には、2番目の表を使ってください。

1. [`B_quality_iteration/01_root_cause_quality_issues`](https://github.com/databricks/genai-cookbook/blob/main/rag_app_sample_code/B_quality_iteration/01_root_cause_quality_issues.py)ノートブックを開きます。
1. `expected_response`があるか無いかに応じて、あなたのユースケースに適したセルを実行します。
1. あなたのアプリケーションで際頻出の根本原因を特定するために出力テーブルをレビューします。
1. それぞれの根本原因に対して、さらにデバッグを行い、潜在的な修正案を特定するために以下のステップに従ってください。
    - [収集品質のデバッグ](https://qiita.com/taka_yayoi/items/758ba436168b08e184fc)
    - [生成品質のデバッグ](https://qiita.com/taka_yayoi/items/2a14ef50cec340502fec)

### 利用可能な正解データ*を用いた*根本原因分析

:::note info
**注意**
それぞれの質問で収集されるべきドキュメントを示す人間によってラベル付けされた正解データがある場合には、オプションとして`retrieval/llm_judged/chunk_relevance/precision/average`を`retrieval/ground_truth/document_recall/average`で置き換えることができます。
:::

| 適切なチャンクの精度 | 事実への立脚度 | 正しさ | クエリーへの適切性 | 問題の要約 | 根本原因 | 全体的評価 |
|:--|:--|:--|:--|:--|:--|:--|
| <50%  |  ❌ | ❌  | ❌  | **収集が貧弱。**  | `Improve Retrieval`  |  ![](https://ai-cookbook.io/_images/fail.png) |
| <50%  | ❌  | ❌  |  ✅ | LLMは適切なレスポンシスを生成しているが**収集が貧弱。** 例えば、LLMが解答の際に収集を無視し、トレーニングした知識を使うなど。| `Improve Retrieval`  |  ![](https://ai-cookbook.io/_images/fail.png) |
| <50%  | ❌  | ✅  |  ✅か❌ |  **収集の品質が貧弱**にもかかわらずLLMが適切な回答を得ている。 | `Improve Retrieval`  | ![](https://ai-cookbook.io/_images/fail.png)  |
| <50%  |  ✅  | ❌  | ❌  | レスポンスは収集結果に立脚しているが**収集が貧弱。**  | `Improve Retrieval`  |  ![](https://ai-cookbook.io/_images/fail.png) |
| <50%  |  ✅ | 	❌  |  ✅ |  収集コンテキストに立脚した適切なレスポンスであるが、**収集結果が期待される回答に関連づけられていない可能性あり。** |  `Improve Retrieval` | ![](https://ai-cookbook.io/_images/fail.png)  |
| <50%  |  ✅  |  ✅  |  ✅か❌ | LLMが正しい回答を生成するのに十分な情報を収集できている。🎉  |  N/A | ![](https://ai-cookbook.io/_images/pass.png)  |
|  >50% |  ❌ |  ❌ |  ✅か❌  | ハルシネーション  |  `Improve Generation` |  ![](https://ai-cookbook.io/_images/fail.png) |
| >50%  | ❌  |  ✅ |   ✅か❌ | ハルシネーション、正しいがコンテキストにない詳細を生成  | `Improve Generation`  | ![](https://ai-cookbook.io/_images/fail.png)  |
| >50%  | ✅   | ❌  |  ❌ | 収集は問題ないが、LLMが適切なレスポンスを生成しない。  |  `Improve Generation` | ![](https://ai-cookbook.io/_images/fail.png)  |
| >50%  |  ✅  | ❌  | ✅   | 収集は問題なく適切なレスポンスだが間違っている。  | `Improve Generation`  |  ![](https://ai-cookbook.io/_images/fail.png) |
|>50%   | ✅   | ✅   | ✅   | 問題なし！ 🎉  |  N/A | ![](https://ai-cookbook.io/_images/pass.png)  |

### 利用可能な正解データ*を用いない*根本原因分析

| 適切なチャンクの精度 | 事実への立脚度 |  クエリーへの適切性 | 問題の要約 | 根本原因 | 全体的評価 |
|:--|:--|:--|:--|:--|:--|
| <50%|❌ | ❌  | 収集品質が貧弱 | `Improve Retrieval`  | ![](https://ai-cookbook.io/_images/fail.png)  |
| <50%|❌ | ✅  | 収集品質が貧弱 | `Improve Retrieval`  | ![](https://ai-cookbook.io/_images/fail.png)  |
| <50%|✅ | ❌  | レスポンスは収集結果に立脚しているが、**収集が貧弱。** |  `Improve Retrieval` | ![](https://ai-cookbook.io/_images/fail.png)  |
|<50% | ✅|✅   | 適切なレスポンスは収集されたコンテキストに立脚しているが、**収集が貧弱。** |  `Improve Retrieval` | ![](https://ai-cookbook.io/_images/pass.png)  |
| >50%| ❌| ❌  | ハルシネーション | `Improve Generation`  | ![](https://ai-cookbook.io/_images/fail.png)  |
|>50% | ❌| ✅  | ハルシネーション | `Improve Generation`  |![](https://ai-cookbook.io/_images/fail.png)   |
|>50% |✅ |  ❌ | 収集には問題なく、収集結果に立脚しているが、LLMが適切なレスポンスを生成しない。 | `Improve Generation`  | ![](https://ai-cookbook.io/_images/fail.png)  |
|>50% | ✅| ✅  | 収集に問題なく、レスポンスも適切。回答が正しいかどうかを判断するための正解データを収集しましょう。 | なし  | ![](https://ai-cookbook.io/_images/pass.png)  |

- [目次](https://qiita.com/taka_yayoi/items/36c51bce8f33a70cf204#%E7%9B%AE%E6%AC%A1)
- 前のセクション: [ステップ4: POCの品質の評価](https://qiita.com/taka_yayoi/items/c53863b12652a72d0607)
- 次のセクション: [収集品質のデバッグ](https://qiita.com/taka_yayoi/items/758ba436168b08e184fc)


### はじめてのDatabricks

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

### Databricks無料トライアル

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