RAG(検索拡張生成 / Retrieval-Augmented Generation)は、質問に関係する自社の文書やデータをまず検索し、その中身を「根拠」としてLLMに渡してから答えさせる仕組みです。モデルそのものを学習し直さなくても、社内規程・製品仕様・FAQといった「そのモデルが知らない情報」に答えられるようになり、しかもどの文書を根拠にしたかを示せるのが最大の利点。本章では、RAGが何をしているのか、なぜ効くのか、どこでつまずくのかを、図を交えて全体像から押さえます。
FIG.1 RAG =「検索(Retrieval)」して「生成(Generation)」する2段構え。LLMは検索結果を根拠に答える
01RAG が解こうとしている問題
LLM(ChatGPT や Claude、Gemini など)は、学習に使われた大量のテキストから「もっともらしい続き」を作る仕組みです。だからこそ、学習データに入っていない情報──たとえばあなたの会社の就業規則、昨日更新した製品マニュアル、特定顧客の契約内容──は本来知りません。それでも質問されると、知っているかのようにそれらしい嘘(ハルシネーション)を作ってしまうことがあります。
RAGはここに、ひと手間を挟みます。質問に関連しそうな文書を先に検索して取り出し、その本文をプロンプトに同梱してからLLMに答えさせるのです。LLMは「自分の記憶」ではなく「目の前に渡された資料」を読んで答えるので、知らないことを当てずっぽうで埋める余地が減り、根拠も示せるようになります。
02基本フロー:取り込み → 検索 → 生成
RAGは大きく、事前に文書を準備する「取り込み(インデックス作成)」と、質問が来てから動く「検索 → 生成」に分かれます。地味ですが、品質はこの各段の積み重ねで決まります。
取り込み(事前準備)
文書を扱いやすい長さの断片(チャンク)に分割し、各チャンクを埋め込み(embedding=意味を表す数値ベクトル)に変換して、ベクトルDBに格納・索引化しておきます。一度作れば、質問のたびに作り直す必要はありません。