DynamoDB にリアルタイムベクター検索が誕生!専用ベクター DB とはサヨナラ
こんにちは、しぃちゃんだよ!今日は AWS からすごく大きなニュースが飛び込んできたよ。あの Amazon DynamoDB に、なんとリアルタイムのベクター検索機能が正式に搭載されたんだって!しぃちゃん、データベースの裏側の仕組みを考えるのが大好きだから、この発表を読んでてわくわくが止まらなかったの。さっそく紹介していくね!
AWS Blogなにが発表されたの?
AWS Blog によると、Amazon DynamoDB のベクター検索機能が一般提供(GA)になったよ。運用データと一緒にベクター埋め込みを DynamoDB のテーブルに保存して、別のベクターストアへレプリケーションすることなく、そのまま類似度検索を実行できるようになったんだって。
原文の一文目にはこう書いてあるの。
Today, we're announcing the general availability of vector search in Amazon DynamoDB.
パフォーマンス面では、1 桁ミリ秒(single-digit millisecond)のレイテンシーで 99% 以上のリコール率を実現していて、しかも「trillions of vectors」という桁違いのスケールにも対応できるように設計されているみたい。専用のベクターデータベース基盤を用意しなくても、DynamoDB だけでセマンティック検索ができちゃうのが今回のポイントなの。
今までどうだったの?
今まで、DynamoDB に保存した運用データに対してベクター検索(類似度検索)をしたいときは、別途専用のベクターデータベースを用意して、そこにデータをレプリケーションする必要があったの。
そうすると、同期パイプラインの保守や、データ移動にかかるコスト、追加のライセンス費用なんかが発生しちゃって、地味に負担が大きかったんだよね。運用データとベクターデータが別々の場所にあることで、整合性を保つのも一苦労だったみたい。
これで何が変わるの?
今回の発表で、ベクターと運用データが同じサーバーレス基盤の上に同居できるようになったよ。しかも料金モデルも既存の DynamoDB と同じ pay-per-request のまま。サーバーのプロビジョニングもパッチ適用も不要で、バージョン管理やメンテナンスウィンドウ、ダウンタイムを伴うメンテナンスからも解放されるの。
これによって、RAG(検索拡張生成)やレコメンドエンジン、パーソナライズ、異常検知、自然言語での商品検索(たとえば「軽量の夏用ランニングシューズ」といった検索)、それにエージェントの記憶のセマンティック検索まで、いろんなユースケースを DynamoDB だけで完結できるようになるんだって。すでに DynamoDB を使っているサービスなら、新しいインフラを増やさずに AI 機能を足せるのがうれしいポイントだよ。
深く潜ってみよう
仕組みも面白いから紹介するね。
- 保存方式: ベクター埋め込みは、DynamoDB が既存で持っている List 型(要素は Number 型)を使って保存されるよ。スキーマ変更は不要で、標準の
PutItemAPI でそのまま書き込めるの - ベクターインデックス: 属性の上に新しいベクターインデックスタイプを作成して、ベクター属性名・次元数(最大 4096 次元)・距離関数・フィルター用の非ベクター属性を指定する仕組み
- 距離関数: ユークリッド距離(ベクターの大きさが意味を持つ場合)、コサイン距離(大きさではなく角度を測る場合)、ドット積(方向と大きさの両方が重要な場合)の 3 種類から選べるよ
- 検索 API:
SearchVectorsAPI がクエリベクターと返却件数(最大 100 件)、任意のフィルター条件を受け取って検索してくれるの。ただしフィルター条件は完全一致のみ対応で、BETWEENやBEGINS_WITHのような範囲条件は使えないから注意してね - 埋め込みの生成: Amazon Bedrock の Titan や Cohere Embed、OpenAI など好きなモデルで埋め込みを作って、そのまま DynamoDB に保存できるよ
- 提供リージョン: すべての商用 AWS リージョンと AWS GovCloud (US) リージョンで利用可能とのことだよ
パーティションキーによってベクターがパーティション全体に分散されることで、スケーラビリティと低レイテンシーの両立を実現しているみたい。
まとめ
- DynamoDB でベクター検索が GA(一般提供)になったよ
- 1 桁ミリ秒のレイテンシーで 99% 以上のリコール率、トリリオン規模のベクターにも対応できる設計
- 専用ベクターデータベースへのレプリケーションが不要になって、同期パイプラインの保守コストから解放される
- 保存は既存の List/Number 型、検索は
SearchVectorsAPI(次元数は最大 4096、結果は最大 100 件、フィルターは完全一致のみ) - 料金モデルは既存の DynamoDB と同じ pay-per-request
すでに DynamoDB でアプリを運用していて、RAG やレコメンド機能を足したいと思っていたエンジニアさんには、まさにドンピシャの発表だと思うよ!