Databricks での Retrieval Augmented Generation (RAG)
この記事では、取得拡張生成 (RAG) の概要と、Databricks での RAG アプリケーションのサポートについて説明します。
Retrieval Augmented Generationとは?
RAGは、大規模言語モデル(LLM)と外部知識検索を組み合わせた 生成AI設計パターン です。 RAGは、リアルタイムデータを生成AIアプリケーションに接続するために必要です。 そうすることで、推論時にデータをコンテキストとしてLLMに提供することで、アプリケーションの精度と品質が向上します。
Databricksプラットフォームには、次のRAGシナリオをサポートする統合ツールセットが用意されています。
RAGの種類 |
説明 |
使用例 |
---|---|---|
非構造化データ |
ドキュメントの使用 - PDF、Wiki、Web サイトのコンテンツ、Google または Microsoft Office ドキュメントなど。 |
製品ドキュメントに対するチャットボット |
構造化データ |
表形式データの使用 - デルタ テーブル、既存のアプリケーション APIsからのデータ。 |
注文状況を確認するチャットボット |
ツールと関数呼び出し |
サードパーティまたは内部 APIs を呼び出して、特定のタスクを実行したり、ステータスを更新したりします。 たとえば、計算を実行したり、ビジネス ワークフローをトリガーしたりします。 |
注文するチャットボット |
エージェント |
LLMを使用して一連のアクションを選択することにより、ユーザーのクエリーに応答する方法を動的に決定します。 |
顧客サービスエージェントに代わるチャットボット |
RAGアプリケーションアーキテクチャ
次に、RAGアプリケーションを構成するコンポーネントを示します。
RAGアプリケーションでは、以下を実行するためにパイプラインとチェーンコンポーネントが必要です。
インデキシング ソースからデータを取り込み、インデックスを作成するパイプライン。 このデータは、構造化データでも非構造化データでもかまいません。
検索と生成 これが実際のRAGチェーンです。 これは、ユーザークエリーを受け取り、インデックスから類似したデータを取得し、クエリーとともにそのデータをLLMモデルに渡します。
以下の図は、これらのコアコンポーネントを示しています。
非構造化データRAGの例
次のセクションでは、非構造化データRAGの例のコンテキストで、インデックス作成パイプラインとRAGチェーンの詳細について説明します。
RAGアプリでのインデックス作成パイプライン
次のステップでは、インデックス作成パイプラインについて説明します。
独自のデータソースからデータを取り込みます。
データを、基本 LLM のコンテキスト ウィンドウに収まるチャンクに分割します。 このステップには、データの解析とメタデータの抽出も含まれます。 このデータは、一般に、基礎的な LLM がトレーニングされるナレッジ ベースと呼ばれます。
埋め込みモデルを使用して、データチャンクのベクトル埋め込みを作成します。
埋め込みとメタデータをベクターデータベースに保存して、RAGチェーンによるクエリからアクセスできるようにします。
RAGチェーンを使用した検索
インデックスが準備されたら、アプリケーションのRAGチェーンを提供して質問に応答できます。 次のステップと図は、RAGアプリケーションが着信要求にどのように応答するかを示しています。
ナレッジ ベースにデータを埋め込むために使用したのと同じ埋め込みモデルを使用して、要求を埋め込みます。
クエリー The Vector Database を使用して、埋め込まれたリクエストと Vector データベース内の埋め込みデータチャンク間の類似性検索を行います。
要求に最も関連性の高いデータ チャンクを取得します。
関連するデータチャンクとリクエストをカスタマイズされたLLMにフィードします。 データチャンクは、LLMが適切な応答を生成するのに役立つコンテキストを提供します。 多くの場合、LLMには応答のフォーマット方法のテンプレートがあります。
応答を生成します。
次の図は、このプロセスを示しています。