はじめに
PDFのファイルを学習させて、PDFの内容についてChatGPTと連携して応答するLINEボットを作りました。
データベースはQdrantを使用。
応答速度についてボトルネックになっていたのが、Qdrantへのアクセスの処理でした。
ボトルネック解消にはいくつかアプローチが考えられますが、まずは手っ取り早く金で解決する方法(サーバーのスケーリング)について、覚え書きを。
この記事の対象者
- PythonでRetrievalのコードを書いたことがある方
- Qdrantを使っている方
- Retrievalの高速化を模索している方
Qdrantとは
ベクトル類似検索エンジンおよびベクトルデータベース。
高速で高精度なベクトル検索を実行できます。
例えば歴史上の人物や商品などの類似アイテムを抽出することが可能。
他のベクトルデータベースとして、Pineconeがあります。
PDFの資料をRetrievalするLINEボット
Pythonでコーディングして、GCP(Google Cloud Platform)にデプロイ。
学習させたファイルは2つのPDFファイル(1.8MB 37ページ、1.8MB 24ページ)
QdrantでRetrievalを行う処理は、こちらの資料を参考にさせていただきました。
ベクトルデータベースの諸元はこちらの通り
スケールアップ前
使用量に対してRAMやメモリのリソースは余裕なので、スケーリングによるパフォーマンスの向上はそんなに大きくならないかも...
1ヶ月あたりのコストは33ドル(1ドル150円で4,950円)
スケールアップ後
結論から申しまして、コスト 2倍 で 5% の処理時間が短縮。
15文字程度の回答であれば処理時間が
4.38秒 → 3.93秒 と 10% 改善するケースも。
スケールアップ | 前 | 後 |
---|---|---|
RAM | 2.0 GB | 4.0 GB |
CPU | 0.5 Cores | 1.0 Cores |
Disk | 8.0 GB | 16.0 GB |
425文字平均回答時間 | 47.96 秒 | 45.47 秒 |
15文字平均回答時間 | 4.38 秒 | 3.93 秒 |
月額費用 | 33ドル | 67ドル |
1ヶ月あたりのコストは67ドル(1ドル150円で10,050円)
考察
- スケールアップによる速度の向上は確認できたが、2倍のコストに対して5-10%の改善は、コスパ悪い。
- Qdrantは一度スケールアップすると、スケールダウンができない。 もし、スケールダウンする場合は新たにクラスターを作成する必要がある。
- リソースに余裕がある状態では、スケールアップによる改善のアプローチは、コスト面であまり得策ではない。
おわりに
別のベクトルデータベースのPineconeも試して、パフォーマンスを確認したい。
参考資料