RAGアプリケーションの品質向上
この記事では、検索拡張世代 (RAG) アプリケーションの品質を向上させるために各コンポーネントを調整する方法の概要を説明します。
オフライン データパイプラインとオンライン RAG チェーンの両方において、あらゆるポイントで調整できる「ノブ」が無数にあります。 他にも数え切れないほどありますが、この記事では、RAGアプリケーションの品質に最も大きな影響を与える最も重要なノブに焦点を当てています。 Databricks では、これらのノブから始めることをお勧めします。
品質に関する 2 つの考慮事項
概念的な観点からは、RAG品質ノブを2つの主要な品質問題のレンズを通して見ると便利です。
検索品質:特定の検索クエリに対して最も関連性の高い情報を取得していますか?
LLM に提供されるコンテキストに重要な情報が欠落していたり、余分な情報が含まれていたりすると、高品質の RAG 出力を生成することは困難です。
生成品質:取得した情報と元のユーザークエリに基づいて、LLM は可能な限り最も正確で一貫性があり、役立つ応答を生成していますか?
ここでの問題は、幻覚、一貫性のない出力、またはユーザークエリに直接対処できないという形で現れる可能性があります。
RAG アプリには、品質の課題に対処するために反復できる 2 つのコンポーネント、データパイプラインとチェーンがあります。 取得の問題 (データパイプラインを更新するだけ) と生成の問題 (RAG チェーンを更新する) を明確に区別すると仮定したくなります。 しかし、現実はもっと微妙です。 取得品質は、データパイプライン (解析/チャンク化戦略、メタデータ戦略、埋め込みモデルなど) と RAG チェーン (ユーザー クエリの変換、取得されたチャンクの数、再ランク付けなど) の両方によって影響を受ける可能性があります。 同様に、生成品質は、検索の質の低さ(たとえば、モデル出力に影響する無関係な情報や欠落した情報)によって必ず影響を受けます。
この重複は、RAGの品質向上に対する全体的なアプローチの必要性を強調しています。 データパイプラインと RAG チェーンの両方でどのコンポーネントを変更する必要があるか、またこれらの変更がソリューション全体にどのような影響を与えるかを理解することで、対象を絞った更新を行って RAG 出力の品質を向上させることができます。
データパイプラインの品質に関する考慮事項
![品質に影響するデータパイプラインのコンポーネントの図。](../_images/data-pipeline-quality.png)
データパイプラインに関する重要な考慮事項:
入力データコーパスの構成。
生データが抽出され、使用可能な形式に変換される方法 (たとえば、PDF ドキュメントの解析)。
ドキュメントを小さなチャンクに分割する方法と、それらのチャンクの書式設定方法(チャンク戦略やチャンクサイズなど)。
各ドキュメントやチャンクについて抽出されたメタデータ (セクション タイトルやドキュメント タイトルなど)。 このメタデータを各チャンクに含める (または含めない) 方法。
類似検索のためにテキストをベクトル表現に変換するために使用される埋め込みモデル。
ラグチェーン
![品質に影響を与えるRAGチェーンのコンポーネントの図。](../_images/rag-chain-quality.png)
LLMとその引数 (たとえば、温度と最大トークン) の選択。
取得されたチャンクまたはドキュメントの数など、取得されたチャンクまたはドキュメントの数。
検索アプローチ (キーワード検索、ハイブリッド検索、セマンティック検索、ユーザーのクエリの書き換え、ユーザーのクエリのフィルターへの変換、再ランク付けなど)。
取得したコンテキストを使用してプロンプトをフォーマットし、LLM を高品質な出力に導く方法。