ベクターDBは"借りる"より"持つ"が正解のときがある ― Pineconeの月$70でハッとした話
RAGのベクターデータベースにPineconeを使い、放置していたら月末に思わぬ請求が届いた。マネージドサービスの"下限コスト"という落とし穴と、そこからQdrantをセルフホストへ切り替えた判断。"借りる"と"持つ"の天秤についての、現場の記録。
RAGの仕組みを試していた頃の話です。講義資料をAIに読み込ませて、その内容について答えるプロトタイプを作り、ベクターデータの保存先には、よく使われているマネージドのベクターデータベース Pinecone を選びました。ひととおり動くところまで作ると、満足して、しばらく放置していたのです。
その月末に届いた請求が、$22.25。そんなに使ったつもりはなかったので、ダッシュボードを開いてみると、1日あたり$2.2 がかかっていました。データは、ほとんど入れていないのに、です。
マネージドの”下限コスト”という落とし穴
理由はすぐに分かりました。当時のPineconeの有料プランは月$70からで、データ量に関係なく、その額が日割りで課金されていく仕組みでした。私が保存していたのは160個ほどのベクターでしたが、それでも請求は満額。円安も重なって、160個のデータを置いておくだけで、毎日300円ほどが出ていく計算でした。試作や趣味の範囲で触るには、さすがに高い。(金額は2023年当時のもので、Pineconeの料金体系はその後変わっています。)
マネージドサービスの”手軽さ”の裏には、こういう下限コストが隠れているのだと思います。使っても使わなくても、借りているだけで一定額はかかる。規模が出るまでは、その固定費のほうが重く感じられるのである。
横から来た一言
どうしたものかと思っていたところに、ベトナムチームでバックエンドとインフラを担当しているKから、「ベクターDBなら Qdrant がいいんじゃない?」と声がかかりました。
Kはインフラとバックエンド全般に強いエンジニアで、AIをやっていたという話は聞いたことがありません。それでも、この提案は的確でした。AIの中身ではなく、“それをどこに置くか”という一段外側から見ていたからこそ出てきた一言で、全体を見ている人ほど、こういう「ここは削れる」に気づくのだと思います。(この話は別の記事にも書きました。)
“借りる”から”持つ”へ
Qdrantは、Pineconeのようにフルマネージドでも使えますが、自分の環境にも立てられます。Dockerイメージが公開されているので、コンテナを一つ起動するだけ。データをローカルのディレクトリにボリュームとして持たせておけば、コンテナをうっかり消しても残ります。設定もURLとコレクション名を指定するだけで、Pineconeよりむしろシンプルでした。
こうして、“借りる(マネージド)“をやめて、“持つ(セルフホスト)“に切り替えました。固定の月額から、自分の手元で動くコンテナへ。
乗り換えが安かった、ほんとうの理由
ここで効いたのが、設計の”替えの効きやすさ”でした。
RAGは LangChain で組んでいて、ベクターデータベースは「vectorstore」という共通の口を通して呼んでいました。そのおかげで、PineconeからQdrantへの乗り換えで実際に書き換えたのは初期化のクラスを差し替えるほぼ一箇所だけで、検索や質問応答のコードは一行も触っていません。(下は当時=2023年のコードです)
# Before(Pinecone)
from langchain.vectorstores import Pinecone
docsearch = Pinecone(index, embeddings.embed_query, "text")
# After(Qdrant)
from langchain.vectorstores import Qdrant
docsearch = Qdrant(client=client,
collection_name=collection_name,
embeddings=embeddings.embed_query)
替えの効く部分を、替えの効く形にしておく。それだけで、「やっぱり乗り換えよう」という判断が、ずいぶん軽くなるのである。逆に、ここをべったり作り込んでいたら、コストに気づいても動けなかったかもしれません。
で、いつ”借りて”、いつ”持つ”か
マネージドが悪い、という話ではありません。天秤は、だいたいこう考えています。持つ(セルフホスト)が向くのは、小さくて断続的で、コストに敏感で、まだ規模の読めない段階——固定費を払いたくないときです。借りる(マネージド)が向くのは、規模とトラフィックが出ていて、可用性やスケール、バックアップといった運用そのものを任せたいときで、その手間をお金で買う価値がある段階だと思います。
結局は、下限コストと運用負荷の、どちらがいまの自分に重いか、というだけの話なのかもしれません。私の160個のベクターには、月$70の運用オフロードはまだ要らなかった。それだけのことでした。
最後に
念のため——これは一般的なRAGを試していたときの記録で、私たちの自社プロダクトの構成そのものではありません。ただ、“借りるか、持つか”の見極めは、どんなプロダクトにも効く判断だと思います。
AIを事業に組み込むとき、こうした「作る前・置く前」の小さな判断で、後のコストは何倍にも変わります。そのあたりから一緒に考えたい、という方は、こちらからお気軽にどうぞ。