MODULE m1 · 8.0 HOURS

RAGアーキテクチャの理解

0% 完了

LEARNING OBJECTIVES

このモジュールの目標

  1. RAG (Retrieval-Augmented Generation) アーキテクチャの主要構成要素を理解する。
  2. 大規模言語モデル (LLM) が持つ知識の限界と、検索ベースの拡張の必要性を把握する。
  3. 検索-生成パイプラインの構造的な流れを説明できるようにする。

RAG (Retrieval-Augmented Generation) アーキテクチャの概要

最新の自然言語処理 (NLP) およびディープラーニングモデルは、膨大なテキストデータを学習して優れた性能を発揮しますが、モデルの学習時点に含まれていない最新情報や、特定のドメインの非公開データに対しては、ハルシネーション(幻覚)を引き起こしたり、情報を知らないといった限界があります [S1]。

検索を通じたLLMの限界克服

RAGは、モデルがすべての知識をパラメータ内部に記憶させるのではなく、質問に関連する外部の信頼できるドキュメントを「適切な時点 (just-in-time)」で検索し、生成段階の入力として提供する方式です [S2]。

主要構成要素

  1. 検索器 (Retriever): ユーザーのクエリ (query) を受け取り、ベクトルデータベースなどで関連性の高いドキュメントの断片 (chunk) を特定します。
  2. 拡張 (Augmentation): 検索されたドキュメントと元の質問を組み合わせて、LLMに渡すプロンプトを構成します。
  3. 生成器 (Generator): 拡張された情報を基に、事実に基づいた回答を生成します。

このような構造は、モデルの知識を最新の状態に維持し、生成された回答の根拠を追跡可能にすることで、信頼性を確保するのに寄与します。

WORKED EXAMPLES

解説例

  1. 事例 1: 従来のLLM方式 - 「今日のニュースを教えて」と質問した場合、学習データ以降の出来事を認識できず、誤った情報を生成するリスクがある。
  2. 事例 2: RAG方式 - 「今日のニュースを教えて」と質問した際、1) 外部検索エンジンやリアルタイムニュースAPIを通じて検索器 (Retriever) が関連記事を収集し、2) これを文脈 (context) として含めてLLMに渡すことで、正確な最新情報の回答を生成。

LAB PROTOCOL

RAGアーキテクチャのフロー可視化および分析

  1. 1

    Jupyter Notebookを開き、RAG基本パイプラインの3段階(入力、検索、生成)の構造を模式化する。

  2. 2

    オープンライセンスのドキュメントコーパスから5個の短いテキストを抽出し、データセットのサンプルを作成する。

  3. 3

    単純なキーワードマッチングを行う検索器 (Retriever) 関数を作成し、質問に適したドキュメントを返すよう実装する。

  4. 4

    検索されたドキュメントをプロンプトテンプレートに注入する拡張段階をコードで作成する。

安全確認
  • 実際の個人情報や機密ドキュメントを、絶対にコーパスデータとして使用しないこと。
  • API使用時は呼び出し回数の制限 (Rate Limit) を確認し、テストコードにシード (seed) 値を設定して再現性を確保すること。

実習提出物

  • RAGアーキテクチャのダイアグラム (Notebookセル内に含めること)
  • 単純なキーワードベースの検索器の実装コード
  • ドキュメント注入型プロンプトの生成結果

ASSIGNMENT

RAGベースの情報検索パイプライン分析レポート

提出物

評価基準

  • RAGの3段階(検索、拡張、生成)が正確に区別されて説明されているか?
  • 検索段階において、無関係なドキュメントが検索される可能性に対する分析が妥当か?
  • 非公開データのセキュリティ指針を遵守して実装したか?

KNOWLEDGE CHECK

理解度チェック

1RAGがLLMの学習方式と比較して持つ主な利点は何ですか?
2検索器 (Retriever) の役割として正しいものは何ですか?

FIELD CHECK

完了基準

  • RAGアーキテクチャの構成要素を説明できる。
  • 実習したRAGパイプラインのコードが正常に動作し、関連ドキュメントの検索および拡張を確認できる。
  • RAGパイプラインの限界点と改善方向を分析レポートに記述する。

MODULE SOURCES

このモジュールの根拠

  1. Stanford CS 224N | Natural Language Processing with Deep Learningweb.stanford.edu · university
  2. Natural Language Processing with Deep Learning CS224N/Ling284web.stanford.edu · university