Slide 1

Slide 1 text

2025/08/10 George Yoshida JAWS-UG佐賀:佐賀の中⼼でAWSを叫ぶ Amazon S3 Vectorsは ⼤規模ベクトル検索を低コスト化する サーバーレスなベクトルデータベースだ

Slide 2

Slide 2 text

⾃⼰紹介 2 ● 名前 ○ George Yoshida ● ブログ ○ https://dev.classmethod.jp/author/quiver/ ● 部署 ○ クラスメソッド福岡オフィス ソリューションアーキテクト ● Japan AWS Top Engineers ○ 2024 : Database ○ 2025 : AI/ML Data Engineer チバ! AWS Summit シガ! 出⾝地 サガ! JAWS-UG 開催地

Slide 3

Slide 3 text

アジェンダ 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. まとめ

Slide 4

Slide 4 text

参加者の皆さんに質問✋

Slide 5

Slide 5 text

Q1 : RAG(Retrieval-Augmented Generation)について 5 1. よく知らない 2. ⾒聞きしたことはある 3. 触ったことがある

Slide 6

Slide 6 text

Q2 : Amazon OpenSearchについて 6 1. よく知らない 2. ⾒聞きしたことはある 3. 触ったことがある

Slide 7

Slide 7 text

Q3 : Amazon S3 Vectorsについて 7 1. よく知らない 2. ⾒聞きしたことはある 3. 触ったことがある

Slide 8

Slide 8 text

セッション内容の予備知識 8 ● RAGやOpenSearchの知識を⼀部仮定しています

Slide 9

Slide 9 text

1. Amazon S3 Vectorsとは?

Slide 10

Slide 10 text

Amazon S3 Vectorsは2025年7⽉に発表されたプレビュー機能 10 https://aws.amazon.com/s3/features/vectors/

Slide 11

Slide 11 text

Amazon S3 Vectorsは2025年7⽉に発表されたプレビュー機能 11 https://aws.amazon.com/blogs/aws/introducing-amazon-s3-vectors-first-cloud-storage-with-native-vector-support-at-scale/

Slide 12

Slide 12 text

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/

Slide 13

Slide 13 text

Amazon S3 Vectorsとは? 13 ● Amazon S3 Vectorsはサーバーレスなベクトルデータベース ● 埋め込みベクトルの型や次元から、ベクトル検索はデータサ イズが⼤きく、運⽤コストが⾼くなりがち ● ⼤規模なベクトルデータに対して1秒未満の遅い検索レイテ ンシーをトレードオフに低コストで運⽤できる ● Amazon Bedrock Knowledge BasesやAmazon OpenSearch Serviceのバックエンドとしても使える

Slide 14

Slide 14 text

2. Amazon S3 Vectorsの作り⽅

Slide 15

Slide 15 text

Amazon S3 Vectorsの関連リソース 15 ● Vector Index ○ ベクトルデータを効率よく類似検索するインデックス ● Vector Bucket ○ Vector Indexの箱 ● Bucket : Index = 1 : 多の関係

Slide 16

Slide 16 text

AWSコンソールのS3からVector Bucketsに移動 16 ● サイドメニューに「Vector buckets」が増えている

Slide 17

Slide 17 text

Vector Bucketを作成 17 ● バケット名を指定

Slide 18

Slide 18 text

Vector Indexを作成 18 ● 埋め込み処理に合わせて次元(Dimension)と距離を指定

Slide 19

Slide 19 text

Amazon S3 Vectorsの作り⽅のまとめ 19 ● S3 Vectorsが提供するのはベクトル検索のインデックス ● Vector Bucketは Vector Indexの箱であって、S3オブジェク トの箱ではない

Slide 20

Slide 20 text

3. Amazon S3 Vectorsの使い⽅

Slide 21

Slide 21 text

