目次
ChatGPTクローンの代表格の一つとしてLibreChatがありますが、デフォルト設定だと画像ファイル以外はエラーになります。
今回はpdfを読み込む方法としてRAG-APIを試してみたので、備忘録として残しておきます。
RAG-APIとは
RAG-APIはLibreChatの作者と同じ方が作成された、IDベースのRAG(Retrieval Augmentation Generation)用APIです。
詳細はGitHubを参照してください。
正式にはID-based RAG FastAPIという名前っぽいですね。
LangchainとFastAPIを使って、ドキュメントの索引や取得が大規模なデータでも対応できるようになるみたいです。ファイルはIDごとに整理されるので、必要な情報をすぐ見つけられます。
基本的にはLibreChatと組み合わせて使うことが想定されているようです。
RAG-APIをLibreChatと組み合わせる
RAG-APIを利用するとpdfなどの大規模なデータをチャンク+embeddingしてくれるので利用可能になるみたいです。
実際にLibreChatと組み合わせてみましょう。
LibreChatを最新版にする
LibreChatとRAG-APIの連携は最新の機能なので、LibreChatも最新にする必要があります。
基本的にはgitをpullしてくれば問題ありません。ただし最新版はdockerのimageを外部から取得してくる設定になっているので、ローカルでimageを改良している場合は注意してください。(プラグイン等)
envファイルに設定を記入する
続いて.env
ファイルにRAG-APIと連携するURLを追加します。
RAG_API_URL=http://host.docker.internal:8000
追記する場所はどこでも問題ないですが、私は一番下に追加しておきました。
基本的にはdockerを利用していると思いますが、dockerを使わない場合は下記のようにRAG-APIのURLをローカルにする必要があります。
RAG_API_URL=http://localhost:8000
RAG-APIを起動する
コマンドラインで下記を実行してrag-apiを起動します。
docker compose -f rag.yml up
これでセットアップは完了です。実際にPDFの読み取りを試すと、うまくいきました。ただし、残念ながらCSVファイルは対応していないようです。
使ってみた感想
個人的な実感ですが、一部ファイルでは未だにエラーが出ます。またデプロイ環境によってはメモリ不足だからか大容量のpdfファイルも難しいようです。
仕組み的に一度チャンクしてそれをembedしているので、時間もかかりますし今のところはまだお試し的な感じですね。
使えないよりはいいので使っていますが、そもそもRAG-API自体も4GB程度の容量があるのでそれなりに余裕のあるサーバ等でないと厳しそうですね(おそらくec2のmicroとかでは厳しそう)。
参考