AI開発におけるRAGの紹介

この記事では、RAG(Retrieval-augmented generation)の概要、その概要、仕組み、主要な概念について説明します。

検索拡張生成とは?

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のみの場合

LLMとRAGの併用

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

RAGアプリケーションには、独自のデータを組み込むことができます。 RAGアプリケーションは、メモ、Eメール、設計ドキュメントなどの独自のドキュメントを 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に焦点を当てています。