RAG
らぐ
外部知識を検索してLLMに渡し、学習データにない情報や最新情報に基づいて回答させる構成。
概要
RAG(Retrieval-Augmented Generation、検索拡張生成)は、LLMに質問を渡す前に、関連する情報を外部の知識源から検索し、その内容をプロンプトに添えて回答させる構成です。モデル自体を作り変えるのではなく、「回答に必要な資料をその場で手渡す」ことで、学習データに含まれない情報に基づいた回答を可能にします。試験にたとえるなら、暗記だけで挑む持ち込み不可の試験を、資料持ち込み可のオープンブック試験に変える発想です。
「社内規程について答えるチャットボット」「製品マニュアルに基づくサポートAI」「自社データベースを参照するアシスタント」— 業務でLLMを活用しようとすると、ほぼ必ず「モデルがうちの情報を知らない」という壁に当たります。RAGはこの壁を越えるための最も標準的な構成であり、LLMアプリケーション開発の定番パターンとして広く使われています。
なぜ生まれたか
LLMの知識には二つの根本的な制約があります。ひとつは時間の制約で、モデルが知っているのは学習データを収集した時点(カットオフ)までの情報だけです。もうひとつは範囲の制約で、社内文書・非公開データ・個別の顧客情報など、学習データに含まれない情報は原理的に知りようがありません。さらに厄介なことに、LLMは知らないことを「知らない」と言わず、それらしい嘘(ハルシネーション)を流暢に生成してしまいます。
この問題をモデルの再学習で解決しようとすると、情報が更新されるたびに膨大な計算コストをかけて学習し直すことになり、現実的ではありません。そこで「知識はモデルの外に置き、必要なときに検索して渡せばよい」という転回が生まれました。2020年に発表された研究でRAGという名前が付き、ChatGPT以降のLLMブームの中で、外部知識とLLMをつなぐ実用構成として一気に普及しました。知識の更新が「再学習」ではなく「文書の差し替え」で済むこと、回答の根拠を出典として示せることが、この構成の決定的な強みです。
詳細
二つのフェーズ — インデックス構築と検索・生成
RAGの処理は大きく二つのフェーズに分かれます。前段の「インデックス構築」では、まず知識源となる文書(社内Wiki、PDF、マニュアルなど)を数百〜千文字程度の「チャンク」と呼ばれる断片に分割します。次に各チャンクを埋め込みモデルに通して、意味を表す数百〜数千次元のベクトルに変換し、ベクトルDBに格納します。これで「意味が近い文書を数値計算で探せる」検索基盤ができあがります。
後段の「検索・生成」が、ユーザーの質問が来るたびに動く本番の流れです。
質問文を文書と同じ埋め込みモデルでベクトル化し、ベクトルDBで類似度の高いチャンクを上位数件取り出します。そして「以下の資料に基づいて質問に答えてください」という指示とともに、取り出したチャンクと質問をひとつのプロンプトに組み立ててLLMへ送ります。この組み立て方の設計はプロンプトエンジニアリングの領域で、「資料にない場合は分からないと答える」といった指示を添えるのが定石です。
精度を左右する設計ポイント
RAGの回答品質は、実はLLMよりも検索の質で決まることが多いです。まずチャンク分割の粒度が重要で、細かすぎると文脈が切れて意味が取れず、大きすぎると無関係な情報が混ざって検索精度が落ちます。見出し単位で区切る、前後を少し重複させるなどの工夫が定番です。また、ベクトル類似検索は「意味の近さ」には強い一方、型番や固有名詞の完全一致には弱いため、従来型のキーワード検索と組み合わせる「ハイブリッド検索」や、検索結果を精度の高いモデルで並べ直す「リランキング」がよく併用されます。
落とし穴 — RAGは万能薬ではない
最大の落とし穴は「検索が外れると、その後がどれだけ優秀でも回答は外れる」ことです。関連文書を取り損ねれば、LLMは手元の不十分な資料から無理に答えを組み立て、結局ハルシネーションが起きます。RAGはハルシネーションを減らしますが、ゼロにはしません。渡した資料を無視したり、資料の内容を微妙に歪めて要約したりすることもあるため、出典を提示してユーザーが検証できるようにする設計が重要です。また、検索対象に機密文書を含める場合は「誰がどの文書を検索してよいか」という認可の制御を検索段階で行わないと、権限のない情報が回答に混入する事故につながります。
ファインチューニングとの使い分け
LLMを自社向けに適応させるもうひとつの手段がファインチューニングですが、両者は解決する問題が異なります。「最新情報や社内知識を答えさせたい」という知識の注入はRAGの領分です。知識の更新が文書の差し替えだけで済み、出典も示せるからです。一方「特定の口調・出力形式・専門タスクの振る舞いを身につけさせたい」という適応はファインチューニングが向きます。実務ではまずプロンプトの工夫、次にRAG、それでも足りなければファインチューニング、と軽い手段から順に検討するのがセオリーで、両者を併用する構成も珍しくありません。