Skip to content

RAG:検索拡張生成

はじめに

なぜChatGPTは時に「もっともらしく嘘をつく」のか? 大規模言語モデルの知識は訓練データに由来しますが、訓練データには締め切りがあり、あなたの会社の内部文書も含まれていません。RAG(Retrieval-Augmented Generation、検索拡張生成)は、この問題を解決するコア技術です — AIに回答する前に「資料を調べさせる」技術です。

この記事で何を学べるか?

この章を終えると、以下のことが身につきます:

  • コア概念の理解:RAGとは何か、なぜ必要なのか、大規模モデルの「ハルシネーション」問題をどう解決するか
  • 完全なワークフローの理解:ドキュメントの読み込み、チャンク分割、ベクトル化から検索、生成までのエンドツーエンドプロセスの習得
  • 技術選択の能力:異なるチャンク分割戦略と検索方法の長所と短所を理解し、シナリオに応じて選択できる
  • アーキテクチャの進化の視点:Naive から Advanced、さらに Modular へのRAGの進化ルートの理解
  • 実践的な意思決定能力:いつRAGを使い、いつファインチューニングを使うべきかを知る
内容コア概念
第1章RAGの基本ワークフローインデックス、検索、生成の3段階
第2章テキストチャンク分割戦略固定チャンク、意味的チャンク、再帰的チャンク
第3章検索技術ベクトル検索、キーワード検索、ハイブリッド検索
第4章アーキテクチャの進化Naive RAG → Advanced RAG → Modular RAG
第5章RAG vs ファインチューニング適用シナリオの比較

0. 概要:なぜ大規模モデルは「資料を調べる」必要があるのか?

あなたが博識な教授で、無数の本を読んでいると想像してください。しかし、誰かが「昨日の会社の売上データは?」と聞いても、あなたは確実に答えられません — その情報はあなたが読んだ本の中にないからです。

大規模言語モデルも全く同じジレンマに直面しています:

  • 知識に締め切りがある:GPT-4の訓練データはある時点で打ち切られており、それ以降の出来事を知らない
  • プライベートな知識が欠如している:あなたの会社の内部文書、製品マニュアル、顧客データをモデルは見たことがない
  • ハルシネーション(幻覚)を起こしやすい:モデルが答えに確信がない場合、もっともらしい回答を「捏造」する傾向がある

RAGのコアアイデア

RAGの解決策は非常に直感的です:モデルに回答させる前に、まず関連する参考文献を見つけるのを助ける。 まるで持ち込み可の試験のように — すべてを暗記する必要はなく、どこにあり、どう探すかを知っていればよい。

RAG = 検索(Retrieval)+ 拡張(Augmented)+ 生成(Generation)


1. RAGの基本ワークフロー:インデックス、検索、生成

RAGのワークフローは2つのフェーズに分けられます:オフラインインデックスオンラインクエリです。

オフラインフェーズは図書館の目録作成のようなもの — すべての本を分類し、番号を付け、棚に配置して、将来の検索を容易にします。オンラインフェーズは、読者が図書館に来て資料を調べるプロセスです — 質問に基づいて関連する本を見つけ、情報を総合して回答を提供します。

选择问题:
💬
用户提问
我们公司的年假政策是什么?
🔍
语义检索
📋
上下文组装
🤖
LLM 生成
返回结果
用户提问 — 详细说明
用户向系统提出一个自然语言问题。这个问题会被转化为向量表示,用于后续的语义检索。
1 / 5

3つのコア段階

  1. インデックス段階:元のドキュメントを読み込み、クリーニング、チャンク分割し、埋め込みモデルを通じてベクトルに変換してベクトルデータベースに保存します。これは一度だけの準備作業です。
  2. 検索段階:ユーザーが質問したとき、質問もベクトルに変換し、ベクトルデータベースで最も類似するドキュメントチャンクを検索します。
  3. 生成段階:検索されたドキュメントチャンクとユーザーの質問をまとめてPromptにし、大規模モデルに渡して最終回答を生成します。
段階入力出力キー技術
インデックス元のドキュメントベクトルデータベーステキストチャンク、埋め込みモデル
検索ユーザーの質問Top-K ドキュメントチャンクベクトル類似度、リランキング
生成質問 + コンテキスト最終回答プロンプトエンジニアリング、LLM

