タダです.
以下の記事で S3 Vectors を使ってみました.ただ GUI ではやれることがあまり多くないので AWS CLI で操作できることを学んだメモをまとめます.
事前準備
手元の AWS CLI が 2.22.27 だったのですが,このバージョンでは s3vectors コマンドがなかったのでバージョンを 2.28.25 まで上げました.
❯ aws --version aws-cli/2.22.27 Python/3.12.8 Darwin/24.5.0 source/arm64 ❯ which aws /opt/homebrew/bin/aws ❯ brew upgrade awscli ❯ aws --version aws-cli/2.28.25 Python/3.13.7 Darwin/24.5.0 source/arm64
S3 Vectors バケットの作成
❯ aws s3vectors create-vector-bucket --vector-bucket-name "blog-s3-vectors" --region us-east-1 (何もレスポンスがない) ❯ aws s3vectors list-vector-buckets --region us-east-1 { "vectorBuckets": [ { "vectorBucketName": "blog-s3-vectors", "vectorBucketArn": "arn:aws:s3vectors:us-east-1:1234567891011:bucket/blog-s3-vectors", "creationTime": "2025-09-06T16:42:51+09:00" }, ] } ❯ aws s3vectors get-vector-bucket --vector-bucket-name blog-s3-vectors --region us-east-1 { "vectorBucket": { "vectorBucketName": "blog-s3-vectors", "vectorBucketArn": "arn:aws:s3vectors:us-east-1:1234567891011:bucket/blog-s3-vectors", "creationTime": "2025-09-06T16:42:51+09:00", "encryptionConfiguration": { "sseType": "AES256" } } }
インデックスの作成及びベクトルデータを投入する
次にベクトル検索をするためのインデックスを作成します.
❯ aws s3vectors create-index --vector-bucket-name blog-s3-vectors --index-name test-index --data-type float32 --dimension 1024 --distance-metric cosine --region us-east-1 (何もレスポンスがない) ❯ aws s3vectors get-index --vector-bucket-name blog-s3-vectors --index-name test-index --region us-east-1 { "index": { "vectorBucketName": "blog-s3-vectors", "indexName": "test-index", "indexArn": "arn:aws:s3vectors:us-east-1:1234567891011:bucket/blog-s3-vectors/index/test-index", "creationTime": "2025-09-06T16:52:47+09:00", "dataType": "float32", "dimension": 1024, "distanceMetric": "cosine" } }
続いてベクトルデータを用意し,投入していきます.
❯ cat <<EOF > input.json ∙ { ∙ "inputText": "This is test vector data." ∙ } ∙ EOF ❯ cat input.json { "inputText": "This is test vector data." } ❯ aws bedrock-runtime invoke-model --model-id "amazon.titan-embed-text-v2:0" --body fileb://input.json --content-type application/json --accept application/json --region us-east-1 output.json { "contentType": "application/json" } ❯ jq -c '.embedding' output.json > vector_data.json ❯ cat <<EOF > vector_upload.json [ { "key": "doc1", "data": { "float32": $(cat vector_data.json) }, "metadata": { "source_text": "This is test vector data.", "category": "test" } } ] EOF ❯ aws s3vectors put-vectors --vector-bucket-name blog-s3-vectors --index-name test-index --vectors file://vector_upload.json --region us-east-1 (何もレスポンスがない)
ベクトルデータを検索する
投入したデータを検索してみます.
❯ jq '{float32: .embedding}' output.json > embedding.json ❯ aws s3vectors query-vectors --vector-bucket-name blog-s3-vectors --index-name test-index --top-k 3 --query-vector file://embedding.json --return-metadata --region us-east-1 { "vectors": [ { "key": "doc1", "metadata": { "source_text": "This is test vector data.", "category": "test" } } ] }
S3 Vectors バケット削除
最後にバケットを削除します.
❯ aws s3vectors delete-index --vector-bucket-name blog-s3-vectors --index-name test-index --region us-east-1 (何もレスポンスがない) ❯ aws s3vectors delete-vector-bucket --vector-bucket-name blog-s3-vectors --region us-east-1 (何もレスポンスがない) ❯ aws s3vectors get-vector-bucket --vector-bucket-name blog-s3-vectors --region us-east-1 An error occurred (NotFoundException) when calling the GetVectorBucket operation: The specified vector bucket could not be found ※ちゃんと削除できたことを確認した