Skip to main content

S3 Vectors と次世代版 OpenSearch Serverless、どちらが安いかはクエリの数ではなく密度で決まる

こんにちは~ 浮田です。

前回、次世代の OpenSearch Serverless で自分のブログを意味検索できるようにしました。そのとき CloudWatch で OCU を 1 分刻みで追って、「アイドルで本当に 0 OCU」「最後の操作から約 10 分で 0 に戻る」まで確認しています。検証で動いたのは最大 3 OCU、時間にして十数分でした。

その数字を持ったまま、「S3 Vectors vs OpenSearch」のコスト比較記事をいくつか読んでみたんです。書いてあることが、自分の実測と噛み合いません。「OpenSearch は月 350 ドルの固定費がかかる」と書いてありますが、私が払ったのは数十円です。

調べたら、噛み合わないのは当然でした。私が読んでいた記事は、私が使ったのとは別の世代の OpenSearch の話をしていたからです。

 

■ 前回の実測値を、東京の単価で出し直す

まず前回の数字を再掲します。CloudWatch の SearchOCU と IndexingOCU を 1 分刻みで見た値です。

状態

IndexingOCU

SearchOCU

触る前(アイドル)

0

0

投入・検索中

1

2

最後の操作から約 10 分後

0

0

公式の idle timeout が 10 分で、実測もそのとおりでした。

ここで訂正があります。

前回「3 OCU × 0.25 時間 × $0.24 ≒ $0.18、約 27 円」と書きましたが、$0.24 は us-east-1 の単価です。私が使っているのは東京で、東京の OCU は $0.334/時。計算し直すと 3 × 0.25 × 0.334 = $0.25、約 38 円になります。

以降の数字はすべて東京の単価です。

 

■ よく見る比較表と、その賞味期限

「S3 Vectors OpenSearch コスト」で検索すると、だいたいこういう表に行き着きます。

月額

根拠

OpenSearch Serverless

約 $350

最低 2 OCU × 24 時間 × 30 日 × $0.24

S3 Vectors

$11.38

公式の試算例(1,000 万ベクトル、月 100 万クエリ)

30 倍の差です。これだけ違えば S3 Vectors 一択、という結論になります。

そして私はその表を、古い話だと気づかずに読んでいました。

S3 Vectors のプレビューが 2025 年 7 月、GA が 12 月。

比較記事が集中して書かれたのはこの時期です。

当時の OpenSearch Serverless は、いま Classic と呼ばれている世代で、本番構成では最低 2 OCU が常時課金されました。東京の単価なら 2 × 730 時間 × $0.334 で月 $488、us-east-1 なら $350。「月 350 ドルの固定費」は、この時点では正しい数字でした。

2026 年 5 月末に次世代版が GA になり、最低 OCU の要件がなくなりました。10 分間リクエストがなければ Search も Indexing も 0 に落ち、請求も止まります。Classic の「最低 2 OCU」は次世代版には存在しません。

記事が書かれた時点では、どちらの数字も正しいものでした。ただ、前提が変わったあとも記事はそのまま残ります。

 

■ S3 Vectors 側も GA で変わっている

S3 Vectors 側も、GA で上限が大きく変わっています。

項目

プレビュー

GA(2025 年 12 月)

1 インデックスあたりのベクトル数

5,000 万

20 億

書き込みリクエスト/秒(1 インデックス)

5

1,000

メタデータキー数

10

50

1 クエリで返せる件数

30

100(2026 年 6 月から最大 10,000。1 ページ 100 件)

 

■ 課金の構造を並べる

金額を出す前に、何に課金されるかを並べておきます。ここを飛ばすと試算が外れます。

次世代版は「動いていた時間」への課金です。OCU が 3 種類と、ストレージがあります。

項目

東京の単価

Search OCU

$0.334 / OCU 時

Indexing OCU

$0.334 / OCU 時

Vector Index Acceleration OCU

$0.334 / OCU 時

ホットストレージ

$0.36 / GB-月

OCU の 3 つ目は知りませんでした。次世代版のベクトル検索コレクションでは、HNSW のインデックス構築を GPU で加速する処理が自動で走ることがあり、それが別項目で請求されます。Classic ではコレクション単位でオン・オフを選んでいたものが、次世代版では勝手に効いて、勝手に請求書に出ます。インデックス単位で無効にはできます。

