先生、この前 ChatGPT に「うちの部活の規則教えて」って聞いたら、めっちゃ適当な答え返ってきたんだけど!
なんで?
ジャスミンちゃん、今日の主役はあなたね。
LLM の最大の弱点——「学習データにない最新情報や特定組織の知識には答えられない」っていうのを、見事に体験したってことなのよ。
LLM は事前学習した範囲しか知らないし、その中でも曖昧な部分はハルシネーションで作話してしまう——という課題ですね。
そう。
それを解決する技術がRAG(Retrieval-Augmented Generation、検索拡張生成)よ。
RAG の流れは3ステップ。
①ユーザーの質問に関連する文書を検索(Retrieval)する。
②検索結果を LLM のプロンプトに追加する。
③LLM が検索結果を参考に回答を生成(Generation)する。
うそっ!?
要は「ネット検索してから答える友達」みたいなもんじゃん!
ジャスミンちゃん、たとえが上手くなってるわね。
知識を丸暗記するんじゃなくて、必要な時に参考書を引いて答える学習スタイルと同じことね。
えへへ、ましろもテスト持ち込み可だったらそうする〜!
補足すると、RAG の利点は3つあります。
①ハルシネーション軽減(根拠文書に基づくので作話しにくい)、②最新情報への対応(検索対象DBを更新すればOK)、③組織固有の知識活用(社内文書・マニュアルを検索対象にできる)。
ファインチューニングと違って、モデル自体を再訓練する必要がないから、コスト的にも運用的にも現実的です。
どんな場面で使われてるの?
典型的なのが社内ナレッジベースへの質問応答システム。
社内規定・マニュアル・過去のFAQなどを RAG に食わせて、社員が自然言語で質問できるようにする。
ジャスミンちゃんの部活規則も、もし顧問の先生が部の規則集をRAG化してくれれば、ChatGPT みたいに聞けるようになるわ。
あたし規則よくわかんないから、先生作ってよ!
自由研究にもいけそうじゃん!
ふふっ、ジャスミンちゃん、生徒会書記のつむぎさんと一緒に企画してみたら?
学校の規則集を RAG 化するの、いい自由研究になりそうよ。
補足: 実装としては、文書をチャンクに分割→埋め込みベクトル化→ベクトル DB に格納→質問が来たら類似検索→結果を LLM に渡す、という構成が標準です。
RAG の課題もいくつかあって、①検索精度がそのまま回答精度を左右する、②関係のない文書を引っ張ると逆にノイズになる、③長い文書では要点を見逃すことがある。
改善技術としてHyDE(仮説文書で検索クエリ拡張)やリランキング(再ランク付け)があります。
つむぎさんの補足、実務的にとても重要ね。
次回はその心臓部である「ベクトル DB」を扱うわよ。
試験では「RAG=外部知識を検索してLLMの回答に使う」「3ステップ」「ハルシネーション軽減効果」の3点を押さえておいてね。
確認クイズ
RAG の最大のメリットとして最も適切なものはどれか。
- モデルの学習速度が上がる
- 外部知識に基づき回答精度が向上しハルシネーションが軽減される
- パラメータ数を削減できる
- オフラインでも動作する
こたえを見る
正解: 2. 外部知識に基づき回答精度が向上しハルシネーションが軽減される
RAG は外部の正確な情報に基づいて回答を生成するため、回答精度の向上とハルシネーションの軽減に効果があります。学習速度・パラメータ削減・オフライン動作は直接のメリットではありません。