Amazon S3 Vectorsの理解をユースケースから深める 21 1. S3 Vectorsを直接使う ○ S3 VectorsのAPI操作を学ぶ 2. Amazon Bedrock Knowledge Basesと連携 ○ S3 Vectorsはベクトルデータベースであることを学ぶ 3. Amazon OpenSearch Serviceと連携 ○ S3 Vectorsはなにを解決するのか学ぶ

Slide 22

Slide 22 text

3-1. S3 Vectorsを直接使う

Slide 23

Slide 23 text

3-1. S3 Vectorsを直接使う 23 ● S3 Vectorsはベクトルに特化したデータベース ● データをベクトルに変換して登録‧検索操作 ● ベクトルの他にメタデータも管理できる ● メタデータの活⽤ ○ 検索時のフィルタリング ○ 実データを参照せずにインデックス検索結果から必要な情 報を取得できるように、関連テキストデータを登録

Slide 24

Slide 24 text

3-1. S3 Vectorsを直接使う:RAGの処理の流れ 24

Slide 25

Slide 25 text

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"]

Slide 26

Slide 26 text

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 )

Slide 27

Slide 27 text

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))

Slide 28

Slide 28 text

S3 Vectorsの検索レスポンス例(抜粋) 28 [ { "key": "img/dog-whitepomeranian.jpg", "metadata": { "source_path": "img/dog-whitepomeranian.jpg" }, "distance": 0.5091206431388855 }, … ]

Slide 29

Slide 29 text

画像データをテキストまたは画像でマルチモーダル検索する例 29 URL:https://dev.classmethod.jp/articles/amazon-s3-vectors-multimodal-search/

Slide 30

Slide 30 text

3-2. Amazon Bedrock Knowledge Basesと連携

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

3-2. Amazon Bedrock Knowledge Basesと連携 32 ● OpenSearch等の代わりにS3 Vectorsをベクトルストアとして採⽤ ● データソースや検索キーワードのベクトル化はBedrock KBが担う ● データソースとしてのS3バケットが無くなるわけではない

Slide 33

Slide 33 text

OpenSearchとS3 Vectorsの特性の違い 33 機能 OpenSearch Serverless S3 Vectors 検索方法 全文・ベクトルのハイブリッド検 索に対応 ベクトル検索のみ 検索レイテンシー 小さい(10ms) 大きい(秒未満) 最低コスト ゼロスケールしないので、イン スタンス費用だけで$150/月~発 生 インスタンス費用はなく$0、ストレージ費 用のみ

Slide 34

Slide 34 text

RAGの検索⼿法の違い 34 ● RAG(検索システム)では全⽂検索とベクトル検索が⼀般に使われる ● 全⽂検索はエラーコードの完全⼀致検索のような正確な検索に強い ● ベクトル検索は類似検索‧セマンティック検索などとも⾔われ、「顧客対 応」と「ユーザーサポート」のような似た意味で異なる単語を同⼀視 ● 精密な全⽂検索と柔軟なベクトル検索を組み合わせたのが「ハイブリッド 検索」。シンプルなRAG(Naive RAG)と⽐較してAdvanced RAGとも呼ば れる

Slide 35

Slide 35 text

Bedrock Knowledge Bases連携のまとめ 35 ● Bedrock Knowledge BasesとS3 Vectorsを連携させると、2種類のS3が登場 ○ S3 Bucket : データソース ○ S3 Vectors : ベクトルストア ● S3 VectorsはBedrock Knowledge Basesのベクトルストアの選択肢の⼀つ ● ゼロスケールしないOpenSearch Serverlessと異なり、インスタンス費⽤が発 ⽣しないため、低コストにRAGを運⽤できる ● ただし、ベクトル検索には対応するが、全⽂検索には対応しないため、ハイブ リッド検索できない

Slide 36

Slide 36 text

3-3. Amazon OpenSearch Serviceと連携

Slide 37

Slide 37 text

3-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/

Slide 38

Slide 38 text

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) Amazon S3 Vectors https://docs.opensearch.org/latest/field-types/supported-field-types/knn-methods-engines/

Slide 39

Slide 39 text

