2025年11月22日土曜日

RAG入門


RAG(Retrieval-Augmented Generation : 拡張検索生成)というのは最近よく目にする重要キーワードだ。いまひとつ理解できていなかったので,Kimi K2 に解説文を作ってもらう。この日本語があまりこなれていないので 「以下のRAGについての解説を,言葉を補って一般向けのAIテクノロジー雑誌の読みやすい解説文のような形にしてもらえませんか」と,Claude 4.に通した。

その結果を,ChatGPT-5とGemini 2.5 Flashに投げて内容や表現をチェックしてもらったら,たいへんよくできているので微修正だけで十分だといわれた。ところがそれを反映させた修正文全文を出してもらうと微妙に日本語がくずれる。しかたがないので,Claude 4.5に戻って「ですます調」から「である調」に修正したのが以下の解説文である。

RAG入門:AIが「知識を探す力」を手に入れた理由(2025.11.10 Kimi K2 →Claude4.5)

検索と生成が出会うとき、何が起こるのか
近年、ChatGPTをはじめとする大規模言語モデル(LLM)が私たちの生活に浸透してきた。これらのAIの能力は驚異的なのだが,彼らは「嘘」をつくし知識はすぐに「陳腐化」する。この根本的な弱点を克服し,AIに「知識を探す力」を与える技術として,今「RAG(Retrieval-Augmented Generation:検索拡張生成)」が世界的に注目されている。

1.RAGとは何か:AIの「図書館司書」機能
RAGを一言で表すなら,大規模言語モデル(LLM)が外部知識をリアルタイムに検索しながら回答を生成する仕組みである。
 従来のLLMは,訓練時に学習した知識だけを頼りに回答していた。しかしRAGを導入することで,LLMは必要に応じて外部のデータベースを参照し,最新かつ正確な情報に基づいた回答ができるようになる。
 その本質は,静的なパラメータ知識と動的な検索知識を分離することにある。つまりLLMは、単に「知識を持つ」だけでなく、「知識を探す」「知識を使う」という3つの役割を明確に使い分ける。

2.なぜRAGが必要なのか:3つの深刻な課題
RAGは、従来のLLMが抱える以下の3つの深刻な課題を解決するために不可欠だ。

(1) 幻覚(ハルシネーション)問題
LLMは,訓練データの統計的パターンを再現して文章を生成する。そのため,事実ではないが非常にもっともらしい内容を自信満々に語ってしまうことがある。これは「幻覚」と呼ばれ,AIの信頼性を大きく損なう問題だ。

(2) 知識の陳腐化
LLMは訓練された時点での知識しか持たない。たとえば2023年までのデータで訓練されたモデルは,2024年の出来事について正確に答えることができない。世界は日々変化しているのに,AIの知識は訓練時点で固定されてしまう。

(3) 専門性・機密性の壁
企業の内部文書や最新の研究論文など,一般に公開されていない情報は,当然ながら訓練データに含まれない。そのため,どれほど高性能なLLMでも,こうした専門的・機密的な情報にはアクセスできない。

3.RAGの基本的な仕組み:3ステップの知的循環
RAGは、以下の3つのフェーズで動作する。

(1) ステップ1:インデックス作成フェーズ
まず,参照したい文書を準備します。この文書を適切なサイズに分割(チャンキング)し,それぞれを数値ベクトルに変換(埋め込み)する。そして、これらのベクトルを検索しやすい形でデータベース(ベクトルストア)に保存する。

(2) ステップ2:検索フェーズ(リアルタイム処理)
ユーザーが質問すると,その質問もベクトルに変換される。そして,ベクトルストアから質問と最も関連性の高い文書を複数件取得する。

(3) ステップ3:生成フェーズ(リアルタイム処理)
質問と検索結果を組み合わせてLLMに入力し、最終的な回答を生成します。

この検索と生成の分離が重要です。それぞれを独立に最適化できるため、システム全体の品質を段階的に向上させることができるのです。

4.各コンポーネントの深い論理
(1) チャンキング:情報の粒度をどう決めるか
文書をどこで分割するかは,検索精度を大きく左右する。
・細かく分割しすぎる:検索精度は上がるが文脈が失われる(例:「AIの倫理」を「AI」と「倫理」に分けると意味が変わってしまう)
・大きすぎるサイズにする:文脈は保持されるがノイズが増えて検索精度が低下する。

この問題を解決するのがセマンティックチャンキングだ。これは,文章の意味的な区切れ(トピックの変わり目)を自動的に判別して分割する手法である。現代的なアプローチでは,埋め込みベクトルの類似度変化率を見て,自動的に最適な分割点を見つける。

(2) 埋め込み:言葉を幾何学的空間に配置する
埋め込みとは,単語や文章を高次元のベクトル(通常768〜1536次元)に変換する技術である。これにより,意味的な類似度を数学的に計算できるようになる。
この技術の興味深い点は,単なるキーワード一致ではなく概念的な類似性を捉えられることだ。有名な例として,「王様 - 男 + 女 = 女王」のような線形演算が可能になる。
ただし,重要な課題が残っている。埋め込みは「関連性」を計算できても,「情報の質の高さ」や「信頼性」を測ることはできない。関連しているが古い情報と,新しい重要情報を区別できない。

(3) ベクトルストア:膨大なデータから高速検索する知恵
数百件のデータなら全件検索できるが,数百万件,数十億件となると現実的ではない。
そこで登場するのがANN(近似最近接探索)アルゴリズムだ。代表的なものに以下がある:
・HNSW(階層的ナビゲーション可能な小世界グラフ):グラフベースで高速かつ高精度
・IVF(転置ファイルインデックス):クラスタリングベースでメモリ効率が良い

