ステップ 5 (取得). 取得品質をデバッグする方法
このページでは、取得の問題の根本原因を特定する方法について説明します。 このページは、根本原因の分析が根本原因 Improve Retrieval
を示している場合に使用します。
取得品質は、間違いなく RAG アプリケーションの最も重要なコンポーネントです。 特定のクエリに対して最も関連性の高いチャンクが返されない場合、高品質の応答を生成するために必要な情報に LLM がアクセスできていません。 品質の悪い取得は、無関係、不完全、または非現実的な出力につながる可能性があります。 このステップでは、基になるデータを手作業で分析する必要があります。 Mosaic AI Agent Framework を使うと、データ プラットフォーム (Unity Catalog や Vector Search など) 間の緊密な統合および MLflow (LLM 評価や MLflow トレースなど) での実験追跡により、トラブルシューティングがはるかに簡単になります。
手順
取得品質に関する問題への対処は、次の手順のようにして行います。
- B_quality_iteration/01_root_cause_quality_issues ノートブックを開きます。
- クエリを使って、取得品質の問題が発生したレコードの MLflow トレースを読み込みます。
- 各レコードについて、取得したチャンクを手作業で調べます。 可能であれば、それらをグラウンド トゥルースの取得ドキュメントと比較します。
- 取得品質が低いクエリのパターンまたは共通する問題を探します。 例:
- 関連情報がベクトル データベースにまったくありません。
- 取得クエリで返されるチャンクまたはドキュメントの数が不十分です。
- チャンクが小さすぎて、十分なコンテキストがありません。
- チャンクが大きすぎて、関連のない複数のトピックが含まれています。
- 埋め込みモデルが、ドメイン固有の用語のセマンティック類似性をキャプチャできません。
- 特定された問題に基づいて、潜在的な根本原因と、それに対応する修正の仮説を立てます。 ガイダンスについては、「品質が悪い取得の一般的な理由」をご覧ください。
- 変更を実装して評価する手順に従って、考えられる修正を実装し、評価します。 これには、データ パイプラインの変更 (チャンク サイズの調整や、異なる埋め込みモデルの試行など) や RAG チェーンの変更 (ハイブリッド検索の実装や、より多くのチャンクの取得など) が含まれる場合があります。
- それでも取得品質に満足できない場合は、目的のパフォーマンスが達成されるまで手順 4 と 5 を繰り返して、次に有望な修正を見つけます。
- 根本原因の分析をもう一度実行して、チェーン全体に対処の必要がある根本原因が他にあるかどうかを判断します。
品質が悪い取得の一般的な理由
次の表は、デバッグ手順と、一般的な取得の問題に対する考えられる修正の一覧です。 修正はコンポーネント別に分類されています。
- データ パイプライン
- チェーン構成
- チェーン コード
コンポーネントでは、変更を実装して評価するステップのどの手順に従う必要があるかが定義されています。
取得の問題 | デバッグ手順 | 考えられる解決策 |
---|---|---|
チャンクが小さすぎる | - 不完全なカットオフ情報がないかチャンクを調べます。 | - データ パイプライン チャンク サイズまたは重複を増やします。 - データ パイプライン 別のチャンク戦略をお試しください。 |
チャンクが大きすぎる | - 取得されたチャンクに、関連のない複数のトピックが含まれるかどうかをチェックします。 | - データ パイプライン チャンク サイズを減らします。 - データ パイプライン 関連性のないトピック (セマンティック チャンクなど) が混在しないようにチャンク戦略を改善します。 |
チャンクに、取得元のテキストに関する十分な情報がない | - 各チャンクのコンテキストの欠如が、取得された結果に混乱やあいまいさを引き起こしているかを評価します。 | - データ パイプライン 各チャンク (セクション タイトルなど) にメタデータとタイトルを追加してみます。 - チェーン構成 より多くのチャンクを取得し、コンテキスト サイズがより大きい LLM を使用します。 |
埋め込みモデルがユーザー クエリのドメインまたはキー フレーズを正確に理解しない | - 同じクエリに対してセマンティック類似性のあるチャンクが取得されているかをチェックします。 | - データ パイプライン さまざまな埋め込みモデルを試します。 - チェーン構成 ハイブリッド検索を試します。 - チェーン コード 取得結果のオーバーフェッチと再ランク付けを行います。 上位の再ランク付けされた結果のみを LLM コンテキストにフィードします。 - データ パイプライン ドメイン固有のデータの埋め込みモデルを微調整します。 |
関連情報がベクトル データベースにない | - 関連するドキュメントやセクションが、ベクトル データベースから欠落していないかをチェックします。 | - データ パイプライン ベクトル データベースに関連するドキュメントをさらに追加します。 - データ パイプライン ドキュメント解析とメタデータの抽出を改善します。 |
取得クエリの構成が不適切である | - ユーザー クエリがセマンティック検索に直接使われている場合は、これらのクエリを分析し、あいまいさや特異度の欠如を調べます。 これは、生のユーザー クエリが会話の前の部分を参照する複数ターンの会話で簡単に発生する可能性があり、取得クエリとして直接使うのを不適切にします。 - クエリ用語が検索コーパスで使われている用語と一致するかどうかをチェックします。 |
- チェーン コード クエリの拡張または変換のアプローチを追加します (たとえば、ユーザー クエリの場合は、セマンティック検索の前にクエリを変換します)。 - チェーン コード 意図とエンティティを識別するためのクエリ解釈を追加します (たとえば、LLM を使用してメタデータ フィルタリングで使用するプロパティを抽出します)。 |
次のステップ
生成品質にも問題があることがわかった場合も、「ステップ 5 (品質). 生成品質をデバッグする方法」を行います。
特定されたすべての問題を解決したと思われる場合は、 Step 6 に進んでください。AI エージェントで品質修正を行い、評価します。