RAG
AIモデルが外部DBから情報を取得(Retrieve)し、それを元に応答を生成(Generate)する手法のこと
構成要素
検索だけできるMCPみたいなものねmrsekut.icon
GPT-4.icon
なぜRAGが必要なのか?
1. 情報の最新性の確保:
通常のLLMはトレーニングデータが固定されているため、最新の情報を反映できません。しかし、RAGはリアルタイムで外部データを取得することで、最新の情報を提供できます。
2. 専門知識の提供:
特定のドメイン(医療、法律、技術仕様など)に関する深い知識を要求される場合、一般的なLLMでは不十分です。RAGは専門的なデータベースから必要な知識を取り出して、正確かつ専門的な回答を生成します。
3. モデルサイズの効率化:
大量の知識をLLM自体に詰め込むのではなく、外部リソースから動的に取得することで、モデルのサイズを効率化し、計算リソースを節約できます。
RAGの動作フロー
1. 質問の入力:
ユーザーが質問を入力します。
2. 質問のベクトル化:
Retriever が質問をベクトル化して、外部データベース内のドキュメントと類似度検索を行います。
3. 関連情報の取得:
最も関連性が高い情報を取得します。複数のドキュメントを取得することが多いです。
4. 情報のコンテキスト化:
取得した情報をそのまま返すのではなく、Generator に渡して回答を生成する際のコンテキストとして使用します。
5. 応答の生成:
Generator が質問と取得した情報を組み合わせて、最適な回答を生成します。
6. 回答の出力:
ユーザーに対して自然な言語で回答を出力します。
RAGの具体例
1. 検索エンジン連携型のチャットボット
質問:「2025年のiPhoneの新機能は?」
フロー:
1. Retriever が質問に関連する最新のニュース記事を検索。
2. 取得した記事内容を Generator に渡して回答を生成。
3. 回答:「2025年のiPhoneには、折りたたみ式ディスプレイと新しいAIアシスタントが搭載されています。」
lang chain
この辺の作業も必要
ドキュメントをvector化する
vectorをDBに保存する
DBから検索する
外部知識を参照できる