ラグ はRetrieval Augmented Generationの頭文字をとったものである。RAGとは何かをより明確に理解するために、この言葉を分解してみよう:
R -> 検索
A→強化
G -> 生成
基本的に、私たちが今使っている大規模言語モデル(LLM)はリアルタイムで更新されません。LLM(例えばChatGPT)に質問をすると、幻覚を見て間違った答えを出すかもしれない。これに対抗するため、私たちはより多くのデータ(世界的に公開されているデータではなく、一部の人しかアクセスできないデータ)を使ってLLMを訓練します。そして、このデータで訓練されたLLMに質問し、適切な情報を提供できるようにします。もしRAGを使わなければ、次のようなことが起こるかもしれない:
- 幻覚の可能性が高まる
- LLMの陳腐化
- 正確性と事実性の低下
以下の表を参照してほしい:
RAGは、検索ベースのシステムの利点とLLMを組み合わせたハイブリッド・システムであり、より正確で適切かつ有益な決定を生成する。このアプローチでは、生成プロセスにおいて外部の知識ソースを活用し、最新かつ文脈に沿った情報を提供するモデルの能力を高めている。上の図では
- 最初のステップでは、ユーザーはLLMに問い合わせを行う。
- このクエリーは
- そのあと
- 検索された文書は、元のクエリとともに言語モデル(LLM)に送られる。
- ジェネレーターは、クエリーと関連するドキュメントの両方を処理し、レスポンスを生成し、それをユーザーに返します。
さて、あなたがRAGを基礎から応用まで学びたいと思っていることはよくわかりました。そこで、たった5日間でRAGシステムを習得する完璧なロードマップをお見せしましょう。そうです、たった5日間でRAGシステムをマスターできるのです。さっそく学習ロードマップをご覧ください:
1日目:RAGの基礎固め
第1日目の主な目的は、RAGを全体として理解し、RAGの主要な構成要素を探求することである。以下は1日目のトピックの内訳である:
RAGの概要
- RAG の機能と重要性、および現代 NLP におけるその位置づけを認識する。
- 主なアイデアは、検索補強型生成(RAG)が外部情報を導入することで生成モデルの有効性を高めるというものだ。
主な構成要素
- 検索と生成を別々に学ぶ
- 検索(例:Dense Paragraph Retrieval (DPR)、BM25)と生成(例:GPT、BART、T5)のアーキテクチャを理解する。
2日目:独自の検索システムを構築する
2日目の主な目的は、検索システム(たとえそれが基本的なものであっても)をうまく導入することである。以下は、2日目のトピックの内訳である:
検索モデルの詳細
- 密な検索と疎な検索の違いを学ぶ:
- インテンシブサーチ:DPR、ColBERT。
- スパースサーチ。 BM25TF-IDF。
- それぞれの方法の長所と短所を探る。
検索の実現。
- 基本的な検索タスクには、elasticsearch(疎な検索用)やfaiss(密な検索用)などのライブラリを使用する。
- Hugging FaceのDPRチュートリアルで、知識ベースから関連文書を検索する方法を理解しましょう。
知識データベース。
- 知識ベースの構造を理解する。
- コーパスの前処理や文書の索引付けなど、検索タスクのためにデータを準備する方法を学びます。
3日目:生成されたモデルの微調整と結果の観察
3日目の目標は、生成モデルを微調整し、結果を観察して、生成強化における検索の役割を理解することだった。以下は3日目のトピックの内訳である:
ジェネレーティブ・モデリングについて詳しく見てみよう。
- T5、GPT-2、BARTなどの学習済みモデルを調べる。
- タスク(クイズやサマリーなど)を生成するプロセスの微調整を学ぶ。
モデル生成の実習。
- Hugging Faceが提供するTransformerモデルを適用して、小さなデータセットでモデルを最適化する。
- このテストでは、質問に対する答えを生成するために生成モデルを使用する。
検索と生成の相互作用を探る。
- 生成モデルが検索されたデータを入力する方法を調査する。
- 検索によって、生成された回答の正確さと質がどのように向上するかを認識する。
4日目:運用可能なRAGシステムの導入
これでゴールに近づいた。今日の主な目標は、簡単なデータセットにRAGシステムを実装し、パラメーターのチューニングに慣れることだった。4日目のトピックの内訳は以下の通り:
検索と生成の組み合わせ:
- 生成されたコンポーネントと検索されたコンポーネントを単一のシステムに統合する。
- 出力の取得とモデルの生成の間の相互作用を可能にする。
LlamaIndexを使用したRAGパイプライン:
- 公式ドキュメントやチュートリアルでRAGパイプラインの機能を学ぶ。
- LlamaIndexのRAGモデルを使用した例を設定し、実行する。
実践的な実験:
- 検索される文書の数、生成されるバンドル検索ストラテジー、温度スケーリングなど、さまざまなパラメーターの実験を開始する。
- 簡単な知識集約型のタスクでモデルを実行してみる。
5日目:より強固なRAGシステムの構築と微調整
最終日の目標は、RAGモデルを微調整し、さまざまなタイプのRAGモデルを理解することによって、より強固なRAGモデルを作成することであった。以下は、5日目のトピックの内訳である:
- 高度な微調整: ドメイン固有のタスクのために、生成と検索のコンポーネントを最適化する方法を探る。
- 延長: より大きなデータセットやより複雑なナレッジベースに対応したRAGシステムの拡張。
- パフォーマンスの最適化: メモリ使用量と検索速度を最大化する方法を学ぶ(GPU上でfaissを使用するなど)。
- 評価だ: 知識集約型タスクにおけるRAGモデルの評価方法を学び、BLEU、ROUGEなどの様々なメトリクスを使用して問題解決を測定します。