2. テキストチャンク分割:象を冷蔵庫に入れる

テキストチャンク分割はRAGで最も見過ごされやすいが、最も影響の大きいステップです。なぜチャンク分割が必要なのか?大規模モデルのコンテキストウィンドウには限りがあり、本全体を詰め込むことはできないからです。さらに重要なのは、チャンクの品質が検索の品質を直接決定することです。

図書館で本の特定の知識ポイントを探していると想像してください。本全体が1つの「チャンク」であれば、見つかっても役に立ちません — まだ本全体をめくらなければなりません。しかし、章や段落ごとにチャンク分割されていれば、必要な内容を正確に特定できます。

输入文本
固定大小
按照固定的字符数切分文本,是最简单直接的分块方式。通常会设置一定的重叠区域(overlap),避免在切分边界丢失上下文。
块大小: 80 字符重叠: 20 字符
分块结果 共 0 个块
请输入文本后查看分块结果
策略优点缺点适用场景
📏 固定大小实现简单,块大小均匀可能在句子中间截断结构化程度低的长文本
📝 按句子保持句子完整性块大小不均匀文章、报告等自然文本
🧠 语义分块主题连贯,语义完整计算成本高,需要嵌入模型多主题混合的复杂文档
🔄 递归分块兼顾结构与大小实现较复杂通用场景,推荐默认选择

チャンク分割戦略の選択

  • 固定サイズチャンク:文字数やトークン数で分割 — シンプルだが意味を切断する可能性がある
  • 再帰的チャンク:まず段落で分割し、段落が長すぎる場合は文で分割 — 意味的な完全性を維持
  • 意味的チャンク:埋め込みモデルを使用して意味的境界を検出し、類似度が急激に低下する箇所で分割
  • ドキュメント構造チャンク:Markdownの見出しやHTMLタグなどの構造情報を利用してチャンク分割

「最良の」チャンク分割戦略はなく、あなたのデータに最も適した戦略があります。一般的には、再帰的チャンクから始め、チャンクサイズ200-500トークン、オーバーラップ10-20%を推奨します。


3. 検索技術:最も関連する内容をどう見つけるか?

チャンク分割が完了した後、次の重要な問題は:ユーザーが質問したとき、何千ものドキュメントセグメントから最も関連するものをどう見つけるか?

これは巨大な図書館で本を探すようなものです。書名のキーワードで検索する(キーワード検索)、求めている内容を説明して図書館員に手伝ってもらう(意味的検索)、あるいはその両方を組み合わせる(ハイブリッド検索)のが最良の方法です。

选择查询:
1
查询编码
2
向量搜索
3
重排序
4
Top-K 选择
查询编码
将用户的自然语言查询通过嵌入模型(如 text-embedding-ada-002)转化为高维向量表示。这个向量捕捉了查询的语义信息。
查询文本
如何申请年假?
↓ 嵌入模型编码
查询向量
0.12-0.450.780.33-0.210.560.89-0.14
検索方法原理利点欠点
キーワード検索(BM25)単語の出現頻度と逆文書頻度に基づく完全一致、高速意味を理解できない、同義語に対応できない
ベクトル検索埋め込みベクトルのコサイン類似度に基づく意味を理解、ファジーマッチングをサポート固有名詞への感度が低い
ハイブリッド検索キーワードとベクトル検索結果を融合精度と意味のバランス重みの調整が必要、複雑性が高い

リランキング(Reranking)

候補ドキュメントを検索した後、通常は「リランキング」のステップが必要です。初期検索は再現率(できるだけ見落とさないこと)に焦点を当て、リランキングは精度(最も関連性の高いものを上位に配置すること)に焦点を当てます。一般的なリランキングモデルにはCohere Rerank、BGE Rerankerなどがあり、これらはクロスエンコーダを使用してquery-documentペアを精密にスコアリングします。


4. アーキテクチャの進化:シンプルからインテリジェントへ

RAG技術はわずか2年で3世代の進化を遂げ、各世代は前の世代の課題を解決しています。

最基础的 RAG 架构,流程简单直接:索引 → 检索 → 生成。适合快速原型验证,但在复杂场景下效果有限。
📄
文档加载
✂️
文本分块
🔢
向量化
🔍
检索
🤖
生成
点击流程节点查看详细说明
架构特点
实现简单,上手快
适合结构化知识库
⚠️检索质量依赖分块策略
无法处理复杂查询
架构演进路线
Naive RAG
2023
Advanced RAG
2024
Modular RAG
2025

