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

DatabricksでのRAG (検索拡張生成)

Retrieval-augmented generation (RAG) は、大規模言語モデル (LLM) とリアルタイムのデータ検索を組み合わせて、より正確で最新かつ文脈的に関連性のある応答を生成する強力な手法です。

このアプローチは、企業固有の情報、頻繁に変更される情報、またはドメイン固有の情報に関する質問に答える場合に特に役立ちます。

検索拡張生成とは?

最も単純な形式では、RAGエージェントは以下のことを行います。

  1. 検索 :ユーザーのリクエストを使用して、ベクトルストア、キーワード検索、SQLデータベースなどの外部ナレッジベースに対してクエリを実行します。LLM の回答を裏付けるデータを取得することが目標です。
  2. **拡張**:サポートデータがユーザーのリクエストと結合され、多くの場合、追加の書式設定と LLM への指示を含むテンプレートを使用して、プロンプトを作成します。
  3. 生成 :プロンプトがLLMに渡され、ユーザーのリクエストに対する応答が生成されます。

ユーザー要求からデータの取得と応答までのRAGアプリケーションの流れ。

RAG のメリット

RAGは以下の方法でLLMを改善します:

  • 独自の知識: 特定分野の質問に答えるため、LLM の初期学習に使用されていない独自の情報(メモ、メール、文書など)を RAG に含めることができます。
  • 最新情報 : RAGアプリケーションは、更新された知識ベースからLLMに情報を提供できます。
  • 情報源の引用: RAG を利用すると、LLM は特定の情報源を引用することができ、ユーザーが回答の正確さを確認できます。
  • データセキュリティとアクセス制御リスト(ACL): ユーザー認証情報に基づいて個人情報や専有情報が選択的に取得されるように検索ステップを設計できます。

RAG のコンポーネント

一般的なRAGアプリケーションには、いくつかの段階があります。

  1. データパイプライン :ドキュメント、テーブル、その他のデータを前処理してインデックス化し、高速で正確な検索を可能にします。

  2. RAGチェーン (取得、拡張、生成) :一連のステップ(またはチェーン)を呼び出します:

    • ユーザーの質問を理解してください。
    • サポートデータを取得します。
    • プロンプトをサポートデータで拡張します。
    • 拡張プロンプトを使用してLLMから回答を生成します。
  3. **評価とモニタリング**:RAGアプリケーションの品質、コスト、レイテンシーを評価して、ビジネス要件を満たしていることを確認します。

  4. **ガバナンスとLLMOps**: データリネージとアクセス制御を含め、各コンポーネントのライフサイクルを追跡および管理します。

RAGアプリケーションのコンポーネント図。

RAGデータの種類:構造化と非構造化

RAG アーキテクチャでは、非構造化サポートデータと構造化サポートデータのいずれかを使用できます。RAG で使用するデータはユースケースによって異なります。

非構造化データ: 特定の構造や組織を持たないデータ。

  • PDF
  • Google/Office ドキュメント
  • Wiki
  • 画像
  • 動画

構造化データ: データベースのテーブルなど、特定のスキーマに従って行と列に配置された表形式のデータ。

  • BI またはデータウェアハウスシステムの顧客レコード
  • SQL データベースのトランザクションデータ
  • アプリケーション API(SAP、Salesforce など)から取得したデータ

評価とモニタリング

評価とモニタリングは、RAG アプリケーションが品質、コスト、レイテンシーの要件を満たしているかどうかを判断するのに役立ちます。評価は開発中に行われ、モニタリングはアプリケーションが本番環境にデプロイされた後に行われます。

非構造化データを使用した RAG には、品質に影響を与える多くのコンポーネントがあります。たとえば、データフォーマットの変更は、取得されるチャンクや、LLM の関連する応答を生成する能力に影響を与える可能性があります。そのため、アプリケーション全体に加えて個々のコンポーネントを評価することが重要です。

情報については、Agent Evaluation (MLflow 2)を参照してください。

DatabricksのRAG

Databricks は、RAG 開発のためのエンドツーエンドプラットフォームを提供しており、以下が含まれます。

次のステップ