RAG
Retrieval Augmented Generation
AIモデルが外部DBから情報を取得(Retrieve)し、それを元に応答を生成(Generate)する手法のこと
構成要素
Retriever (RAG)
Generator (RAG)
#WIP
検索だけできるMCPみたいなものねmrsekut.icon
https://note.com/wandb_jp/n/n8ea88483a96c
https://zenn.dev/knowledgesense/articles/7a8e9aafe08d35
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アシスタントが搭載されています。」
https://zenn.dev/sompojapan_dx/articles/eb755a18e893ce
https://qiita.com/jw-automation/items/045917be7b558509fdf2
https://qiita.com/FukuharaYohei/items/0949aaac17f7b0a4c807
https://tech.algomatic.jp/entry/column/rag-00
https://python.langchain.com/docs/modules/data_connection/
lang chain
この辺の作業も必要
ドキュメントをvector化する
vectorをDBに保存する
DBから検索する
https://www.ibm.com/blogs/solutions/jp-ja/retrieval-augmented-generation-rag/
https://techblog.nhn-techorus.com/archives/30709
Amazon Bedrock
外部知識を参照できる
https://speakerdeck.com/smiyawaki0820/retrieval-based-lm-rag-system-zatukurili-jie-suru
CRAG
https://zenn.dev/knowledgesense/articles/bb5e15abb3c547