前回の実測で面白かったのは、Indexing と Search が別々に idle 判定されていたことです。先に使い終わった投入側が先に 0 になり、検索側が後から 0 になる。これは課金でもそのまま効きます。RAG のワークロードでは投入と検索のパターンがまったく違うからです。

投入は初回に一括で、あとは記事を書いたときだけ動きます。検索はユーザーが使う時間帯に張り付きます。両方まとめて「月◯ OCU」と見積もると外します。

S3 Vectors は「置いたバイトと投げたリクエスト」への課金です。

項目

東京の単価

ストレージ

$0.066 / GB-月

PUT

$0.219 / GB(1 回 128 KB 最低)

クエリのリクエスト

$2.7 / 百万

クエリの処理データ量

索引内 10 万ベクトルまで $0.004278 / TB、1,000 万まで $0.002139 / TB、それ以上 $0.000428 / TB

クエリの返却データ量

$0.01 / GB(1 クエリ 500 KB まで無料)

処理データ量の計算が独特なので書いておきます。1 クエリごとに「索引にあるベクトル数 × 平均ベクトルサイズ(ベクトル本体 + キー + フィルタ可能メタデータ)」を処理したものとして課金されます。1,024 次元なら本体だけで 4 KB なので、100 万ベクトルの索引に 1 回クエリを投げると 4.6 GB ぶん処理した扱いです。

これを見て公式の試算例を読み直すと、1,000 万ベクトルをわざわざ 25 万ずつ 40 個の索引に分けている理由が分かります。処理データ量の課金は索引ごとに数えられるので、小さな索引に分けたほうが安くなります。試算例の $11.38 は、その分け方をした上での数字です。  

 

■ 試算し直す

前提を揃えて 3 パターン出します。

  • ベクトル: 1,024 次元(4 KB)、キー 0.1 KB、フィルタ可能メタデータ 0.5 KB、本文(非フィルタ)1.5 KB。保存で 6.1 KB、クエリ処理で 4.6 KB
  • S3 Vectors の PUT は 6 か月に 1 回の全量再投入を月割り
  • 次世代版の OCU 数は「起きている時間 × Search OCU 数」。前回の実測では検索中 2 OCU だったので、1 と 2 の両方を出す
  • Indexing OCU と GPU 加速は投入時だけなので、月額からは除いた(初回投入で 1 OCU × 1 時間なら $0.33)

先に S3 Vectors。

ベクトル数

クエリ/月

ストレージ

PUT

クエリ

合計(USD)

10 万

3,000

0.04

0.02

0.01

0.08

10 万

10 万

0.04

0.02

0.47

0.53

10 万

100 万

0.04

0.02

4.67

4.73

100 万

3,000

0.40

0.22

0.04

0.67

100 万

10 万

0.40

0.22

1.35

1.98

100 万

100 万

0.40

0.22

13.52

14.15

1,000 万

3,000

4.03

2.23

0.31

6.56

1,000 万

10 万

4.03

2.23

10.21

16.46

1,000 万

100 万

4.03

2.23

102.08

108.33

クエリ費だけを見ると、100 万クエリあたり 10 万ベクトルで $4.7、100 万で $13.5、1,000 万で $102 です。S3 Vectors では、ベクトル数に比例して 1 クエリの値段が上がっていきます。

次に次世代版です。こちらの月額はクエリ数ではなく、起きている時間で決まります。

ベクトル数

使い方

起きている時間/月

OCU

合計(USD)

100 万

1 日 3 回まとまって使う(15 分 × 3)

16 時間

1

7

100 万

平日日中ずっと(9 時間 × 21 日)

189 時間

1

65

100 万

平日日中ずっと、負荷高め

189 時間

2

128

100 万

24 時間 365 日

730 時間

1

246

100 万

24 時間 365 日、負荷高め

730 時間

2

490

10 万ベクトルでも数字はほぼ同じです(ストレージが $2.2 から $0.22 に減るだけ)。次世代版の月額はデータ量にほとんど依存せず、起きている時間で決まります。

ベクトル数

2 本の線が交わるところを計算しました。

S3 Vectors 側のベクトル数

次世代版を常時 1 OCU($244)で動かした場合と並ぶクエリ数/月

10 万

約 5,200 万

100 万

約 1,800 万

1,000 万

約 240 万

1,000 万ベクトルで月 240 万クエリは、1 秒に 1 回ずつひと月投げ続けるあたりです。

10 万ベクトルなら毎秒 20 回で、そこまで来ると次世代版も 1 OCU では足りません。

次世代版を 24 時間起こしておく構成と比べる限り、この線まで S3 Vectors のほうが安くなります。

ただし次世代版の線は、起きている時間を減らせば下がります。

1 日 3 回まとめて使う月 $7 の構成と比べると、S3 Vectors が安いのは 10 万ベクトルで月 150 万クエリ、100 万ベクトルで 47 万クエリまでです。

1,000 万ベクトルでは置いておくだけで月 $6 かかるので、月 7,000 クエリで並びます。

大きな索引をたまにしか叩かないなら、寝かせた次世代版のほうが安いという結果です。

次世代版の月額を決めるのはクエリの数ではなく、クエリがどれだけ固まっているかです。同じ 3,000 クエリでも、朝昼晩にまとまっていれば月 $7、9 時間の業務時間中に散らばっていれば $65 になります。

 

■ なぜこうなったのか

次世代版が「エージェント向けに作り直した」と言われる理由は、前回書いたとおり、AI エージェントの検索が不規則でバースト的だからです。

S3 Vectors が狙っている「たまにしか叩かない RAG」も、使われ方としてはこれとかなり重なります。

似た使われ方を想定していても、料金の形は出どころで決まっています。

S3 Vectors は S3 の一部なので、置いたバイト数と投げたリクエスト数で課金されます。OpenSearch Serverless は検索エンジンなので、動いていた時間で課金されます。

同じ用途に見えても、片方はストレージの料金表で、もう片方は計算リソースの料金表です。前の章に並べた 2 つの表の違いは、そのまま出どころの違いです。

課金モデルが動くのはこの 2 つに限りません。Lambda も Fargate も Aurora Serverless も、最低構成や課金の刻みは何度も変わってきました。機能は増える一方なのに対して課金モデルは書き換わるので、サーバーレスの比較記事は課金の部分から先に古くなります。


● 早見表

条件

有利

理由

クエリが 1 日数十回、時間帯がまとまっている

どちらでも

次世代版も起きている時間が短いので月数ドル

クエリが 1 日数十回、業務時間中に散らばる

S3 Vectors

次世代版は 10 分ごとに起こされて張り付く

業務時間中ずっと使う

S3 Vectors

差は 60 倍前後。ただし機能面の差は次回

24 時間ずっと使う

S3 Vectors

1,000 万ベクトルで月 240 万クエリまでは S3 Vectors

月に数百万クエリ以上を大きな索引に投げる

要計算

S3 Vectors のクエリ費が OCU の固定費に追いつく

大量再インデックスが定期的にある

要計算

次世代版は Indexing OCU と GPU 加速が別勘定

ハイブリッド検索や完全一致が要る

比較にならない

S3 Vectors 単体ではできない

最後の行がこの記事で書けなかったことです。

 

■ まとめ

「OpenSearch は月 350 ドルの固定費」という前提は次世代版で消えました。私の実測は 38 円で、前回 27 円と書いたのは us-east-1 の単価で計算していたからです。

ただしそれはアイドル時間がある場合の話で、ずっと使い続けるなら OCU は 0 に落ちません。S3 Vectors 側も GA で書き込みが 200 倍になっています。どちらが安いかは、クエリの数ではなく密度で決まります。

比較記事を読むときは、まず公開日を見てください。今回私が読んだ記事はどれも、書かれた時点では正しかったんです。この記事も、たぶん半年後には同じことを言われます。

表を作り直しながら気になっていたのは、コストで並べている記事はこれだけあるのに、検索結果が同じかどうかを測った記事がほとんどないことです。安いのは分かりましたが、同じものが返ってくるのかは、まだ分かっていません。

次回、同じデータを両方に入れて精度を測ります。前回の記事で作った次世代版のコレクションは、実は engine を指定できず、既定でディスク上の 32 倍圧縮になっていました。その話もそこで書きます。

※この記事は 2026 年 9 月時点の料金に基づきます。単価はすべて東京リージョン。試算は前提を明記した概算で、実際の請求は必ず最新の料金ページで取り直してください。  

 

■ 参考

  • Amazon OpenSearch Service 料金(公式)
  • Amazon S3 料金 Vectors タブ(公式。試算例 3 つを含む)
  • The next generation of Amazon OpenSearch Serverless: Built from the ground up for agents(AWS Big Data Blog、2026-05-28)
  • Amazon S3 Vectors is now generally available with 40 times the scale of preview(What's New、2025-12)
  • Amazon S3 Vectors now supports up to 10,000 similarity search results per query(What's New、2026-06)