AI開発におけるRAGの紹介

この記事では、検索拡張生成 (RAG) の概要、その仕組み、および主要な概念について説明します。

検索拡張生成とは

RAG は、大規模言語モデル (LLM) が外部情報ソースから取得したサポート データを使用してユーザーのプロンプトを拡張し、強化された応答を生成できるようにする手法です。 RAG は、取得した情報を組み込むことで、プロンプトに追加のコンテキストを追加しない場合に比べて、LLM がより正確で高品質の応答を生成できるようにします。

たとえば、従業員が会社の機密文書に関する質問に答えるのを支援するために、質疑応答のチャットボットを構築しているとします。 スタンドアロンの LLM は、これらのドキュメントの内容について特別なトレーニングを受けていない場合は、そのドキュメントの内容に関する質問に正確に答えることができません。 LLM は情報不足のために回答を拒否したり、さらに悪いことに誤った応答を生成する可能性があります。

RAG は、まずユーザーのクエリに基づいて会社のドキュメントから関連情報を取得し、次に取得した情報を追加のコンテキストとして LLM に提供することで、この問題に対処します。 これにより、LLM は関連文書に記載されている具体的な詳細を活用して、より正確な回答を生成できるようになります。 本質的には、RAG により、LLM は取得した情報を「参照」して回答を作成できます。

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

RAG アプリケーションは複合 AI システムの一例です。モデル単体の言語機能を他のツールや手順と組み合わせることで拡張します。

スタンドアロン LLM を使用する場合、ユーザーは質問などのリクエストを LLM に送信し、LLM はトレーニング データのみに基づいて回答を返します。

最も基本的な形式では、RAG アプリケーションでは次の手順が実行されます。

  • 検索:ユーザーのリクエストを使用して、外部の情報ソースを照会します。 これは、ベクター ストアのクエリ、テキストに対するキーワード検索の実行、または SQL データベースのクエリを実行することを意味します。 検索ステップの目的は、LLM が有用な応答を提供するのに役立つサポート データを取得することです。

  • 拡張: 検索ステップからのサポートデータは、多くの場合、追加の書式設定と LLM への指示を含むテンプレートを使用して、ユーザーのリクエストと結合され、プロンプトが作成されます。

  • 生成: 結果のプロンプトは LLM に渡され、LLM はユーザーの要求に対する応答を生成します。

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

これは RAG プロセスの簡略化された概要ですが、RAG アプリケーションの実装には多くの複雑なタスクが伴うことに注意することが重要です。 RAG での使用に適した状態にソース データを前処理し、データを効果的に取得し、拡張プロンプトをフォーマットし、生成された応答を評価するには、慎重な検討と労力が必要です。 これらのトピックについては、このガイドの後のセクションで詳しく説明します。

なぜRAGを使用するのですか?

次の表は、スタンドアロン LLM と比較して RAG を使用することによる利点を示しています。

LLMのみで

RAGでのLLMの使用

プロプライエタリな知識はありません。 LLMは通常、公開されているデータでトレーニングされているため、企業の内部データや専有データに関する質問に正確に答えることはできません。

RAG アプリケーションは独自のデータを組み込むことができます。RAGアプリケーションは、メモ、電子メール、設計文書などの独自の文書をLLMに提供し、それらの文書に関する質問に答えることができます。

知識はリアルタイムで更新されません。LLMは、トレーニング後に発生したイベントに関する情報にアクセスできません。 たとえば、単独の LLM では、今日の株価の動向について何も知ることはできません。

RAG アプリケーションはリアルタイムデータにアクセスできます。RAGアプリケーションは、更新されたデータソースからタイムリーな情報をLLMに提供できるため、トレーニングの締め切り日を過ぎたイベントに関する有用な回答を提供できます。

引用の欠如: LLM は応答時に特定の情報源を引用することができないため、ユーザーは応答が事実に基づいているか幻覚であるかを確認できません。

RAG はソースを引用できます: RAG アプリケーションの一部として使用される場合、LLM はソースを引用するよう求められることがあります。

データアクセス制御(ACL)の欠如: LLMだけでは、特定のユーザー権限に基づいて、ユーザーごとに異なる回答を確実に提供することはできません。

RAG はデータ セキュリティ/ACL を可能にします。取得ステップは、ユーザーがアクセスするための資格情報を持つ情報のみを検索するように設計できるため、RAG アプリケーションは個人情報または独自の情報を選択的に取得できます。

RAGの種類

RAGアーキテクチャは、次の2種類のサポートデータを処理できます。

構造化データ

非構造化データ

定義

特定のスキーマを持つ行と列に配置された表形式のデータ (データベース内のテーブルなど)。

テキストや画像を含むドキュメントや、オーディオやビデオなどのマルチメディアコンテンツなど、特定の構造や組織を持たないデータ。

データソースの例

  • BIまたはデータウェアハウスシステム内の顧客レコード

  • SQL データベースからのトランザクション データ

  • アプリケーションAPIs (SAP、Salesforce など) からのデータ

  • BIまたはデータウェアハウスシステム内の顧客レコード

  • SQL データベースからのトランザクション データ

  • アプリケーションAPIs (SAP、Salesforce など) からのデータ

  • PDFファイル

  • GoogleまたはMicrosoft Officeドキュメント

  • ウィキ

  • 画像

  • 動画

RAGのデータの選択は、ユースケースによって異なります。 クックブックの残りの部分では、非構造化データのRAGに焦点を当てています。