サービス料金導入事例開発ブログ会社案内 お問い合わせ
Dev Blog

S3 Vectorsで全文検索は安くなるか。調べてわかった3つのこと

2019年に、PDFを全文検索するデモを作って公開していました。AWS Elasticsearch Service にテキストを放り込んで、AND検索とハイライトができるものです。

これを数年で止めました。理由は費用です。デモサイトなので月に数回しか検索されないのに、検索エンジンは24時間動いていて課金だけが続く。止めた当時の請求額そのものは手元に残っていないのですが、最小構成1ノードで月3,000〜5,000円程度だったと記憶しています。

2025年12月に Amazon S3 Vectors が一般提供になりました。S3 にベクトルを置いて近傍検索できるもので、専用のデータベースを立てずに済みます。これなら安く作り直せるのではないかと考えて、実際に調べました。

結論から書くと、3つのことがわかりました。

■1. 費用は桁違いに下がる

まず料金です(バージニア北部。東京リージョンは別掲がないため要確認)。

項目単価
ベクトル保存$0.06 / GB・月
投入(PUT)$0.20 / GB
クエリ$2.50 / 100万リクエスト
クエリ時の返却データ$0.01 / GB(1クエリ 512KB まで無料)

これを、うちのデモ規模(文書46件、チャンク3,687件、1,024次元)に当てはめます。クエリは月1,000回としました。

項目月額
S3 Vectors 保存(15MB)$0.0009
S3 Vectors クエリ(1,000回)$0.0025
Bedrockでクエリを埋め込み$0.003
Lambda / API Gateway無料枠内
合計$0.01未満 ≒ 月1.5円

誰も検索しなければ、ほぼゼロに漸近します。 常時起動しているものが無いからです。これが2019年の構成との決定的な違いで、止めた理由がそのまま解消されます。

■2. ただし、同じものは作れない

ここが本題です。料金だけ見て置き換えると、機能が減ります。

2019年デモの機能S3 Vectors
複数キーワードのAND検索✗ ベクトル検索に論理積の概念が無い
「型番 ABC-1234」の完全一致✗ 苦手。表記の近い別文書を拾う
ヒットした語のハイライト✗ どの語で当たったか原理的に出ない
「有給の申請方法」→「年次休暇届出について」✓ ベクトルの独壇場
部署・年度などでの絞り込み✓ フィルタ可能メタデータで可能

公式ドキュメントの制限一覧を見ると、キーワード検索に関する項目がそもそも存在しません。できないのではなく、そういう製品ではない、ということです。

「Elasticsearchをやめて S3 Vectors にする」ではなく、**「Elasticsearch に S3 Vectors を足す」**のが実務での姿になります。キーワード検索側のインフラは別途必要で、両方のスコアを統合して1つの結果にします。

つまり、置き換えによる費用削減を期待していると外します。

■3. 規模を上げると「安い」が崩れる

デモ規模では月1.5円でしたが、受託案件の規模(文書10万件、クエリ10万回/月)で試算すると様子が変わります。

保存とリクエスト課金だけなら月$1程度に収まります。ところがS3 Vectorsのクエリ課金は「リクエスト数」と「処理したデータ量」の合算で、インデックスが大きいほど後者が支配的になります。

AWSが公開している料金例では、4億ベクトル・40インデックス・1,000万クエリで、クエリ費用が月約$997。うちリクエスト課金は$25程度で、残りはすべて処理量課金です。

「S3 Vectorsは安い」で見積もりを止めると、40倍外します。実案件では必ず Pricing Calculator でインデックス構成ごとに計算する必要があります。

■結局、どう作り直したか

調べた結果、このデモに関してはAWSを使わないことにしました。

  • 文書の埋め込みは手元で事前に済ませ、結果をファイルとして書き出す
  • 検索はブラウザの中で動かす(ONNX Runtime Web + Ruri v3 30m / Apache-2.0)
  • キーワード検索は、文字2-gramのBM25を自前でJavaScriptに実装して併走させる

サーバー側は静的ファイルを返すだけになりました。検索のために動き続けるものが無いので、課金対象もありません。 既存のWebサーバーに置くだけです。

代わりに、来訪者の初回ダウンロードが49MB(うちモデルが44MB)と大きくなります。社内システムなら許容範囲ですが、不特定多数向けのサイトには向きません。費用をゼロにする代わりに、初回の待ち時間を払う構成だと理解しています。

文書46件・3,687チャンクで、意味の近い文書を拾えることは確認できました。

⇒ 全文検索デモを見る

■まとめ

  • S3 Vectorsで費用は確かに桁違いに下がる。常時起動の課金が消えるのが大きい
  • ただしAND検索・完全一致・ハイライトは無い。既存の検索の置き換えにはならない
  • 規模を上げると処理データ量課金が効いてくる。小規模の試算をそのまま伸ばすと外す

「検索が高いので安くしたい」という相談は、実は「何で検索しているか」を分けて考える必要があります。型番や氏名で引いているならベクトル検索は答えになりませんし、言い回しの違いを吸収したいならキーワード検索では届きません。両方必要なことがほとんどです。

当社では、社内文書やマニュアルの検索について、現状の使われ方の調査からご相談を承っています。どの検索が実際に使われているかを見ないと、構成も費用も決められないためです。

→ お問い合わせ