RAG(検索拡張生成)の仕組みを理解し、AIエージェントや生成AIシステムの構築につなげるための知識ロードマップです。
RAGは単純に「資料を検索してLLMに渡す技術」ではありません。
データをどのように準備し、どのように検索し、どの情報をLLMへ渡し、どのように回答を生成・評価するのかという複数の技術によって構成されています。
そこで、RAGを以下の7つのChapterに分けて学びます。
🧠 Chapter 1:RAGと生成AIの基礎(Section 1〜4)
まずは、RAGが何を解決するための技術なのか、LLMとどのような関係にあるのかを理解します。
Section 1:RAGとは何か
- RAG(Retrieval-Augmented Generation / 検索拡張生成):外部の情報を検索し、その結果をLLMへの入力に追加して回答を生成する仕組み。
- 検索(Retrieval):質問に関連する情報を外部のデータソースから取得する処理。
- 拡張(Augmented):検索した情報をLLMが利用できるコンテキストとして追加する処理。
- 生成(Generation):取得した情報をもとにLLMが回答を生成する処理。
Section 2:なぜRAGが必要なのか
- LLMの知識:LLMが学習時に取り込んだ情報をもとに回答する仕組み。
- 知識カットオフ:モデルが学習した時点以降の情報を、そのままでは知識として持っていないという制約。
- ハルシネーション:LLMが事実とは異なる情報を生成する現象。
- 外部知識:LLM自身が持っていない情報を、外部のデータソースから補う考え方。
Section 3:RAGとファインチューニングの違い
- ファインチューニング:既存のモデルに追加の学習を行い、特定のデータやタスクに適応させる方法。
- RAG:モデル自体を再学習するのではなく、外部情報を検索して回答生成時に利用する方法。
- 知識の更新:RAGでは外部データを更新することで、回答に利用する情報を変更できる。
- モデルへの知識埋め込み:ファインチューニングなどによって、特定の知識や振る舞いをモデル側に学習させる考え方。
Section 4:RAGの基本アーキテクチャ
- ユーザー質問:RAGシステムに入力される質問。
- 検索システム:質問に関連する情報をデータベースから取得する仕組み。
- コンテキスト:検索によって取得され、LLMに渡される参考情報。
- LLM:検索結果を利用して最終的な回答を生成するモデル。
💾 Chapter 2:RAGのデータ準備(Section 5〜8)
RAGの検索精度を左右するのが、検索対象となるデータの準備です。
Section 5:RAGで扱うデータ
- 構造化データ:表やデータベースのように、決められた形式で整理されたデータ。
- 非構造化データ:文章、PDF、画像、音声など、一定の表形式に整理されていないデータ。
- ドキュメント:RAGが検索対象とする文書やデータ。
- メタデータ:作成者、作成日、カテゴリ、文書IDなど、データそのものに付随する情報。
Section 6:データ前処理
- データクレンジング:不要な情報や誤った情報を取り除き、データを利用しやすい状態に整える処理。
- テキスト抽出:PDFやWordなどの文書から検索対象となるテキストを取り出す処理。
- OCR(光学文字認識):画像として保存された文字を認識し、テキストデータへ変換する技術。
- 重複除去:同じ内容のデータが複数存在する場合に重複を取り除く処理。
Section 7:チャンク分割
- チャンク:長い文書を、検索やLLMへの入力に適した単位へ分割したテキストのまとまり。
- チャンクサイズ:1つのチャンクに含める情報量。
- オーバーラップ:隣接するチャンク同士に一部の文章を重複させる方法。
- チャンク戦略:文章の意味や構造を考慮して、どの単位で文書を分割するかを決める方法。
Section 8:メタデータ設計
- メタデータフィルタリング:カテゴリ、日付、部署などの条件を使って検索対象を絞り込む方法。
- 出典情報:検索結果がどの文書・ページ・URLなどから取得されたかを示す情報。
- 文書ID:検索対象となる文書を一意に識別するためのID。
- 更新日時:情報の新しさを判断するために利用するデータの更新日時。
🔎 Chapter 3:検索の仕組み(Section 9〜13)
RAGでは「何を検索するか」が回答品質を大きく左右します。
Section 9:埋め込みとベクトル
- 埋め込み(Embedding):文章などの情報を、意味を表現する数値ベクトルへ変換する技術。
- ベクトル:複数の数値によって表現されたデータ。
- ベクトルデータベース:ベクトル化されたデータを保存し、類似した情報を検索できるデータベース。
- ベクトル検索:質問と文書をベクトルとして比較し、意味的に近い情報を検索する方法。
Section 10:類似度と距離
- 類似度:2つのデータがどれくらい似ているかを表す指標。
- コサイン類似度:ベクトル同士の方向の近さを利用して類似度を測定する方法。
- ユークリッド距離:ベクトル同士の距離によって近さを測定する方法。
- 最近傍探索:あるベクトルに近いベクトルを検索する処理。
Section 11:キーワード検索
- キーワード検索:入力された単語や文字列との一致を利用して情報を検索する方法。
- 全文検索:文書全体を対象として検索する方法。
- BM25:検索語と文書の関連性を評価する代表的な全文検索アルゴリズム。
- 語彙一致:質問と文書に同じ単語が含まれていることを利用した検索。
Section 12:ハイブリッド検索
- ハイブリッド検索:キーワード検索とベクトル検索を組み合わせる検索方式。
- 意味検索:文章の意味的な近さを利用する検索。
- キーワード検索:具体的な用語や固有名詞の一致を利用する検索。
- 検索結果統合:複数の検索方法から得られた結果を統合する処理。
Section 13:検索結果の再ランキング
- 再ランキング(Reranking):最初の検索結果を、より高度なモデルなどを使って再評価し、順番を並べ替える処理。
- リランカー:検索結果の関連性を再評価するモデル。
- Top-K:検索結果から上位K件を取得する考え方。
- 関連性スコア:質問と検索結果がどれだけ関連しているかを表す値。
🧩 Chapter 4:RAGとLLMの接続(Section 14〜17)
検索した情報を、どのようにLLMへ渡して回答させるのかを学びます。
Section 14:コンテキスト構築
- コンテキスト:LLMが回答を生成する際に利用する背景情報。
- コンテキスト構築:検索結果から、LLMに渡す情報を選択・整理する処理。
- コンテキストウィンドウ:LLMが一度に処理できる入力・出力の範囲。
- コンテキスト圧縮:大量の検索結果から必要な情報を残し、LLMへ渡す情報量を減らす処理。
Section 15:RAGプロンプト
- システムプロンプト:LLMの役割や回答ルールを定義する指示。
- 検索結果の挿入:検索によって取得した情報をプロンプトへ組み込む処理。
- 出典付き回答:回答とともに、参照した情報の出典を提示する方式。
- 回答制約:検索結果に存在しない情報を推測しないなど、LLMの回答範囲を制限するルール。
Section 16:RAGの回答生成
- Grounded Generation:検索によって取得した根拠情報に基づいて回答を生成する考え方。
- グラウンディング:LLMの回答を外部の根拠情報に結び付けること。
- 引用:回答の根拠となった情報を明示すること。
- 根拠性:生成された回答が参照情報によってどの程度裏付けられているかという観点。
Section 17:RAGとエージェント
- エージェント型RAG:AIエージェントが必要に応じて検索を実行し、結果を利用してタスクを進める構成。
- 検索ツール:エージェントが必要な情報を取得するために利用するツール。
- 検索判断:エージェントが「検索が必要か」「何を検索するか」を判断する処理。
- 反復検索:最初の検索結果を確認し、不足している情報を追加で検索する方法。
📊 Chapter 5:RAGの評価と改善(Section 18〜21)
RAGでは「回答がそれっぽい」だけでは十分ではありません。
検索と生成を分けて評価することで、どこに問題があるのかを判断します。
Section 18:検索品質の評価
- 検索精度:必要な情報を正しく検索できているかを評価する観点。
- Precision(適合率):検索された情報のうち、実際に関連している情報の割合。
- Recall(再現率):必要な情報のうち、どれだけ検索できたかを表す割合。
- Hit Rate:必要な情報が検索結果の中に含まれている割合。
Section 19:生成品質の評価
- 回答精度:質問に対して正しい回答を生成できているかという観点。
- 忠実性(Faithfulness):生成された回答が、検索された情報に基づいているかを評価する指標。
- 関連性(Relevance):生成された回答が質問に適切に答えているかを評価する観点。
- 回答の完全性:必要な情報を十分に含んだ回答になっているかという観点。
Section 20:RAGの評価フレームワーク
- RAGAS:RAGシステムの検索・生成品質を評価するための代表的なフレームワーク。
- 評価データセット:RAGの性能を測定するために用意した質問と正解・根拠情報の組み合わせ。
- 評価指標:検索や生成の品質を数値などで評価するための基準。
- LLM-as-a-Judge:別のLLMを評価者として利用し、生成された回答の品質を評価する方法。
Section 21:改善ポイントの切り分け
- 検索エラー:必要な情報を検索できていない状態。
- 生成エラー:正しい情報を取得できているにもかかわらず、LLMが誤った回答を生成する状態。
- データエラー:そもそも検索対象のデータに誤りや不足がある状態。
- プロンプトエラー:検索結果の扱い方や回答ルールの指示に問題がある状態。
🚀 Chapter 6:高度なRAG(Section 22〜26)
基本的な「検索→生成」だけでは対応しにくい複雑な質問に対するRAG技術を学びます。
Section 22:クエリ変換
- クエリ変換(Query Transformation):ユーザーの質問を、検索しやすい形へ変換する技術。
- クエリ拡張:検索に利用する語句や情報を追加する方法。
- クエリ書き換え:曖昧な質問を、検索に適した質問へ書き換える処理。
- マルチクエリ:1つの質問から複数の検索クエリを生成して検索する方法。
Section 23:高度な検索
- Multi-Hop Retrieval:複数回の検索を組み合わせて、単一の検索では取得できない情報を集める方法。
- 反復検索:検索結果を確認しながら追加検索を行う方法。
- 探索戦略:どの情報をどの順番で検索するかを決める方法。
- 検索計画:複雑な質問を複数の検索ステップへ分解する考え方。
Section 24:文書構造を利用したRAG
- Parent-Child Retrieval:小さなチャンクを検索しながら、より大きな親文書の文脈を利用する検索方式。
- 階層型検索:文書の章、節、段落などの階層構造を利用する検索方法。
- 文書構造:見出し、段落、表など、文書を構成する要素とその関係。
- 文脈保持:検索単位を小さくしながら、元の文書が持つ意味や前後関係を維持する考え方。
Section 25:Graph RAG
- Graph RAG:文書中のエンティティや関係性をグラフ構造として扱い、通常のベクトル検索では取得しにくい関係情報を検索するRAG方式。
- ナレッジグラフ:エンティティと、それらの関係をグラフ構造で表現した知識データ。
- エンティティ:人物、企業、製品、場所など、識別可能な対象。
- 関係性:エンティティ同士がどのような関係にあるかを表す情報。
Section 26:マルチモーダルRAG
- マルチモーダルRAG:文章だけでなく、画像、表、音声など複数の種類のデータを検索・利用するRAG。
- 画像検索:画像そのものや画像に関連する情報を検索する処理。
- 表データ検索:表形式の情報を検索し、回答生成に利用する処理。
- マルチモーダル埋め込み:異なる種類のデータを、共通する意味空間で扱えるようにする埋め込み技術。
🔐 Chapter 7:RAGのセキュリティと運用(Section 27〜30)
実際の業務でRAGを利用する場合、検索精度だけでなく、データの権限や更新、セキュリティも重要になります。
Section 27:RAGのセキュリティ
- プロンプトインジェクション:LLMへの入力を通じて、本来の指示を無視させたり、意図しない処理を誘導したりする攻撃。
- 間接プロンプトインジェクション:Webページや文書など、検索対象の外部データに悪意のある指示を埋め込み、LLMの動作へ影響を与える攻撃。
- データ漏えい:本来アクセスできない情報をRAGが検索・回答してしまう問題。
- アクセス制御:ユーザーやエージェントごとに、検索・参照できるデータの範囲を制限する仕組み。
Section 28:RAGのデータ更新
- データ更新:RAGが参照する情報を最新の状態に維持すること。
- 再インデックス:データの追加・変更に合わせて検索用インデックスを更新する処理。
- 増分更新:変更されたデータだけを対象として検索データを更新する方法。
- データ鮮度:検索対象となる情報がどれだけ最新であるかを表す観点。
Section 29:RAGの運用監視
- ログ:質問、検索結果、生成された回答などの処理履歴。
- トレーシング:RAG内部でどの処理がどの順番で実行されたかを追跡すること。
- 監視:RAGシステムの性能やエラー、利用状況などを継続的に確認すること。
- ドリフト:データやユーザーの質問傾向などが変化し、以前は高かったRAGの性能が低下する現象。
Section 30:RAGの設計と運用判断
- 精度とコストのトレードオフ:検索件数、利用するモデル、処理回数などによって、回答品質と処理コストのバランスが変化すること。
- レイテンシ:質問を入力してから回答が返るまでの時間。
- スケーラビリティ:利用者数やデータ量が増加してもシステムを継続して利用できる能力。
- RAGアーキテクチャ:データ、検索、LLM、評価、セキュリティなどを組み合わせたRAGシステム全体の設計。
リンク


コメント