Artificial Intelligence
LLM における検索拡張生成の詳細

あなたがアナリストで、大規模言語モデルにアクセスできると想像してください。 あなたは、それがワークフローにもたらす展望に興奮しています。 しかし、最新の株価や現在のインフレ率について質問すると、次のように答えられます。
「申し訳ありませんが、リアルタイムまたはカットオフ後のデータは提供できません。 私の最後のトレーニング データは 2022 年 XNUMX 月までのものです。」
大規模言語モデルは、その言語能力にもかかわらず、「」を把握する能力が欠けています。今'。 そして、ペースの速い世界では、今' すべてです。
研究によると、大規模な事前トレーニング済み言語モデル (LLM) も事実知識のリポジトリであることがわかっています。
彼らは非常に多くのデータに基づいてトレーニングされているため、多くの事実や数字を吸収しています。 微調整すると、さまざまな NLP タスクで顕著な結果を達成できます。
しかし、ここに問題があります。蓄積された知識にアクセスして操作する彼らの能力は、時には完璧ではありません。 特に、当面のタスクが知識集約型である場合、これらのモデルは、より専門化されたアーキテクチャに遅れる可能性があります。 それは、世界中のすべての本を備えた図書館があるのに、必要な本を見つけるためのカタログがないようなものです。
OpenAI の ChatGPT がブラウジングをアップグレード
ChatGPT のブラウジング機能に関する OpenAI の最近の発表は、検索拡張生成 (RAG) の方向への大きな進歩です。 ChatGPT は、インターネット上で最新の信頼できる情報を検索できるようになり、外部ソースからデータを動的に取得して充実した応答を提供するという RAG アプローチを反映しています。
ChatGPT はインターネットを参照して、ソースへの直接リンクを備えた最新の信頼できる情報を提供できるようになりました。 2021 年 XNUMX 月以前のデータに限定されなくなりました。 pic.twitter.com/pyj8a9HWkB
- OpenAI(@OpenAI) 2023 年 9 月 27 日
現在、Plus および Enterprise ユーザーが利用できますが、OpenAI はこの機能を間もなくすべてのユーザーに展開する予定です。 ユーザーは、GPT-4 オプションで [Bing で参照] を選択することでこれを有効にできます。
迅速なエンジニアリングは効果的ですが不十分です
プロンプトは、LLM の知識への入り口として機能します。 これらはモデルをガイドし、応答の方向性を提供します。 ただし、効果的なプロンプトを作成することは、LLM から必要なものを得る本格的なソリューションではありません。 それでも、プロンプトを作成する際に考慮すべきいくつかの良い実践例を見てみましょう。
- 明快さ: 明確に定義されたプロンプトにより、曖昧さが排除されます。 モデルがユーザーの意図を確実に理解できるように、単純なものである必要があります。 この明確さは、多くの場合、より一貫性のある適切な応答につながります。
- コンテキスト: 特に広範囲の入力の場合、命令の配置が出力に影響を与える可能性があります。 たとえば、指示を長いプロンプトの最後に移動すると、多くの場合、より良い結果が得られます。
- 指導の正確さ: 質問の力は、「誰が、何を、どこで、いつ、なぜ、どのように」というフレームワークを通じて伝えられることが多く、モデルをより焦点を絞った応答に導くことができます。 さらに、目的の出力形式またはサイズを指定すると、モデルの出力をさらに調整できます。
- 不確実性への対処: 確信が持てない場合にモデルにどのように対応するかをガイドすることが重要です。 たとえば、不確実な場合に「わかりません」と答えるようにモデルに指示すると、不正確な情報や「幻覚" 反応。
- 段階的な思考: 複雑な命令の場合、モデルを体系的に考えるようにガイドしたり、タスクをサブタスクに分割したりすると、より包括的で正確な出力が得られます。
ChatGPT をガイドする際のプロンプトの重要性に関する包括的な記事は、次の記事にあります。 ユナイトアイ.
生成 AI モデルの課題
プロンプトエンジニアリングには、モデルに与えられたディレクティブを微調整してパフォーマンスを向上させることが含まれます。 これは、Generative AI アプリケーションの精度を向上させるための非常にコスト効率の高い方法であり、コードをわずかに調整するだけで済みます。 迅速なエンジニアリングにより出力が大幅に向上しますが、大規模言語モデル (LLM) に固有の制限を理解することが重要です。 主な課題は次の XNUMX つです。 幻覚 と 知識の遮断.
- 幻覚: これは、モデルが自信を持って間違った応答または捏造された応答を返すインスタンスを指します。 高度な LLM には、そのような出力を認識して回避するためのメカニズムが組み込まれています。
- 知識の遮断: すべての LLM モデルにはトレーニング終了日があり、その後はイベントや展開が認識されません。 この制限は、モデルの知識が最後のトレーニング日の時点で凍結されていることを意味します。 たとえば、2022 年までにトレーニングされたモデルは 2023 年の出来事を知りません。
検索拡張生成 (RAG) はこれらの課題に対するソリューションを提供します。 これにより、モデルが外部情報にアクセスできるようになり、独自のデータまたはドメイン固有のデータへのアクセスが提供されることで幻覚の問題が軽減されます。 知識が遮断された場合、RAG はモデルのトレーニング日を超えて現在の情報にアクセスできるため、出力が最新であることが保証されます。
また、LLM がさまざまな外部ソースからリアルタイムでデータを取り込むこともできます。 これは、知識ベース、データベース、あるいは広大なインターネットである可能性があります。
検索拡張生成の概要
検索拡張生成 (RAG) は、特定のテクノロジではなく、大規模言語モデルがトレーニングに使用されていないデータを利用できるようにするフレームワークです。 RAG を実装するには複数の方法があり、最適な方法は特定のタスクとデータの性質によって異なります。
RAG フレームワークは構造化された方法で動作します。
プロンプト入力
このプロセスは、ユーザーの入力またはプロンプトから始まります。 これは、特定の情報を求める質問または発言である可能性があります。
外部ソースからの取得
モデルは、トレーニングに基づいて応答を直接生成するのではなく、取得コンポーネントの助けを借りて、外部データ ソースを検索します。 これらのソースは、ナレッジ ベース、データベース、ドキュメント ストアからインターネットでアクセス可能なデータまで多岐にわたります。
検索を理解する
本質的に、検索は検索操作を反映しています。 ユーザーの入力に応じて最も関連性の高い情報を抽出することです。 このプロセスは次の XNUMX つの段階に分かれています。
- インデキシング: おそらく、RAG の取り組み全体の中で最も困難な部分は、ナレッジ ベースのインデックス作成です。 インデックス作成プロセスは、読み込みと分割の XNUMX つのフェーズに大別できます。LangChain などのツールでは、これらのプロセスは「」と呼ばれます。ローダー"と"スプリッター”。 ローダーは、Web ページや PDF など、さまざまなソースからコンテンツを取得します。 取得されると、スプリッターはこのコンテンツを一口サイズのチャンクに分割し、埋め込みと検索用に最適化します。
- クエリ: これは、検索語に基づいて最も関連性の高い知識の断片を抽出する行為です。
単純なテキスト マッチングから Google などの検索エンジンの使用まで、検索に取り組む方法は数多くありますが、最新の検索拡張生成 (RAG) システムはセマンティック検索に依存しています。 セマンティック検索の中心には、埋め込みの概念があります。
埋め込みは、大規模言語モデル (LLM) が言語を理解する方法の中心です。 人間が言葉からどのように意味を導き出すかを明確に説明しようとすると、多くの場合、その説明は本質的な理解に戻ってしまいます。 私たちの認知構造の奥深くでは、「子供」と「子供」が同義であること、または「赤」と「緑」がどちらも色を表すものであると認識しています。
プロンプトの拡張
取得した情報は元のプロンプトと結合され、拡張または拡張されたプロンプトが作成されます。 この拡張されたプロンプトは、モデルに追加のコンテキストを提供します。これは、データがドメイン固有である場合、またはモデルの元のトレーニング コーパスの一部ではない場合に特に役立ちます。
補完の生成
拡張されたプロンプトを使用して、モデルは完了または応答を生成します。 この応答は、モデルのトレーニングに基づくだけでなく、取得されたリアルタイム データからも通知されます。
最初の RAG LLM のアーキテクチャ
2020年に発表されたメタ社の研究論文「知識集約型NLPタスクの検索拡張生成」では、このテクニックについて詳しく説明しています。 取得拡張生成モデルは、外部の取得または検索メカニズムを使用して従来の生成プロセスを拡張します。 これにより、モデルは膨大なデータのコーパスから関連情報を取得できるようになり、状況に応じて正確な応答を生成する能力が強化されます。
これがどのように動作するのかです:
- パラメトリックメモリ: これは、seq2seq モデルのような従来の言語モデルです。 膨大な量のデータに基づいてトレーニングされており、多くのことを知っています。
- ノンパラメトリックメモリ: これを検索エンジンと考えてください。 これは、たとえば Wikipedia の高密度ベクトル インデックスであり、ニューラル リトリーバーを使用してアクセスできます。
これら XNUMX つを組み合わせると、正確なモデルが作成されます。 RAG モデルは、まずノンパラメトリック メモリから関連情報を取得し、次にパラメトリック知識を使用して一貫した応答を返します。
1. XNUMX 段階のプロセス:
RAG LLM は XNUMX 段階のプロセスで動作します。
- 検索: モデルはまず、大規模なデータセットから関連する文書または文章を検索します。 これは、埋め込みを使用してクエリとドキュメントの両方を表す高密度検索メカニズムを使用して行われます。 次に、埋め込みを使用して類似性スコアが計算され、上位にランクされたドキュメントが取得されます。
- 世代: 上位 k 個の関連ドキュメントが手元にあれば、それらは最初のクエリとともにシーケンスツーシーケンス ジェネレーターに送られます。 次に、このジェネレーターは、クエリと取得したドキュメントの両方からコンテキストを描画して、最終出力を作成します。
2. 密な検索:
従来の検索システムは、TF-IDF のようなスパース表現に依存することがよくあります。 ただし、RAG LLM は密な表現を採用しており、クエリとドキュメントの両方が連続ベクトル空間に埋め込まれます。 これにより、より微妙な類似性の比較が可能になり、単なるキーワードの一致を超えて意味的な関係を捉えることができます。
3. シーケンス間の生成:
取得されたドキュメントは、生成モデルの拡張コンテキストとして機能します。 このモデルは、多くの場合、Transformers などのアーキテクチャに基づいており、最終出力を生成し、一貫性とコンテキストの関連性を確保します。
ドキュメント検索
ドキュメントのインデックス作成と検索
特に大きな文書からの情報を効率的に検索するために、データはベクトル データベースに保存されることがよくあります。 データまたはドキュメントの各部分には、コンテンツの意味論的な本質を捉える埋め込みベクトルに基づいてインデックスが付けられます。 効率的なインデックス作成により、入力プロンプトに基づいて関連情報を迅速に取得できるようになります。
ベクトルデータベース

