Cloudflare Vectorize(ベクトルを保存して近傍検索できるサービス)の料金がどう決まるのか調べた。あとで見返す用にまとめておく。数字は2026年4月時点の公式ページのもので、そのうち変わると思う。最後に、10〜20万字くらいの本を100冊ぶん入れたらいくらになるか、という例で計算してみる。
料金の測り方
最初は「ベクトルを何本保存したか」で課金されると思っていたが、違った。「本数 × 次元数」の総量で測る。次元数というのは、1本のベクトルが持つ数値の個数のこと(bge-m3なら1024個)。軸は2つある。
| 軸 | 中身 | 単価(無料枠を超えた分) |
|---|---|---|
| Stored(保存) | 置いてあるベクトルの次元の総量 | 1億次元あたり月 $0.05 |
| Queried(検索) | 検索で消費した次元の総量 | 100万次元あたり $0.01 |
公式の計算式はこう書いてある。
月額 = (検索回数 + 保存本数) × 次元数 × ($0.01 / 100万)
+ (保存本数 × 次元数) × ($0.05 / 1億)
検索側の項に保存本数が足されているのが、最初はよく分からなかった。公式の例を見ると腑に落ちる。768次元のベクトルを1万本保存して、月3万回検索するケースだと、
- 検索の次元 = (30,000 + 10,000) × 768 ≒ 3072万
- 保存の次元 = 10,000 × 768 ≒ 768万
で月 $0.31。ただしこれは無料枠を引く前の素の額で、あとで出す無料枠に収まればこの分は請求されない。単価の感覚を掴むための例、ということみたい。
無料枠と有料枠
請求されるのは無料枠を超えた分だけ。枠はプランで違う。
- Freeプラン:保存500万次元、検索3000万次元/月まで無料
- Workers Paid(月$5のプラン):保存1000万次元、検索5000万次元/月まで込み
CPUやメモリ、インデックスの数、egress(転送量)では課金されないらしい。純粋に上の2軸だけ見ればいい。
例:10〜20万字の本を100冊入れる
ここで最初に予告した見積もり。前提を先に決める。
- 1冊は10〜20万字。あいだをとって15万字とする
- chunkは1つ500字くらい。すると1冊で 150,000 ÷ 500 = 約300 chunk
- 100冊で約3万 chunk
- 埋め込みは1024次元のモデルを使うとする
- 検索は執筆で使うくらいで、月1万回とする
これを式に入れる。
保存の次元 = 30,000 × 1024 = 3072万
検索の次元 = (10,000 + 30,000) × 1024 = 4096万
Workers Paid の込み枠(保存1000万・検索5000万)を引くと:
保存の課金分 = 3072万 − 1000万 = 2072万 → × $0.05/1億 ≒ $0.01
検索の課金分 = 4096万 − 5000万 < 0 → 枠内なので $0
というわけで、Vectorizeの追加料金は月1セント程度。本を100冊入れてもこの安さになる。実際に効いてくるのはWorkers Paidの月$5のほうで、Vectorizeはそのオマケくらいの位置づけ。
見落としがちなところ
Freeプランのままだと100冊は入らない。保存の無料枠が500万次元で、1024次元で割ると約4,900本。1冊300 chunkなら15〜16冊で頭打ちになる。まとまった量を入れるつもりなら、Workers Paidが実質の前提。
あと、次元数がそのまま保存コストに乗る。1536次元のモデルを選ぶと、1024次元より1.5倍の保存量になる。とはいえ上で見たとおり元の額が小さいので、100冊くらいなら誤差の範囲。次元数を気にするのは、もっと桁が増えてからでよさそう。
検索のコストは検索回数にだいたい比例する(保存本数は月1回足されるだけ)ので、大量に叩く用途でなければほぼ無視していい。書くたびに数回検索するくらいなら、料金を気にする場面はまず来ないと思う。