RAG(Retrieval-Augmented Generation、検索拡張生成)は、質問に関係する文書を検索してから、その内容をもとに生成 AI に答えさせる仕組みです。Microsoft の説明では、LLM の回答を自社の文書に根拠づけるパターンとされています。
LLM は学習した時点より新しい情報や、社内の文書を知りません。RAG を使うと、モデルを学習し直さずに社内規程や製品マニュアルをもとに答えさせられます。 社内 FAQ やカスタマーサポートで多く使われているのは、このためです。
言葉の起点は、Lewis らの 2020 年の論文です。事前に学習したモデルと、Wikipedia の密なベクトルのインデックスを組み合わせ、知識が要る質問応答で当時の最高水準の成績を出しました。
処理の流れ
実務の RAG は、文書を準備する段階と、質問に答える段階に分かれます。
準備
- 分割:長い文書を小さな単位(チャンク)に分けます
- 埋め込み:各チャンクをベクトルに変換します
- 保存:ベクトルと元の文章を検索用のインデックスに入れます
回答
- 検索:質問に近いチャンクを探します
- 補強:見つかったチャンクをプロンプトに加えます
- 生成:LLM がその内容をもとに答えます
Microsoft は、再現率を高めるためにキーワード検索とベクトル検索を組み合わせるハイブリッド検索を勧めています。製品の型番や社内用語は、ベクトル検索だけでは拾いにくいことがあるからです。
ファインチューニングとの違い
| 項目 | RAG | ファインチューニング |
|---|---|---|
| 仕組み | 答える時に文書を検索して渡す | モデルを追加で学習させる |
| 情報の更新 | 文書を入れ替えるだけで反映できる | 学習のやり直しが要る |
| 根拠の表示 | 参照した文書を示せる | 示しにくい |
| 向いている用途 | 変わりやすい社内情報、規程、マニュアル | 文体や形式、特定の判断の癖 |
迷ったら RAG から始めるのが定石です。比較の詳細は RAG とファインチューニングの比較をご覧ください。
限界
RAG を入れても誤りはなくなりません。Microsoft は次の課題を挙げています。
| 課題 | 内容 |
|---|---|
| 質問の理解 | 利用者の質問が検索に合う形とは限らない |
| 複数のデータソース | 形式や場所の違う文書を横断する必要がある |
| トークンの制限 | LLM に渡せる量には上限がある |
| 応答時間 | 検索と生成の分だけ待ち時間が増える |
| セキュリティ | 利用者は権限のある文書だけを取得できなければならない |
編集部の実務では、とくに次の 2 つで問題が起きやすいと感じています。
- 権限の漏れ:権限のない文書が検索に混ざると、AI が要約して漏らします。RAG の権限管理に実例があります。
- 「ありそうな誤答」:文書に答えがない質問でも、それらしく答えます。答えない能力の測り方を導入前に決めてください。
導入前に確認すること
- 答えられる質問がどれだけあるか。 文書に答えが載っていない質問は、モデルを替えても答えられません。回答可能率で先に測ります。
- 精度をどう測るか。 ヒット率の高さだけでは足りません。編集部の自社基盤では 107 テナントの平均が 99.7% でしたが、標本数の限界があり、そのまま品質の保証とは読めません。
- 根拠を示せるか。 利用者が元の文書を確認できるようにします。根拠提示率が指標になります。
- 権限を反映できるか。 検索の段階で権限を絞ります。
- 費用の内訳を見積もったか。 LLM の料金だけでなく、データの準備と検証にも費用がかかります。
サービスを選ぶ場合は RAG サービス比較を、関連する記事をまとめて読む場合は RAG システムの記事一覧をご覧ください。
よくある質問
RAGとは何ですか。
Retrieval-Augmented Generationの略で、検索拡張生成と訳されます。質問に関係する文書を検索し、その内容をプロンプトに加えて生成AIに答えさせる仕組みです。
RAGとファインチューニングの違いは何ですか。
RAGは答える時に文書を検索して渡します。ファインチューニングはモデル自体を追加で学習させます。頻繁に変わる社内の情報にはRAGが向いています。
RAGを使えば生成AIの誤りはなくなりますか。
なくなりません。検索で正しい文書を取れないこともあり、取れても誤って要約することがあります。根拠の表示と、答えられない時に答えない仕組みが必要です。