検索拡張生成、略してRAGは、AIシステムが回答を生成する前に、関連する資料を調べられるようにする仕組みです。チャットボットに製品マニュアルを覚えているよう期待する代わりに、そのマニュアルの一節を渡して使ってもらいます。教科書持ち込み可の試験を想像してください。ただし、その学生の答案は、やはり確認が必要です。
RAGは回答をより役立つ、検討しやすいものにできます。しかし自動的に正確、最新、非公開になるわけではありません。博士号も、高価な略語でいっぱいの戸棚もなく理解できるよう、各部分のつながりを見てみましょう。
目次
RAGとは?
RAGシステムは、検索と生成の段階を組み合わせます。問いに関連する情報を見つけ、その情報を回答のための文脈として言語モデルに渡します。文書は外部の情報源のままです。検索で取得しただけで、モデルが再学習されるわけではありません。
パトリック・ルイスらの2020年の論文は、言語モデルと検索できる外部メモリーを組み合わせる、影響力のあるRAGの形を示しました。現在はより広く、資料を検索し、モデルへの入力に含めるアプリケーションにも、この語が使われています。
架空の猫用キャリーが飛行機の旅に使えるか尋ねる場面を想像しましょう。キャリーについての一般論では足りません。必要なのは、該当製品の寸法と、利用する航空会社の条件、そしてその日付です。RAGは、モデルが正しい組み合わせを覚えていると祈る代わりに、それらの文書を回答に持ち込む方法です。
なぜ使うのか
外部文書は、新しく公開された資料や組織固有の情報など、モデルの学習に含まれない詳細を補えます。情報源へ戻る道筋も示せます。「この答えはどこから来たのか」と聞きたいときに役立ちます。
ただし、検索は検証ではありません。古いマニュアルを完璧に取得することもできます。正しいマニュアルを引用しながら、表を読み違える回答もありえます。架空のキャリーなら、航空会社の貨物規則を取得しても、客室への持ち込みの問いに答えられるとは限りません。
目標は、適切な証拠に照らして推論を確認できるシステムです。飾りの脚注がついた自信満々の段落も、ただの自信満々の段落のままです。
仕組み
文書を使う典型的な構成には、検索用に資料を準備する段階と、問いに答える段階があります。文書が変われば準備も繰り返す必要があります。一度の儀式で永遠に新鮮さが続くわけではありません。
まず読めるテキストを抽出し、出典情報を残し、長い文書を役立つ単位に分割します。この単位はチャンクと呼ばれます。埋め込みモデルは一節を数値ベクトルで表せるため、検索システムは意味の関連性を比較できます。キーワード検索も、特に正確な名称や識別子に役立ちます。
次に問いに対する候補を取得し、役立つ部分を選んで生成モデルへ渡します。生成前に候補を並べ替えるリランカーを加えるシステムもあります。Anthropicによる2024年の文脈付き検索の説明は、意味検索とキーワード検索の組み合わせや、単独ではあいまいなチャンクの周辺文脈を残す方法を扱っています。
キャリーの例なら、表の見出しを測定値と結びつけて残すことが大切です。完璧に抽出された数字でも、高さか幅か重さか不明なら、間違った答えをとても効率よく作れます。
主な構成要素
- 情報源の準備:内容を抽出し、意味のある区切り、日付、文書の識別情報を保持します。
- 検索:資料群に合う方法で、問いに関連する箇所を見つけます。
- 文脈の選択:無関係な内容や重複を取り除き、答えるために十分な証拠を残します。
- 生成と提示:回答を作り、それを支える出典を示します。
ベクトルデータベースは検索層に使える一要素であり、RAGの定義ではありません。小さな資料群なら、もっと単純な検索構成で動く場合もあります。逆に、大きなベクトルストアも、入る前から不完全だった文書を直すことはできません。
RAGとファインチューニング
ファインチューニングは、追加学習によってモデルのパラメーターを変えます。RAGは回答時に外部情報を渡します。対応するニーズは違い、組み合わせることもできます。RAGとファインチューニングを農業の事例で調べた2024年の研究は、一方を他方の万能な代用品とせず、このトレードオフを検討しています。
頻繁に変わるマニュアルなら、まず検索によって不足する事実を補えるか試しましょう。よい証拠があっても専門的な作業を繰り返し誤るなら、プロンプトの改善、学習例、ファインチューニングを調べる価値があるかもしれません。処方を選ぶ前に、実際の失敗を測りましょう。
ファインチューニングは忠実な想起を保証せず、RAGが必ず安いとも限りません。長い文脈を使い、頻繁に問い合わせるシステムには、継続的な推論費用がかかります。学習にもデータ準備、評価、計算の費用があります。二つの宣伝ラベルではなく、定義した処理量を比較してください。
考えられる用途
ヘルプセンターのアシスタント、社内ハンドブックの検索、自分のメモへの質問などは、有用な実験です。資料群が実際に答えられる具体的な問いから始めましょう。「この機種をリセットする手順は?」のほうが、「会社が知っているすべてを理解して」より評価しやすくなります。
どの用途でも、誰が情報源を管理し、誰が読んでよいかを特定します。サポート回答が、公開文書と別の顧客の非公開問い合わせをひそかに混ぜてはいけません。個人ノートにも、外部サービスに送りたくない内容があるかもしれません。
よくある落とし穴
アクセス可能と許可済みを混同する
RAGでデータが自動的に自分の端末内にとどまるわけではありません。外部の埋め込みサービスには索引作成時にテキストが渡る場合があり、外部の生成モデルはリクエストに含まれた文脈を受け取ります。保存、保持期間、ログ、学習への利用は、使うサービスと設定次第です。
AWSのデータ認可に関する指針は、資料をモデルへ渡す前にアクセス制御を適用する重要性を強調しています。機密文書を取得してから、秘密にしてとモデルに頼むプロンプトへ依存しないでください。アプリケーションと検索システムで権限を適用します。
情報に見せかけた指示を取得する
文書には、アシスタントを別の方向へ誘導する文章が入ることがあります。2023年の間接的プロンプトインジェクションの研究は、検索経由で来たというだけで内容を無害と考えられない理由を示しています。情報源の文章はデータとして扱い、ツールの権限を制限し、敵対的な例を試してください。悪意ある指示を無視してと言うだけでは、完全なセキュリティ境界にはなりません。
文脈は多いほどよいと思い込む
『Lost in the Middle』は、調べたモデルとタスクにおいて、関連情報の位置が性能に影響することを見つけました。文脈の選び方を評価する理由にはなりますが、すべてのモデルが中央のすべての箇所を無視する証拠ではありません。
二つの節を組み合わせる、例外に気づく、旧版と新版の食い違いを解く必要のある問いを試しましょう。たまたま文書の先頭にある一文を何度も尋ねるより、多くがわかります。
最初の実用的な実験
私なら、機微情報のない小さな資料群と、答えを人間が確認できる問いから始めます。資料内に答えがない問いも入れてください。そうしないと、アシスタントがいつ即興をやめるべきか理解しているか、一度も試せません。
各回答で三つを別々に確認します。検索は必要な証拠を見つけたか、回答はそれを忠実に使ったか、問いに答えたか。Ragasの評価論文は、このような多面的な評価を説明しています。自動スコアは版の比較に役立ちますが、自分で失敗を調べる代わりにはしないでください。
架空のキャリーなら、欠けている寸法、旧版の製品資料、質問の路線を明示的に除外する航空会社の規則を試します。制限された文書にアクセスできないことも確認します。システムの一部を変えるときも同じ問いを使い、改善を単なる印象で終わらせないようにしましょう。私たちのAIコーディングのベンチマークの記事(英語)も、選んだ試験が結論を左右する別の場面を扱っています。
非公開文書の二つ目の無管理コピーをログに作らず、失敗を調べるのに十分な記録を残します。更新と削除の手順も加えてください。本番運用の仕事は、デモほど華やかでないことが多いものです。去年の規則が検索で勝ち続けないようにする人が必要です。
よくある質問
RAGには意味検索が必須ですか?
いいえ。取得にはキーワード検索など、適した別の方法も使えます。意味検索は有用な選択肢です。取得した資料に基づく生成という全体の形が、RAGを成り立たせます。
費用はどのくらいですか?
文書処理、索引作成、保存、検索、モデルの入力と出力、保守を見積もります。実測した一回の問い合わせ費用に、想定回数を掛けてください。例として、一回1セントの問い合わせを毎日1万回繰り返すと、ほかの費用を含めず30日で約3,000ドルです。これは算数であり、サービス会社の提示価格ではありません。
引用があれば答えは証明されますか?
いいえ。出典を開き、その特定の主張を支えるか確認してください。航空会社のトップページへのリンクだけでは、自分の便の手荷物許容量は確定しません。
エージェントもRAGを使えますか?
はい。エージェントは、より大きなタスクの一部として、いつ情報を検索するか選べます。エージェントと呼んでも、証拠の確認やアクセス制御の必要は消えません。
猫の見方:RAGはアシスタントに本棚を与えます。それでも、正しい本を選び、正しいページを読み、その本が届いた箱について自信満々に説明する誘惑に耐えなければなりません。
2026-05-05公開の英語版の記事を日本語に翻訳しました。翻訳日:2026年10月30日。翻訳にはAIを使用し、記事内の時点は原文に合わせています。




