RAG(検索拡張生成)とは
RAG(Retrieval-Augmented Generation、検索拡張生成)は、質問に関係する文書を先に検索し、その内容をプロンプトに含めてから回答を生成させる仕組みです。モデルが学習していない社内文書や最新の情報を、再学習なしで扱えるようになります。
処理は大きく3段階です。まず文書を小さな断片に分けて検索できる形で保存します。次に、質問と意味の近い断片を探します。最後に、見つかった断片を「この資料だけを根拠に答えてください」という指示とともにモデルへ渡します。
実務で重要なのは、回答の根拠を示せる点です。どの文書のどの箇所を参照したかを一緒に返せば、利用者が確かめられます。もっともらしい誤り(ハルシネーション)を減らす手段としても使われます。
一方で、回答の質は検索の質で決まります。探すべき文書が見つからなければ、モデルは正しく答えられません。RAG の改善は、プロンプトよりも文書の整備と検索の調整から始めるのが近道です。
具体例
社内規程の問い合わせ窓口
総務部に毎日届く「出張の日当はいくら?」「慶弔休暇は何日?」といった質問に、就業規則や旅費規程を検索して答えるチャットを作ります。回答の末尾に参照した規程名と条番号を示すので、社員は原文で確かめられます。規程を改訂したら、文書を差し替えて索引を作り直すだけで、回答も最新になります。
根拠がないときに「分からない」と言わせる
RAG のプロンプトには、資料に答えがない場合の振る舞いを必ず書きます。
以下の資料を参考に、質問に答えてください。 資料:{検索結果} 質問:{質問}
以下の資料だけを根拠に、質問に答えてください。 資料に答えがない場合は「規程に記載がありません。総務部にお問い合わせください」と答えてください。 回答の最後に、参照した資料名と条番号を書いてください。 資料:{検索結果} 質問:{質問}