Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Amazon S3 Vectorsは大規模ベクトル検索を低コスト化するサーバーレスなベクトルデ...

Avatar for quiver quiver
August 11, 2025

Amazon S3 Vectorsは大規模ベクトル検索を低コスト化するサーバーレスなベクトルデータベースだ #jawsugsaga / S3 Vectors As A Serverless Vector Database

2025/08/11『【佐賀現地・ハイブリッド開催】佐賀の中心でAWSを叫ぶ - connpass』登壇資料

https://jawsug-saga.connpass.com/event/362596/

■ Amazon S3 Vectorsについて

https://aws.amazon.com/s3/features/vectors/

Avatar for quiver

quiver

August 11, 2025
Tweet

More Decks by quiver

Other Decks in Technology

Transcript

  1. ⾃⼰紹介 2 • 名前 ◦ George Yoshida • ブログ ◦

    https://dev.classmethod.jp/author/quiver/ • 部署 ◦ クラスメソッド福岡オフィス ソリューションアーキテクト • Japan AWS Top Engineers ◦ 2024 : Database ◦ 2025 : AI/ML Data Engineer チバ! AWS Summit シガ! 出⾝地 サガ! JAWS-UG 開催地
  2. アジェンダ 3 1. Amazon S3 Vectorsとは 2. Amazon S3 Vectorsの作り⽅

    3. Amazon S3 Vectorsの使い⽅ a. S3 Vectorsを直接使う b. Amazon Bedrock Knowledge Basesと連携 c. Amazon OpenSearch Serviceと連携 4. まとめ
  3. Amazon S3 Vectorsとは? 12 • Cost-optimized AI-ready storage with native

    support for storing and querying vectors at scale, reducing total costs by up to 90% https://aws.amazon.com/s3/features/vectors/
  4. Amazon S3 Vectorsとは? 13 • Amazon S3 Vectorsはサーバーレスなベクトルデータベース • 埋め込みベクトルの型や次元から、ベクトル検索はデータサ

    イズが⼤きく、運⽤コストが⾼くなりがち • ⼤規模なベクトルデータに対して1秒未満の遅い検索レイテ ンシーをトレードオフに低コストで運⽤できる • Amazon Bedrock Knowledge BasesやAmazon OpenSearch Serviceのバックエンドとしても使える
  5. Amazon S3 Vectorsの理解をユースケースから深める 21 1. S3 Vectorsを直接使う ◦ S3 VectorsのAPI操作を学ぶ

    2. Amazon Bedrock Knowledge Basesと連携 ◦ S3 Vectorsはベクトルデータベースであることを学ぶ 3. Amazon OpenSearch Serviceと連携 ◦ S3 Vectorsはなにを解決するのか学ぶ
  6. 1. S3 Vectorsを直接使う 23 • S3 Vectorsはベクトルに特化したデータベース • データをベクトルに変換して登録‧検索操作 •

    ベクトルの他にメタデータも管理できる • メタデータの活⽤ ◦ 検索時のフィルタリング ◦ 実データを参照せずにインデックス検索結果から必要な情 報を取得できるように、関連テキストデータを登録
  7. Pythonからの使⽤例(抜粋):テキストのベクトル化(埋め込み) 25 bedrock = boto3.client("bedrock-runtime") response = bedrock.invoke_model( modelId=MODEL_ID, #

    Amazon Titan 等 body=json.dumps( { "inputText": query, "embeddingConfig": {"outputEmbeddingLength": DIMENSION}, } ), ) response_body = json.loads(response["body"].read()) embedding = response_body["embedding"]
  8. Pythonからの使⽤例(抜粋):ベクトルを登録 26 s3vectors = boto3.client("s3vectors") vectors = [] vectors.append( {

    "key": path, "data": {"float32": embedding}, "metadata": {"source_path": path}, } ) s3vectors.put_vectors( vectorBucketName=VECTOR_BUCKET_NAME, indexName=VECTOR_INDEX_NAME, vectors=vectors )
  9. Pythonからの使⽤例(抜粋):ベクトルを検索 27 s3vectors = boto3.client("s3vectors") response = s3vectors.query_vectors( vectorBucketName=VECTOR_BUCKET_NAME, indexName=VECTOR_INDEX_NAME,

    queryVector={"float32": embedding}, topK=3, returnDistance=True, returnMetadata=True, ) print(json.dumps(response["vectors"], indent=2))
  10. 2. Amazon Bedrock Knowledge Basesと連携 31 • Amazon Bedrock Knowledge

    BasesはAWSが提供するRAGを構築するマ ネージド‧サービス • ベクトルストアとして、OpenSearch ServerlessやAurora PostgreSQL Serverless等とともにS3 Vectorsも指定可能 • S3 Vectorsを簡単に試せるのでおすすめ
  11. 2. Amazon Bedrock Knowledge Basesと連携 32 • OpenSearch等の代わりにS3 Vectorsをベクトルストアとして採⽤ •

    データソースや検索キーワードのベクトル化はBedrock KBが担う • データソースとしてのS3バケットが無くなるわけではない
  12. OpenSearchとS3 Vectorsの特性の違い 33 機能 OpenSearch Serverless S3 Vectors 検索方法 全文・ベクトルのハイブリッド検

    索に対応 ベクトル検索のみ 検索レイテンシー 小さい(10ms) 大きい(秒未満) 最低コスト ゼロスケールしないので、イン スタンス費用だけで$150/月~発 生 インスタンス費用はなく$0、ストレージ費 用のみ
  13. Bedrock Knowledge Bases連携のまとめ 35 • Bedrock Knowledge BasesとS3 Vectorsを連携させると、2種類のS3が登場 ◦

    S3 Bucket : データソース ◦ S3 Vectors : ベクトルストア • S3 VectorsはBedrock Knowledge Basesのベクトルストアの選択肢の⼀つ • ゼロスケールしないOpenSearch Serverlessと異なり、インスタンス費⽤が発 ⽣しないため、低コストにRAGを運⽤できる • ただし、ベクトル検索には対応するが、全⽂検索には対応しないため、ハイブ リッド検索できない
  14. 3. Amazon OpenSearch Serviceと連携 37 • AWSから案内されているOpenSearch連携は2種類 1. (今回紹介)OpenSearch ServiceのベクトルデータをS3

    Vectorsで管理 2. S3 VectorsをOpenSearch Serverlessに移⾏ https://aws.amazon.com/blogs/big-data/optimizing-vector-search-using-amazon-s3-vectors-and-amazon-opensearch-service/
  15. OpenSearchでのベクトル検索の設定 38 • ベクトル検索はベクトルが近い=似ているとみなす、類似検索(近似最近傍探索) • Opensearchは検索⽅法をmethod(アルゴリズム)とengine(methodを実装した ライブラリ)として指定 • method例 ◦

    Hierarchical Navigable Small World (HNSW):グラフ探索 ◦ Inverted File Index (IVF) : クラスタリング探索 • engine例 ◦ Lucene : ◦ Faiss: Facebook AI Similarity Searchの略でOpenSearchの推奨 ◦ (*NEW) S3 Vectors • 全⽂検索は従来通り https://docs.opensearch.org/latest/field-types/supported-field-types/knn-methods-engines/
  16. ベクトルのengineにS3 Vectorsを指定できるようになった 39 PUT old-style-index { "settings": { "index": {"knn":

    true }}, "mappings": { "properties": { "my_vector": { "type": "knn_vector", "dimension": 1024, "space_type": "l2", "method": { "engine": "faiss", "name": "hnsw" } } } } } PUT s3vector-style-index { "settings": { "index": {"knn": true }}, "mappings": { "properties": { "my_vector": { "type": "knn_vector", "dimension": 1024, "space_type": "l2", "method": { "engine": "s3vector" } } } } }
  17. 従来のメソッドとの違い 41 Method S3 Vectors Faiss/HNSW ベクトルの管理 S3 Vectors OpenSearch

    Service 運用コスト 安い 高い 検索レイテンシー 大きい(秒未満) 小さい(10ms) 最大ベクトル数 5000万(インデックスあたり) 1万インデックス/バケット =インデックスでスケールアウト 100億オーダー 最大次元 4,096 16,000 類似メトリック l2, cosinesimil l2, cosinesimil, innerproduct https://docs.opensearch.org/latest/field-types/supported-field-types/knn-methods-engines/ https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-vectors-limitations.html
  18. ハイブリッド検索のマッピング例 42 PUT hybrid-search-demo { "settings": {"index": {"knn": true }},

    "mappings": { "properties": { "my_vector": { "type": "knn_vector", "dimension": 2, "space_type": "l2", "method": { "engine": "s3vector" } }, "text": { "type": "text" }, } } }
  19. ハイブリッド検索例 44 GET hybrid-search-demo/_search { "query": { "hybrid": { "queries":

    [ { "knn": { "vector": { "vector": [1.5, 2.0], "k": 3 }}}, { "match": { "text": "wireless bluetooth" } } ] } }, "size": 5 }
  20. cf.) ハイブリッド検索対応なGenUのマッピング 45 { "mappings": { "properties": { "AMAZON_BEDROCK_METADATA": {

    "type": "text","index": false }, "AMAZON_BEDROCK_TEXT_CHUNK": { "type": "text", "analyzer": "custom_kuromoji_analyzer" }, "bedrock-knowledge-base-default-vector": { "type": "knn_vector", "dimension": 1024, "method": { "engine": "faiss", "space_type": "l2", "name": "hnsw", "parameters": {} } },...
  21. • S3 Vectorsの費⽤ ◦ Storage / Month : $0.06/GB ◦

    Requests : ▪ Put : $0.20/GB ▪ GET, LIST, その他 : $0.055/1,000 リクエスト • OpenSearch ServiceとS3 Vectorsを連携費⽤ ◦ 詳細未定 OpenSearch ServiceとS3 Vectorsを連携したコスト感 50 https://aws.amazon.com/s3/pricing/ https://docs.aws.amazon.com/opensearch-service/latest/developerguide/s3-vector-opensearch-integration-engine.html
  22. • OpenSearchからS3、CloudWatch Logs等のデータを検索する • DirectQuery OCUを消費 ◦ OpenSearch Compute Unit

    (OCU) - Direct Query ▪ $0.24/H @ N. Virginia cf.) OpenSearch Service direct query 51 https://docs.aws.amazon.com/opensearch-service/latest/developerguide/direct-query.html https://aws.amazon.com/opensearch-service/pricing/
  23. OpenSearch Optimizedインスタンスファミリーとは? 54 • インデクシング処理能⼒が⾼い • 価格あたりのパフォーマンスが良い • Amazon S3をバックアップストレージとして活⽤

    • OR1/OR2/OM2などが該当 ‧公式ドキュメント https://docs.aws.amazon.com/opensearch-service/latest/developerguide/or1.html ‧2024/12 re:Invent https://reinvent.awsevents.com/content/dam/reinvent/2024/slides/ant/ANT329_Whats-new-in-search-observability -and-vectors-in-OpenSearch-Service-.pdf ‧2024/12 Black Belt https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2024_Amazon-OpenSearch-Service-Best-Prac tice-Logging_1210_v1.pdf
  24. 参考:ServerlessにS3 Vectorsエンジンを指定するとエラー 55 { "error": { "root_cause": [ { "type":

    "mapper_parsing_exception", "reason": "OpenSearch exception [type=mapper_parsing_exception, reason=Invalid engine: s3vector]- server : [envoy]" } ], "type": "mapper_parsing_exception", "reason": "OpenSearch exception [type=mapper_parsing_exception, reason=Invalid engine: s3vector]- server : [envoy]" }, "status": 400 }
  25. Amazon S3 Vectorsとは? 57 • Amazon S3 Vectorsはサーバーレスなベクトルデータベース • 埋め込みベクトルの型や次元から、ベクトル検索はデータサ

    イズが⼤きく、運⽤コストが⾼くなりがち • ⼤規模なベクトルデータに対して1秒未満の遅い検索レイテ ンシーをトレードオフに低コストで運⽤できる • Amazon Bedrock Knowledge Bases(全⽂検索できないこと に注意)やAmazon OpenSearch Service(個⼈的⼤本命)のバッ クエンドとしても使える