|
データホエール 編集者のおすすめ: Datawhale が推奨します。 以下の記事は PaperAgent からのもので、著者は PaperAgent です。 [ ペーパーエージェント。 毎日更新、最先端の AI テクノロジーのホットな話題を解説します。 ](#) 検索強化生成 (RAG) の出現により、外部知識データベースを活用して LLM を拡張し、錯覚問題や LLM の知識更新の制限などの問題に対処します。 - この本では、RAG の各コンポーネント、特に検索エンジンと検索融合の主要技術、およびチュートリアル コードを使用した検索融合技術を体系的に紹介しています。
- データ ストレージの更新ありまたはなしの RAGを含む、さまざまなRAG トレーニング戦略が示されます。
- 下流のNLP タスクと実際の NLP シナリオにおける RAG の応用について説明します。
自然言語処理(NLP) における検索強化生成の概要: Retriever、 Retrieval Fusion、およびGenerator。 ** 1. レトリーバー Retriever は、検索強化生成 (RAG) の重要なコンポーネントであり、その主な機能は、外部の知識ベースから入力に関連する情報を取得することです。 回収ツールを使った2段階 ビルド フェーズ: ドキュメントは小さなチャンクに分割され、これらのチャンクはエンコードされ、効率的な検索をサポートするためのインデックスが構築されます。 - チャンキングコーパス:
- 固定長チャンク: 長さパラメータを設定することでドキュメントを順次分割します。
- セマンティック ベースのチャンキング: ピリオドや改行文字などのセマンティック マーカーに基づいてドキュメントをセグメント化します。
- コンテンツベースのセグメンテーション: ドキュメントの構造特性 (電子医療記録の章やプログラミング コードの機能ブロックなど) に基づいてセグメント化します。
- エンコードチャンク:
- BERT とその派生版 (RoBERTa、DistilBERT、ELECTRA など) は、高密度なセマンティック埋め込みを生成します。
- シャム エンコーダー: DPR や SimCSE など、入力間の類似性を学習するように設計されたニューラル ネットワーク。
- LLM ベースのエンコーダー: text-embedding-ada-002 や bge-embedding などの大規模言語モデルの表現機能を活用します。
- バッグ・オブ・ワード (BoW) モデルや TF-IDF などのスパース コーディングでは、ほとんどの要素がゼロである高次元ベクトルを使用してテキストを表します。
- 高密度エンコーディング:ディープニューラルネットワークモデルを用いてベクトルを生成します。各次元は意味的特徴を捉えます。これには以下が含まれます。
インデックス構築: インデックスの目的は、効率的な近傍検索をサポートすることに主眼を置き、多次元クエリ埋め込みの検索プロセスを高速化することです。 - 類似度メトリックを選択します:
- コサイン類似度、ユークリッド類似度、マンハッタン距離、およびジャカラン類似度は、クエリ埋め込みとブロック埋め込み間の関連性を測定するために使用されます。
- 埋め込みにおける次元削減:
- 主成分分析 (PCA): 最も重要な特徴を保持しながら、生データを新しい座標系に変換するために使用される統計手法。
- Locality-Sensitive Hash (LSH): 元の入力データの類似性を維持しながらデータをバケットにマッピングすることで次元を大幅に削減します。
- 積量子化 (PQ): 高次元空間を、より小さく独立して量子化されたサブスペースに分割します。
- 高度なANNインデックス作成:
- IVFPQ: 効率的でスケーラブルな ANN 検索を実現するために、反転ファイルシステムと積量子化を組み合わせます。
- HNSW: 階層型グラフ構造を使用して、高次元空間で ANN 検索を効率的に実行します。
- KD ツリー、ボール ツリー、VP ツリーなどのツリーベースのインデックスは、高次元ベクトルを整理するために使用されます。
- キーと値のペアを使用してデータストアを構築する:
- 効率的な取得とデータの永続性をサポートするために、専用のデータベース (LMDB や RocksDB など) を使用してデータを保存および管理します。
- 最近の研究では、Milvus、FAISS、LlamaIndex など、インデックスやデータ ストレージを含むさまざまな最先端のベクトル データベースが提案されています。
クエリフェーズ: クエリは同じエンコーダーを使用してエンコードされ、事前に構築されたインデックスとデータ ストレージを使用して近似最近傍検索が実行され、関連する値が取得されます。 - クエリのエンコード:
- クエリは、リトリーバーの構築時に使用されたのと同じエンコーダーを使用してエンコードされ、クエリの埋め込みがリトリーバーの埋め込み空間と一致することが保証されます。
- 近似最近傍探索(ANN探索):
- 事前に構築されたインデックスとデータ ストレージを使用して近似最近傍検索を実行し、クエリに最も類似したデータを検索します。
- 検索プロセスでは、クエリ埋め込みとクラスター埋め込みを比較し、候補クラスターを選択し、各クラスター内で積量子化を実行して最も近い近傍を見つけます。
- インデックス検索:
- 事前に構築されたインデックスを検索し、k 個の最近傍点を見つけ、これらの最近傍点の一意の識別子を返します。
- データストレージの取得:
- 最も近い近傍の一意の識別子に基づいて、データ ストアから対応する値を取得します。
- 後処理:
- 再ランク付け: タスク固有の目的に従って取得した知識を並べ替えて関連性を向上させます。
- 重要度の重み付け: 取得した知識に重要度の重みを割り当て、関連性の低いコンテキストを除外します。
2. 検索融合 この研究では、取得した知識を生成モデルに統合してパフォーマンスを向上させる方法を詳しく調べています。 RAGにおける融合方法のカテゴリー - 検索融合タイプ:
- クエリベースの融合: 取得した情報を入力クエリに直接接続または結合します。
- 潜在的融合: 取得した情報を生成モデルの隠し層に統合します。
- ロジットベースの融合は、取得された情報を生成モデルの出力層に統合します。
- クエリベースの融合技術:
- テキスト連結: 取得したテキストをクエリ テキストに直接接続します。
- 特徴連結: 取得したテキストを特徴ベクトルにエンコードし、クエリ特徴ベクトルと結合します。
- FID: 取得したテキストをスパースまたはデンス表現にエンコードし、連結された特徴を入力として受け取る特徴融合方法。
- 潜在的な核融合技術:
- 注意ベースの融合: クロスアテンションメカニズムを使用して、取得した知識をモデルの非表示状態に埋め込みます。
- RETRO: 検索強化を使用し、新しいクロスアテンションモジュールを導入した事前トレーニング済みの言語モデル。
- 重み付け追加: 取得された知識は、学習重みによって重み付けされた方法でモデルの隠し状態に埋め込まれ、追加されます。
- ログベースの融合技術:
- アンサンブルベースの融合: 取得した知識の対数とモデル出力の対数をアンサンブル予測の一部として組み合わせます。
- kNN-LM と kNN-MT: 最近傍モデルの対数を利用して、言語モデルと機械翻訳を強化します。
- キャリブレーションベースの融合: 取得した知識の対数を使用して、モデルの予測をキャリブレーションまたは調整します。
3. ジェネレータ 検索強化生成 (RAG) で使用されるジェネレーターの種類とその特性について説明します。 - ジェネレータタイプ:
- デフォルトのジェネレーター: GPT シリーズ、Mistral モデル、Gemini シリーズ モデルなど、事前トレーニング済み/微調整済みの大規模言語モデルのほとんどが含まれます。
- 検索拡張 (RA) ジェネレーター: RETRO や EncDec などの検索情報を融合するためのモジュールを含む、事前トレーニング済み/微調整済みのジェネレーターです。
- ジェネレーターの機能:
- ジェネレーターは応答を生成したり予測を行う役割を担い、通常は入力と対応する検索結果に基づいてテキストを生成します。
- ジェネレータのアーキテクチャ:
- ジェネレーターは通常、アテンション モジュールやフィードフォワード ネットワーク モジュールなどのデコーダー モジュールに重点を置いた、Transformer ベースのアーキテクチャを採用または変更します。
4. RAGトレーニング戦略 検索拡張生成 (RAG) モデルのトレーニング方法と戦略について詳しく説明します。 RAG のさまざまなトレーニング戦略(データ ストレージの更新を含む/含まない) - RAGトレーニング分類:
- データ ストアを更新しない RAG トレーニング: RAG 内の各モジュールのトレーニング可能なパラメータのみが更新され、データ ストア内の知識は変更されません。
- データ ストレージを更新するための RAG トレーニング: まず、データ ストレージ内の知識を更新し、次に RAG 内の各モジュールのパラメータを更新します。
- データ ストレージの更新 (データストア更新なしの RAG):
- レトリーバーのトレーニング:
- 検索エンコーダのトレーニングとインデックスの再構築には、通常、高密度コーディング手法が使用されます。
- トレーニングの目的に応じて、エンコーダーを交換したり、対照学習を使用して既存のエンコーダーをトレーニングしたりする必要がある場合があります。
- ジェネレータトレーニング:
- ジェネレータのパラメータを更新するか、融合モジュールからパラメータを取得します。
- LoRA などのパラメータ効率の高い微調整手法を利用して、大規模言語モデル (LLM) の微調整の課題に対処します。
- レトリーバーとジェネレーターの共同トレーニング:
- 検索とジェネレーターを同時にトレーニングして、下流のタスクのパフォーマンスを向上させます。
- エンドツーエンドの最適化を実現するために、入力から出力までの順方向プロセスにおける微分可能性を確保します。
- データストアの更新:
- このシナリオは、知識ベースの更新と、検索と生成器のトレーニングという2つの段階から構成されます。知識ベースの更新には、トレーニング可能な埋め込みによる更新、新しい値による更新、新しいコーパスによる更新の3つのケースがあります。
- 最初のケースでは、値は通常、学習可能な埋め込みであり、RAG内のパラメータと同時または非同期に更新されます。最後の2つのケースは、通常、知識ベースを最新の情報で更新することを指します。
- 質疑応答コーパスを例に挙げると、新しい値で更新するとは既存の質問への回答を更新することを指し、新しいコーパスで更新するとは新しい質疑応答のペアを追加することを指します。既存のキーの値を更新するには、まず既存のキーと値のペアをクエリし、その後インプレース更新を実行する必要があります。新しいコーパスの場合、データストレージはまず挿入操作を実行し、その後新しいキーのインデックスを再構築または更新する必要があります。データストレージを更新した後、検索とジェネレーターのトレーニングは、データストレージを更新しないRAGのトレーニングと同様です。
5. RAGの応用シナリオ さまざまな自然言語処理 (NLP) タスクにおける RAG テクノロジーの応用: - 言語モデル:
- RAG は、ジェネレーターのアーキテクチャを変更したり、入力と出力に検索情報を追加したりすることで、事前トレーニング段階で言語モデルの機能を向上させるために使用できます。
- 機械翻訳:
- RAG テクノロジーは、テキスト結合や対数融合を通じて外部知識を翻訳プロセスに組み込むことで、翻訳品質を向上させるために使用できます。
- テキスト要約:
- RAG 技術は、抽出要約や抽象要約などの外部知識や類似文書を取得することで、テキスト要約タスクを強化するために適用されます。
- 質問応答システム:
- RAG テクノロジーは情報検索とモデル生成を組み合わせ、オープンドメインとクローズドドメインの両方の質問応答システムに適用でき、質問の理解と情報検索の精度を向上させます。
- 情報抽出:
- RAG テクノロジーは、名前付きエンティティ認識 (NER) や関係抽出 (RE) などのサブタスクを含む情報抽出タスクのパフォーマンスを向上させるために使用できます。
テキスト分類:
- RAG テクノロジーは、さまざまな外部知識融合戦略を使用してモデルのパフォーマンスを向上させることにより、感情分析などのテキスト分類タスクを強化するために使用できます。
対話システム:
- RAG テクノロジーを適用して対話システムを改善すると、過去の対話や関連情報を取得して、より一貫性があり関連性の高い応答を生成できるようになります。
実際のアプリケーションシナリオにおける RAG テクノロジーの具体的な実装と役割:- LLM ベースの自律エージェント:
- RAG は、大規模な言語モデルに基づく自律エージェントに、より広範な情報アクセス機能を提供し、意思決定および問題解決能力を強化します。
- RAG を使用して外部メモリから情報を取得する:
- インテリジェント エージェントは RAG を使用して外部メモリから関連情報を取得し、理解力と意思決定能力を高めることができます。
- RAG ツールを使用して Web を検索します。
- インテリジェント エージェントはツールを使用してネットワークを検索し、最新の情報を取得できます。これは、最新の知識が必要な状況で非常に役立ちます。
- フレームワーク:
- Langchain や LLaMAindex などのフレームワークが導入され、複雑な検索メカニズムと生成モデルを統合することで、外部データを言語生成プロセスに統合することが容易になります。
https://arxiv.org/pdf/2407.13193 トリプル「いいね!」をお願いします↓ ** |