出典: Redisの
ベクトル データベース (ベクトル ストレージとも呼ばれます) は、ベクトル データの保存とフェッチに適したカスタマイズされたデータベースです。 AI とコンピューター サイエンスの分野では、ベクトルは基本的に、多次元空間内の点を象徴する数値のリストです。 表形式のデータに適した従来のデータベースとは異なり、ベクトル データベースは、AI モデルからの埋め込みなど、ベクトル形式に自然に適合するデータの管理に威力を発揮します。
注目すべきベクトル データベースとしては、Annoy、 ファイス メタによって、 トビ, 松毬。 これらのデータベースは AI アプリケーションにおいて極めて重要であり、推奨システムから画像検索に至るまでのタスクを支援します。 AWS などのプラットフォームは、Amazon OpenSearch Service や Amazon RDS for PostgreSQL など、ベクトル データベースのニーズに合わせたサービスも提供しています。 これらのサービスは特定の使用例に合わせて最適化されており、効率的なインデックス作成とクエリが保証されます。
関連性を考慮したチャンク化
多くのドキュメントは膨大になる可能性があるため、「チャンキング」として知られる手法がよく使用されます。 これには、大きなドキュメントを、意味的に一貫した小さなチャンクに分割することが含まれます。 これらのチャンクにはインデックスが付けられ、必要に応じて取得され、ドキュメントの最も関連性の高い部分が迅速な拡張に使用されるようになります。
コンテキストウィンドウの考慮事項
すべての LLM はコンテキスト ウィンドウ内で動作します。コンテキスト ウィンドウは、基本的に一度に考慮できる情報の最大量です。 外部データ ソースがこのウィンドウを超える情報を提供する場合は、モデルのコンテキスト ウィンドウ内に収まる小さなチャンクに分割する必要があります。
検索拡張生成を利用するメリット
- 精度の向上: 外部データ ソースを活用することで、RAG LLM はトレーニング データに基づくだけでなく、検索コーパスで入手可能な最も関連性の高い最新情報にも基づいた応答を生成できます。
- 知識のギャップを克服する: RAG は、モデルのトレーニングのカットオフまたはトレーニング コーパスにドメイン固有のデータが存在しないことが原因であるかに関係なく、LLM に固有の知識の制限に効果的に対処します。
- 多才: RAG は、組織内の独自のデータベースから公的にアクセス可能なインターネット データに至るまで、さまざまな外部データ ソースと統合できます。 これにより、幅広い用途や業界に適応できます。
- 幻覚の軽減: LLM に関する課題の XNUMX つは、「幻覚」、つまり事実に誤りのある情報や捏造された情報が生成される可能性があることです。 RAG はリアルタイムのデータ コンテキストを提供することで、そのような出力の可能性を大幅に減らすことができます。
- スケーラビリティ: RAG LLM の主な利点の XNUMX つは、拡張機能です。 取得プロセスと生成プロセスを分離することにより、このモデルは膨大なデータセットを効率的に処理できるため、データが豊富な現実世界のアプリケーションに適しています。
課題と考慮事項
- 計算オーバーヘッド: XNUMX 段階のプロセスは、特に大規模なデータセットを扱う場合、計算負荷が高くなる可能性があります。
- データの依存関係: 取得されたドキュメントの品質は、生成の品質に直接影響します。 したがって、包括的でよく厳選された検索コーパスを用意することが重要です。
まとめ
検索拡張生成は、検索プロセスと生成プロセスを統合することにより、知識集約型タスクに対する堅牢なソリューションを提供し、情報と文脈の両方に関連した出力を保証します。
RAG の真の期待は、その潜在的な現実世界のアプリケーションにあります。 タイムリーで正確な情報が極めて重要となるヘルスケアのような分野では、RAG は膨大な医学文献からシームレスに洞察を抽出して生成する機能を提供します。 市場が刻一刻と進化する金融の分野では、RAG はリアルタイムのデータ駆動型の洞察を提供し、情報に基づいた意思決定を支援します。 さらに、学界や研究において、学者は RAG を利用して膨大な情報リポジトリをスキャンし、文献レビューやデータ分析をより効率的に行うことができます。