これらのアルゴリズムは,正確な最近接を諦めて速度を獲得するという実用主義的なアプローチである。これは「完璧を諦め,実用性を獲得する」という現実的な選択の表れといえる。

5.検索精度を高める進化形テクニック
(1) ハイブリッド検索:2つの検索手法の融合
単純なベクトル検索だけでは不十分なケースがあります。そこで,ベクトル検索とキーワード検索(BM25)を統合するハイブリッド検索が用いられる。
これが有効な理由は,埋め込みが捉えきれない固有名詞や数値をキーワード検索がカバーできるためだ。複数の検索結果は,RRF(逆順位融合)という数理的手法で統合される。
(2) クエリ拡張:質問を賢く分解する
LLMが質問を補完・分解することで,検索精度を向上させる。
例:「RAGの課題」という質問を以下のように展開
「RAGの精度に関する課題」
「RAGの速度に関する課題」
「RAGのコストに関する課題」
(3) 再ランキング:広く探して深く選ぶ
初回検索で100件程度を広く取得し,別のモデルで再評価して5件程度に絞り込む。これは,軽量モデルで広く探索し,重量モデルで深く選別する賢い分業である。

6.高度なRAG:アーキテクチャの進化
(1) 自己RAG:AIが自分の無知を知る
モデルが自ら判断して,必要なときだけ検索を実行する。検索が不要な場合はスキップすることで,効率性を高める。
これは,LLMが「自分の無知を自覚する」メタ認知を獲得する第一歩といえる。
(2) リカーシブRAG:多層的な推論
検索結果を踏まえてさらに検索を繰り返し,多層的な推論を行なう。これは,人間が調べ物をするときに「新しいキーワードを見つけてさらに調べる」という行為を自動化したものだ。
(3) エージェント型RAG:計画・実行・検証のサイクル
複数のツール(検索、計算、API呼び出し)を使い分ける自律型システムである。RAGが単なる「検索+生成」から,「計画+実行+検証」の循環へと進化する。

7.実装のベストプラクティス
(1) 検索品質の評価
単純な正解率ではなく,MRR(平均逆順位)やnDCG(正規化割引累積利得)を使う。これらは「役立つ文書が検索結果の上位に来ているか」を測る指標だ。
(2) プロンプト設計の哲学
「検索結果をそのまま答えてください」という指示は効果が低いことが分かっている。代わりに,以下のような指示が有効である:
・以下の文書を参考に、質問に答えてください。
・文書が不十分な場合は「情報不足」と答えてください。
・文書と矛盾しない範囲で、論理的に推論してください。
この指示により,検索結果の単純な再現ではなく,検索結果の統合を促すことができ,幻覚を抑制できる。

8.RAGの限界と本質的な課題
(1) 限界1:検索の失敗は回復不能
検索が失敗したら,どれほど強力なLLMでもそのミスを修正できない。これは「ガベージイン、ガベージアウト」(ゴミを入れればゴミが出る)の原則そのものだ。
(2) 限界2:文脈長の制約
検索結果をすべてLLMに入力できるわけではない。トークン数の制限という物理的な壁が常に存在する。
(3) 限界3:情報の整合性
複数の文書が矛盾している場合,どの情報を信じるべきかという判断基準が不明確である。これは「誰を信じるか」という根本的な問題である。

本質的な緊張関係
RAGは「検索の精度」と「生成の創造性」の間に立つ技術である。検索に依存しすぎると応答が硬直的になり,生成に任せすぎると幻覚が増える。この緊張関係をどうバランスさせるかが,RAGシステム設計の醍醐味であり,永遠の課題でもある。

9.今後の展望:RAGはどこへ向かうのか
(1) マルチモーダルRAG
テキストだけでなく,画像,音声,動画の埋め込みを統合し,同一のベクトル空間で検索可能にする技術が開発されている。
(2) 個人化RAG
ユーザーの履歴やプロフィールを埋め込みに組み込み,検索自体を個人化する。同じ質問でも,ユーザーによって異なる最適な回答を提供できる。
(3) 学習型RAG
検索結果の良し悪しをフィードバックループで学習し,検索アルゴリズム自体を最適化していく。

究極の形:「RAGなきRAG」
将来的には,LLMに外部記憶を直接接続し,検索が内部的なプロセスになる可能性がある。現在のRAGは,そこへ至る中間的なアーキテクチャなのかもしれない。

10.まとめ:RAGが体現する「実用主義の勝利」
RAGは,「知識の所在を分離する」という,計算機科学における永遠のテーマの一例だ。CPUとメモリを分離したのと同様に,言語能力と知識ベースを分離したアーキテクチャといえる
その価値は以下の点にあります:
・動的性:常に最新の情報にアクセスできる
・専門性:特定ドメインの知識を簡単に追加できる
・効率性:巨大なモデルを再訓練する必要がない

最終的な洞察
RAGの真の意味は,単に「LLMの知識を補う」ことではない。「LLMに知識の所在を教え,検索という行為を通じて思考を深める力を与える」ことにある。
これは単なる技術的なアップデートではなく,AIシステムの「知的自立性」を高める哲学的な転換なのだ。
完璧ではないが,うまく動く。理論的に美しいが,現実にはトレードオフが埋め尽くす。まさに,RAGは「実用主義の勝利」を体現しているアーキテクチャだといえる。

この技術は今もなお進化を続けている。RAGを理解することは,これからのAI時代を読み解く重要な鍵となるはずである。

 

図:RAGの仕組み(岡本耕太郎MathematicaRAG実装から引用)

0 件のコメント: