AIモデルとプラットフォーム
大規模言語モデルにおけるRetrieval-Augmented Generationの深い掘り下げ
あなたはアナリストであり、大規模言語モデルにアクセスできます。言語モデルがもたらす可能性に興奮しています。しかし、最新の株価や現在のインフレ率について問うと、次のような回答が返ってきます。
「リアルタイムまたはカットオフ後のデータを提供することはできません。私の最後のトレーニングデータは2022年1月までです。」
大規模言語モデルは、どれほど言語力があっても、「今」の把握能力が欠けています。そして、速い世界では、「今」はすべてです。
研究によると、大規模事前トレーニング言語モデル(LLM)は、事実知識の宝庫でもあります。
彼らは多くのデータをトレーニングしたので、多くの事実や数字を吸収しています。ファインチューニングすると、さまざまなNLPタスクで驚くべき結果を達成できます。
しかし、ここに重要な点があります。彼らのトレーニングデータに保存されている知識にアクセスして操作する能力は、完璧ではありません。特に、タスクが知識集約型の場合、これらのモデルはより専門化されたアーキテクチャに後れを取ることがあります。世界中の本を持つ図書館にいるようなものですが、必要な本を見つけるためのカタログがないのです。
OpenAIのChatGPTがブラウジング機能を搭載
OpenAIがChatGPTのブラウジング機能を発表したことは、Retrieval-Augmented Generation(RAG)への大きな一歩です。ChatGPTが現在の権威ある情報をインターネットで検索できるようになったことで、RAGのアプローチが実現しました。動的に外部データを取得して、豊富な回答を提供するのです。
https://twitter.com/OpenAI/status/1707077710047216095
現在、PlusとEnterpriseユーザー向けに利用可能ですが、OpenAIはこの機能をすべてのユーザーに提供する予定です。GPT-4オプションの「Bingでブラウズ」を選択することで、ユーザーはこの機能を有効にできます。
プロンプトエンジニアリングは有効ですが不十分
プロンプトは、LLMの知識への入り口です。モデルに方向性を与え、回答の指針を提供します。しかし、効果的なプロンプトを作成することは、LLMから得たいものを得るための完全な解決策ではありません。では、プロンプトを書く際に考慮すべき良い実践を見ていきましょう。
- 明確性:明確に定義されたプロンプトは曖昧さを排除します。直截で、モデルがユーザーの意図を理解できるようにする必要があります。この明確性は、よりまとまりのある関連性のある回答に多くの場合翻訳されます。
- コンテキスト:特に長い入力の場合、指示の配置は出力に影響を与える可能性があります。たとえば、指示を長いプロンプトの末尾に移動すると、多くの場合、より良い結果が得られます。
- 指示の精度:質問の力、たとえば「誰、什么、どこ、いつ、为什么、如何」のフレームワークを通じて伝えることができます。モデルをより焦点の当てられた回答に向けて導くことができます。さらに、望ましい出力形式またはサイズを指定することで、モデルの出力をさらに洗練することができます。
- 不確実性の処理:モデルが不確実な場合にどう応答するかをガイドすることが重要です。たとえば、不確実な場合に「私は知りません」と応答するようにモデルに指示することで、不正確または「妄想」の回答を生成するのを防ぐことができます。
- 段階的な思考:複雑な指示の場合、モデルに体系的に考え、タスクをサブタスクに分割するように導くことができます。より包括的で正確な出力をもたらすことができます。
ChatGPTにおけるプロンプトの重要性に関する包括的な記事は、Unite.aiで見つけることができます。
生成型AIモデルにおける課題
プロンプトエンジニアリングには、モデルのパフォーマンスを向上させるために与える指示を微調整することが含まれます。これは、生成型AIアプリケーションの精度を向上させるための費用対効果の高い方法であり、わずかなコード変更のみで実現できます。プロンプトエンジニアリングは出力を大幅に向上させることができますが、大規模言語モデルの固有の限界を理解することが重要です。二つの主な課題は、妄想と知識のカットオフです。
- 妄想:モデルが自信を持って間違った、または捏造された回答を返す場合です。高度なLLMには、こうした出力を認識して回避するための組み込みメカニズムがあります。
- 知識のカットオフ:LLMモデルにはすべてトレーニング終了日があり、その後はイベントや開発について知ることができません。この制限により、モデルの知識はトレーニング終了時に固定されます。たとえば、2022年までトレーニングされたモデルは、2023年の出来事について知ることはできません。
Retrieval-Augmented Generation(RAG)は、これらの課題に対する解決策を提供します。モデルが外部情報にアクセスできるようにすることで、妄想を軽減し、ドメイン固有またはモデルの元のトレーニングコーパスにないデータへのアクセスを可能にします。知識のカットオフに対しては、モデルのトレーニング終了日以降の最新情報にアクセスできるため、出力が最新であることを保証します。
Retrieval-Augmented Generationの紹介
Retrieval-Augmented Generation(RAG)は、特定の技術ではなく、フレームワークであり、大規模言語モデルがトレーニングされていないデータにアクセスできるようにします。RAGを実装する方法は複数あり、最適なものはタスクとデータの性質によって異なります。
プロンプト入力
プロセスは、ユーザーの入力またはプロンプトから始まります。これは、質問または特定の情報を求める声明です。
外部ソースからの検索
モデルは、トレーニングに基づいて直接回答を生成するのではなく、リトリーバーコンポーネントの助けを借りて、外部データソースを検索します。これらのソースは、知識ベース、データベース、ドキュメントストア、またはインターネットアクセス可能なデータなど、幅広いものになり得ます。
検索の理解
本質的に、検索は検索操作を反映しています。ユーザーの入力に応じて最も関連性の高い情報を抽出することです。このプロセスを二つの段階に分けることができます。
- インデックス作成:RAGの旅で最も課題的な部分は、知識ベースのインデックス作成です。インデックス作成プロセスは、ロードと分割の二つの段階に分けることができます。LangChainのようなツールでは、これらのプロセスは「ローダー」と「スプリッター」と呼ばれます。ローダーは、ウェブページやPDFなどのさまざまなソースからコンテンツを取得します。取得した後、スプリッターはこのコンテンツをバイトサイズのチャンクに分割し、埋め込みと検索のために最適化します。
- クエリ:これは、検索条件に基づいて最も関連性の高い知識フラグメントを抽出する行為です。
検索に取り組む方法は多数ありますが、単純なテキストマッチングからGoogleのような検索エンジンの使用まで、近代的なRAGシステムは、意味的検索に依存しています。意味的検索の核にあるのは、埋め込みの概念です。
プロンプトの拡張
取得した情報は、元のプロンプトと組み合わせて拡張された、または拡大されたプロンプトを作成します。この拡張されたプロンプトは、モデルに追加のコンテキストを提供します。特に、データがドメイン固有であるか、モデルの元のトレーニングコーパスにない場合に価値があります。
生成
拡張されたプロンプトを手に入れたモデルは、そこから回答または完了を生成します。これは、モデルのトレーニングに基づいてのみでなく、リアルタイムで取得したデータによっても情報を得ています。
最初のRAG LLMのアーキテクチャ
2020年にMetaが発表した研究論文「知識集約型NLPタスクのためのRetrieval-Augmented Generation」は、この技術について詳細に説明しています。Retrieval-Augmented Generationモデルは、従来の生成プロセスに外部の検索メカニズムを追加します。これにより、モデルは膨大なデータコーパスから関連情報を取得して、コンテキストに応じた正確な回答を生成できるようになります。
これはどのように機能するのか。
- パラメトリックメモリ:これは、シーケンスツーシーケンスモデルなどの従来の言語モデルです。大量のデータでトレーニングされており、多くのことを知っています。
- 非パラメトリックメモリ:これは、検索エンジンのようなものです。Wikipediaなどのデータベースの密なベクトルインデックスで、ニューラルリトリーバーを使用してアクセスできます。
これらを組み合わせると、正確なモデルが作成されます。RAGモデルはまず、非パラメトリックメモリから関連情報を取得し、次にパラメトリックな知識を使用して一貫性のある回答を生成します。
1. 二段階のプロセス:
RAG LLMは、次の二段階のプロセスで動作します。
- 検索:モデルはまず、大きなデータセットから関連するドキュメントまたはパスを検索します。これは、両方のクエリとドキュメントを埋め込みで表現することで、密な検索メカニズムを使用して行われます。埋め込みは、類似性スコアを計算するために使用され、上位のドキュメントが取得されます。
- 生成:上位の関連ドキュメントを手に入れた後、それらは、シーケンスツーシーケンスジェネレーターとともに初期のクエリと共にチャネル化されます。このジェネレーターは、クエリと取得したドキュメントの両方からコンテキストを引いて、最終的な出力を生成します。
2. 密な検索:
従来の検索システムは、TF-IDFのような疎な表現に依存することが多いですが、RAG LLMは、クエリとドキュメントの両方を連続したベクトル空間に埋め込む、密な表現を使用します。これにより、単なるキーワードマッチングを超えた、より繊細な類似性比較が可能になります。
3. シーケンスツーシーケンス生成:
取得したドキュメントは、生成モデルにとって拡張されたコンテキストとなります。このモデルは、トランスフォーマーなどのアーキテクチャに基づいており、最終的な出力を生成し、コンテキストに応じた関連性を保証します。
ドキュメント検索
ドキュメントインデックス作成と検索
情報を効率的に検索するために、特に大きなドキュメントから、データはベクトルデータベースに保存されます。各データまたはドキュメントは、コンテンツの意味的本質を捉えた埋め込みベクトルに基づいてインデックス付けされます。効率的なインデックス付けにより、入力プロンプトに基づいて関連情報を迅速に取得できます。
ベクトルデータベース
ベクトルデータベースは、ベクトルデータの保存と取得に特化したデータベースです。AIやコンピューターサイエンスの分野では、ベクトルは、リストの数字で表される多次元空間の点を表します。従来のデータベースは表形式のデータに適していますが、ベクトルデータベースは、埋め込みなどのベクトル形式のデータを管理することに優れています。
注目すべきベクトルデータベースには、Annoy、MetaのFaiss、Milvus、Pineconeがあります。これらのデータベースは、レコメンデーションシステムから画像検索まで、AIアプリケーションで重要な役割を果たしています。AWSなどのプラットフォームは、Amazon (AMZN ) OpenSearch ServiceやAmazon RDS for PostgreSQLなどの、ベクトルデータベースのニーズに特化したサービスも提供しています。これらのサービスは、特定のユースケースに最適化されており、効率的なインデックス作成とクエリを保証しています。
関連性のためのチャンキング
多くのドキュメントは広範囲にわたることがありますが、チャンキングと呼ばれるテクニックがよく使われます。これには、大きなドキュメントを、意味的に整合性のある小さなチャンクに分割することが含まれます。これらのチャンクはインデックス付けられ、必要に応じて取得され、ドキュメントの最も関連性の高い部分が使用されることを保証します。
コンテキストウィンドウの考慮
各LLMにはコンテキストウィンドウがあり、モデルが一度に考慮できる情報の最大量を表します。外部データソースが提供する情報がこのウィンドウを超える場合、モデルがコンテキストウィンドウ内に収まるようにチャンクに分割する必要があります。
Retrieval-Augmented Generationの利点
- 精度の向上:外部データソースを利用することで、RAG LLMは、トレーニングデータに基づくだけでなく、取得可能な最も関連性の高い最新情報によっても情報を得た回答を生成できます。
- 知識のギャップの克服:RAGは、モデルのトレーニングの制限や、ドメイン固有のデータの不足など、LLMの固有の知識のギャップを効果的に解決します。
- 汎用性:RAGは、組織内のプライベートデータベースからインターネットでアクセス可能なデータまで、さまざまな外部データソースと統合できます。これにより、幅広いアプリケーションや業界で使用できます。
- 妄想の軽減:LLMの課題の1つは、事実的に不正確または捏造された情報を「妄想」として生成する可能性です。RAGは、リアルタイムのデータコンテキストを提供することで、こうした出力の可能性を大幅に軽減します。
- スケーラビリティ:RAG LLMの主な利点の1つは、そのスケーラビリティです。検索と生成のプロセスを分離することで、モデルは大量のデータセットを効率的に処理できます。これにより、データが豊富な実世界のアプリケーションに適しています。
課題と考慮事項
- 計算オーバーヘッド:二段階のプロセスは、特に大きなデータセットを扱う場合、計算的に負担がかかる可能性があります。
- データの依存性:取得したドキュメントの品質が、生成の品質に直接影響します。したがって、包括的でキュレーションされたリトリーバーコーパスを持つことは、非常に重要です。
結論
検索と生成のプロセスを統合することで、Retrieval-Augmented Generationは、知識集約型タスクに対する強力な解決策を提供し、情報に基づいた関連性のある出力を保証します。
実際の世界でのRAGの潜在的な応用は、医療、金融、学術研究など、多くの分野で大きな影響を及ぼす可能性があります。学者は、膨大な情報リポジトリをスキャンし、文献レビューとデータ分析をより効率的に行うことができます。

















