RAG(検索拡張生成)

Retrieval-Augmented Generation

RAGとは

RAG(Retrieval-Augmented Generation:検索拡張生成)とは、大規模言語モデル(LLM)に外部知識の検索機能を組み合わせた技術フレームワークです。質問や指示に応じて関連する情報を外部データソースから検索し、その情報を基にLLMが回答を生成します。2020年にMeta AIのPatrick Lewisらが提案しました。

表:RAG(検索拡張生成)の要点まとめ
ひとことで言うと外部の文書を検索し、その内容をもとにLLMに答えさせる仕組み。
どこで使う社内規程QA、製品マニュアル検索、顧客サポートの一次対応。
注意点検索の精度が回答の精度を決める。文書の整備・更新が成否を分ける。

RAGの仕組み

RAGは大きく3つのステップで動作します。まず、ユーザーの質問を埋め込みベクトルに変換し、ベクトルデータベースから類似した文書チャンクを検索します(Retrieval)。次に、検索された文書をプロンプトに追加します(Augmentation)。最後に、LLMが元の質問と検索された文書の情報を基に回答を生成します(Generation)。

図:RAGが答えを作るまで
1質問を受取る利用者の問い合わせ
▶
2ベクトル化意味を数値に変換
▶
3関連文書を検索意味の近い文書を取得
▶
4LLMに渡す質問+文書をセット
▶
5出典付き回答資料に基づいて答える

※ 追加学習より安く、資料を差し替えるだけで最新の内容に更新できます。

RAGの利点

LLM単体では学習データに含まれない最新情報や専門知識に基づく回答が困難ですが、RAGにより外部の最新データを参照できます。また、回答の根拠となる文書を提示できるため、透明性と信頼性が向上します。ハルシネーション(事実と異なる回答の生成)の軽減にも効果があります。

RAGの課題と発展

検索精度がRAG全体の性能のボトルネックとなることがあります。チャンクサイズの最適化、ハイブリッド検索(キーワード+ベクトル検索)、リランキング、マルチホップ検索などの技術で改善が図られています。