Empowering Your Chatbot: Unveiling Dynamic Knowledge Sources with Advanced Integration

概要
- RAGを用いたチャットボットの動的ソース更新手法についてのブログ
動的ソース更新の必要性
- チャットボットを運用しているとRAGのソースに存在しない新規の質問・回答データが増えていく
- これらを動的にRAGのソースに組み込むことで、チャットボットの性能が上がる
- 新しいデータと既存データをシームレスに統合するシステムが必要
RAGのソースデータの元となる情報
- 単一のQA
- そのまま質問と回答のペアを単一のチャンクにすることができる
- (特に記載はなかったが、実際の質問と人によって入力された回答、または高評価がついた回答をいれるのが良いのかなと思った)
- 幅広い情報が含まれていため、適切にチャンク分けして質問と回答のペアの形にして保存する
- (特に記載はなかったが、マニュアルや仕様書のPDFドキュメントと予想)
- チャンキングには ‣ のようなライブラリを用いる
- CSV
- 1行ごとに質問と回答のペアにして保存?
- (特に記載がなかったが、質問と回答がセットになったテーブルデータと想定)
ロジック
- MongoDBとベクトルDBの二重保存でデータ管理する
- MongoDBに保存することで、柔軟なソース管理が可能になる
- 特定のドキュメントに関する情報を削除するなどのオペレーションが楽になる
- ベクトルDBを用いずに、別のマイクロサービスにデータを連携することもできる
- 全件indexingも可能
- MongoDB
- ソース管理
id | type | createdAt | path |
1 | 1/1 0:00:00 | 1.pdf | |
2 | 1/2 1:00:00 | 2.pdf |
- ソースごとにチャンクわけしたドキュメントを作成
- ドキュメントをベクトルDBに保存
- 記事はPineconeを使っているが、無料版だと削除はできなかったり更新頻度に制限があるため注意が必要
感想
- RAGはいかにデータをきれいに最新に保つかが肝になるので、質問回答系のRAGはこのような仕組みが重要だと改めて感じた
ソースコード
FlaskでRAGのチャットボットをつくってみよう的なもの