3世代のRAGアーキテクチャの比較

  • Naive RAG(2023):最も基本的な「インデックス → 検索 → 生成」ワークフロー。実装はシンプルだが効果は限定的。問題点:検索品質が不安定、複雑なクエリに対応できない、ノイズの多いコンテキストを導入しやすい。
  • Advanced RAG(2024):Naive RAGをベースに、クエリ書き換え、ハイブリッド検索、リランキング、コンテキスト圧縮などの最適化ステップを追加し、検索精度と生成品質を大幅に向上。
  • Modular RAG(2025):RAGをプラグイン可能なモジュールに分解し、ルーティング決定、適応的検索、自己反省などの高度な機能をサポート。クエリタイプに基づいて最適な処理ワークフローを動的に選択可能。

5. RAG vs ファインチューニング:どちらを選ぶべきか?

大規模モデルに特定ドメインの知識を習得させたい場合、通常2つの道があります:RAGとファインチューニングです。これらは相互に排他的ではなく、補完的な関係にあります。

例えで言えば:ファインチューニングは学生を研修クラスに送るようなもので、知識を脳内に内在化させます。RAGは学生に参考書を渡すようなもので、試験中に閲覧できます。どちらのアプローチにも長所と短所があり、重要なのはあなたの具体的なニーズです。

RAG 检索增强生成
VS
Fine-tuning 微调
知识更新速度
实时更新,修改文档即生效
需要重新训练,周期长
实施成本
搭建检索系统,成本适中
💰
需要 GPU 资源和标注数据
回答风格控制
依赖 Prompt 工程
🎨
可深度定制输出风格
幻觉控制
有据可查,可追溯来源
🎯
仍可能产生幻觉
推理延迟
需要额外的检索步骤
⏱️
直接生成,无额外开销
私有数据安全
数据留在本地,不进入模型
🔒
数据融入模型权重
一句话总结
RAG 像是给模型配了一个实时更新的参考书库,适合知识频繁变化的场景; 微调像是让模型上了一门专业课,适合需要特定风格或领域深度的场景。 实际项目中,两者常常结合使用。
次元RAGファインチューニング
知識の更新リアルタイム更新、ドキュメントの変更のみ再訓練が必要
コスト低い(GPU訓練不要)高い(訓練リソースが必要)
説明可能性高い(ソースを追跡可能)低い(知識は重みに内在化)
適用シナリオナレッジベースQ&A、ドキュメント検索スタイル転送、特定タスクの最適化
ハルシネーション制御良好(参照根拠がある)一般的(ハルシネーションの可能性あり)

実践的アドバイス

ほとんどのシナリオでは、まずRAGを試してください。RAGの利点は:訓練が不要、知識をリアルタイムで更新可能、回答の出所を追跡可能です。モデルの「行動パターン」(出力形式、言語スタイル、推論方法など)を変更する必要がある場合にのみ、ファインチューニングを検討してください。最も強力なソリューションは、多くの場合RAG + ファインチューニングの組み合わせです。


まとめ

RAGは現在、大規模モデルを実用化するための最も実用的な技術の一つです。そのコアバリューは、モデルの回答を検証可能にし、知識をリアルタイムで更新可能にし、ハルシネーションを効果的に制御できることにあります。

この章の重要なポイントの振り返り:

  1. RAGが解決するコア問題:モデルの知識が古い、プライベートデータが欠如、ハルシネーションを起こしやすい
  2. 3段階のワークフロー:インデックス(オフライン準備)→ 検索(オンライン検索)→ 生成(包括的回答)
  3. チャンク分割が基盤:チャンクの品質が検索の品質を直接決定するため、適切なチャンク分割戦略の選択が極めて重要
  4. 検索が鍵:ハイブリッド検索 + リランキングが現在、最も効果的な組み合わせ
  5. アーキテクチャの進化:Naive RAGからModular RAGへ、システムはますますインテリジェントで柔軟になっている
  6. RAGとファインチューニングは補完的:ほとんどのシナリオでまずRAGを試し、モデルの動作を変更する必要がある場合にファインチューニングを検討

参考資料