LibreChatで画像以外のファイル(pdf)を読み込むRAG-APIの使い方

公開日:
目次

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とかでは厳しそう)。

参考