ベクトルの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" } } }}} 旧FAISS⽅式 新S3 Vectors⽅式

Slide 40

Slide 40 text

ベクトル管理をOpenSearchからS3 Vectorsにオフロード 40 "method": { "engine": "faiss", "name": "hnsw" } "method": { "engine": "s3vector" } 旧FAISS⽅式 新S3 Vectors⽅式

Slide 41

Slide 41 text

従来のメソッドとの違い 41 Method S3 Vectors Faiss/HNSW ベクトルの管理 S3 Vectors OpenSearch Service 運用コスト 安い 高い 検索レイテンシー 大きい(秒未満) 小さい(10ms) 最大ベクトル数 5000万(インデックスあたり) 1万インデックス/バケット =インデックスでスケールアウト 100億オーダー 最大次元 4,096 16,000 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

Slide 42

Slide 42 text

ハイブリッド検索のマッピング例 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" }, } } }

Slide 43

Slide 43 text

ハイブリッド検索のレコード追加例 43 POST hybrid-search-demo/_doc/1 { "vector": [1.2, 2.8], "text": "Wireless Bluetooth headphones with active noise cancellation" } }

Slide 44

Slide 44 text

ハイブリッド検索例 44 GET hybrid-search-demo/_search { "query": { "hybrid": { "queries": [ { "knn": { "vector": { "vector": [1.5, 2.0], "k": 3 }}}, { "match": { "text": "wireless bluetooth" } } ] } }, "size": 5 }

Slide 45

Slide 45 text

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": {} } },...

Slide 46

Slide 46 text

OpenSearchのS3 Vectors連携はなにが嬉しいのか?

Slide 47

Slide 47 text

レイテンシーを妥協して、運⽤コストを抑えるのがS3 Vectors 47 https://aws.amazon.com/jp/blogs/news/optimizing-vector-search-using-amazon-s3-vectors-and-amazon-opensearch-service/

Slide 48

Slide 48 text

データサイズの⼤きい⾼次元ベクトルをなんとかしたい! 48 ● 仮に埋め込みモデルがfp32(4バイト)の1024次元の場合 ○ ベクトルの実データだけで4KB ○ 100万レコードあると4GB ● より⼤量のデータ、ベクトル以外のデータ、インデックスのストレージな ども考慮すると、OpenSearchに求められるスペックが⾼くなり、運⽤コ ストも⾼騰

Slide 49

Slide 49 text

データサイズの⼤きい⾼次元ベクトルをなんとかしたい! 49

Slide 50

Slide 50 text

● S3 Vectorsの費⽤ ○ Storage / Month : $0.06/GB ○ Requests : ■ Put : $0.20/GB ■ GET, LIST, その他 : $0.055/1,000 リクエスト ● OpenSearch ServiceとS3 Vectorsを連携費⽤ ○ 詳細未定 WIP: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

Slide 51

Slide 51 text

● 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/

Slide 52

Slide 52 text

S3 VectorsはOpenSearch ServiceのOpenSearch Optimizedインスタンスファミリーが対応

Slide 53

Slide 53 text

Amazon OpenSearchはServerlessとServiceがある 53 ● ServerlessはBedrock KBのバックエンドやS3 Vectorsからの移⾏で利⽤ ● ServiceのOpenSearch OptimizedインスタンスファミリーがS3 Vectors対応

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

参考: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 }

Slide 56

Slide 56 text

4. まとめ

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

未承認広告

Slide 59

Slide 59 text

2025年9⽉4~5⽇にクラスメソッド福岡オフィスでイベント開催 59 ● 9/4(⽊)18:30~21:30:⽣成AIの参加型グループワークショップ ○ https://classmethod.connpass.com/event/364649/ ● 9/5(⾦)14:00~19:30:DevelopersIO 2025 FUKUOKA ○ https://classmethod.connpass.com/event/362962/ ● 場所 ○ 福岡県福岡市中央区 舞鶴3丁⽬9−39 福岡舞鶴スクエア 4階

Slide 60

Slide 60 text

No content