メインコンテンツまでスキップ

RAGアプリケーションの品質を向上

この記事では、検索拡張生成(RAG)アプリケーションの品質を向上させるために各コンポーネントを改善する方法の概要を説明します。

オフラインのデータパイプラインとオンラインのRAGチェーンの両方で、あらゆる点で調整すべき無数の「ノブ」があります。他にも無数のものがありますが、この記事では、RAGアプリケーションの品質に最も大きな影響を与える最も重要なノブに焦点を当てています。Databricksは、これらのノブから始めることをお勧めします。

2種類の品質に関する考慮事項

概念的な観点からは、RAG の品質調整項目を 2 つの主要な品質問題の観点で見るとわかりやすいです。

  • 取得品質:特定の取得クエリに対して最も関連性の高い情報を取得していますか?

    LLMに提供されるコンテキストに重要な情報が欠けているか、余分な情報が含まれている場合、高品質のRAG出力を生成することは困難です。

  • 生成品質:取得された情報と元のユーザーのクエリが与えられた場合、LLMは可能な限り最も正確で一貫性のある役立つ応答を生成していますか?

    ここでの問題は、ハルシネーション、一貫性のない出力、またはユーザーのクエリに直接対処できないといった形で現れる可能性があります。

RAGアプリには、品質の課題に対処するために反復可能な2つのコンポーネントがあります: データパイプラインとRAGチェーン。取得の問題(データパイプラインを更新するだけ)と生成の問題(RAGチェーンを更新)を明確に区分けできると考えがちです。しかし、現実はより微妙な点があります。取得品質は、データパイプライン(たとえば、解析/チャンク化戦略、メタデータ戦略、エンベディングモデル)とRAGチェーン(たとえば、ユーザーのクエリ変換、取得されるチャンクの数、再ランキング)の両方によって影響を受ける可能性があります。同様に、生成品質は、不適切な取得(たとえば、関連性のない情報や不足している情報がモデルの出力に影響を与えるなど)によって必ず影響を受けます。

この重複は、RAGの品質改善に対する全体的なアプローチの必要性を強調しています。データパイプラインとRAGチェーンの両方でどのコンポーネントを変更すべきか、およびこれらの変更が全体的なソリューションにどのように影響するかを理解することで、RAG出力品質を向上させるための的を絞った更新を行うことができます。

データパイプラインの品質に関する考慮事項

品質に影響を与えるデータパイプラインのコンポーネントの図。

データパイプラインに関する主な考慮事項:

  • 入力データコーパスの構成。
  • 生データがどのように抽出され、使用可能な形式(たとえば、PDFドキュメントの解析)に変換されるか。
  • ドキュメントをより小さなチャンクに分割する方法、およびそれらのチャンクのフォーマット方法(例:チャンク戦略、チャンクサイズ)。
  • 各ドキュメントまたはチャンクから抽出されたメタデータ(セクションタイトルやドキュメントタイトルなど)。このメタデータが各チャンクにどのように含まれるか(または含まれないか)。
  • テキストをベクトル表現に変換し、類似性検索に使用される埋め込みモデル。

RAGチェーン

品質に影響するRAGチェーンのコンポーネントの図。

  • LLMの選択と、そのパラメーター(たとえば、温度や最大トークン数など)。
  • 取得パラメーター(例えば、取得されるチャンクまたはドキュメントの数)。
  • 取得アプローチ(例: キーワード検索、ハイブリッド検索、セマンティック検索、ユーザーのクエリーの書き換え、ユーザーのクエリーをフィルターへの変換、または再ランキング)。
  • LLMが質の高い出力を生成するように、取得したコンテキストでプロンプトをフォーマットする方法。