Amazon S3 Vectors を使用して、ベクトル埋め込み(機械学習で単語や文の意味を数値化したデータ)の保存と検索を行います。これはコスト効率的な長期的なベクトル保存サービスで、独自の API 命名空間(s3vectors)を持っています。 **次のような場合に使用:** - S3 ベクトルバケットの作成 - ベクトルインデックス(検索用の索引)の作成 - 埋め込みデータの保存 - セマンティック検索(意味に基づいた検索) - RAG(生成時に参考情報を組み込む技術)向けのベクトル保存 - 類似度検索 - ベクトルデータベースの利用 - 他のベクトルデータベースからの移行 **使用しないでください:** - 表形式データの検索(データレイク検索を使用してください) - S3 オブジェクトストレージ - 数百~数千件の継続的な高速クエリ(OpenSearch を使用してください)
Store and query vector embeddings using Amazon S3 Vectors, a cost-effective long-term vector storage service with its own API namespace (s3vectors). Triggers on: create S3 vector bucket, vector index, store embeddings, semantic search, RAG vector storage, similarity search, vector database, migrate from other vector databases. Do NOT use for: querying tabular data (use querying-data-lake), S3 object storage, or hundreds/thousands of sustained QPS (use OpenSearch).
Amazon S3 Vectors は、大規模なベクター埋め込みの保存とクエリを低コストで実現する AWS サービスです。 長期保存に最適化されており、コールドクエリでもサブ秒レベルのレイテンシ(ウォームクエリでは最低 100ms)を実現します。
"Using S3 Vectors with OpenSearch Service" を検索してください。references/limits-and-patterns.md を参照してください。最新のガイダンスについては、AWS ドキュメントで "S3 Vectors best practices" を検索してください。
作業を開始する前に、リクエストを以下のいずれかに分類してください:
references/limits-and-patterns.md を参照した後、ステップ 2〜6 に従ってくださいAWS MCP サーバーツールに接続されている場合は、必ずそれを使用してコマンドを実行してください。 AWS MCP が利用できない場合のみ、AWS CLI にフォールバックしてください。 各ステップは実行前にユーザーへ説明することが必須です。
制約事項:
バケット名はユーザーと必ず確認してください。 命名規則: 3〜63 文字、使用可能文字は小文字・数字・ハイフンのみ。 暗号化設定(デフォルトは SSE-S3、コンプライアンス要件がある場合は SSE-KMS)は作成後に変更できません。
aws s3vectors create-vector-bucket \
--vector-bucket-name <BUCKET_NAME>
制約事項:
indexing.s3vectors.amazonaws.com に対して kms:GenerateDataKey および kms:Decrypt を必ず付与してください。KMS キーのエイリアスではなく、完全な ARN を使用してください。コマンド例については references/limits-and-patterns.md を参照してください。すべてのパラメーターは作成後に変更不可です。
作成前チェックリスト(すべてユーザーと確認してください):
cosine(コサイン)または euclidean(ユークリッド)。埋め込みモデルが推奨するメトリックを使用してください"S3 Vectors Bedrock Knowledge Bases prerequisites" を検索して必要なキー名を確認してくださいaws s3vectors create-index \
--vector-bucket-name <BUCKET_NAME> \
--index-name <INDEX_NAME> \
--dimension <DIM> \
--distance-metric <cosine|euclidean> \
--data-type float32 \
--metadata-configuration '{"nonFilterableMetadataKeys":["<KEY1>","<KEY2>"]}'
非フィルタリングキーが不要な場合は --metadata-configuration を省略してください。
インデックス名: 3〜63 文字、小文字・数字・ハイフン・ドットが使用可能。バケット内で一意である必要があります。
フィルタリング可能なメタデータ: 2 KB 制限。メタデータ合計(フィルタリング可能 + 不可の合計): 40 KB。
詳細は references/metadata-filtering.md を参照してください。
ユーザーがすでに埋め込みを持っている場合は、ステップ 5(保存)またはステップ 6(クエリ)へスキップしてください。
制約事項:
Bedrock の invoke-model で埋め込みを生成:
aws bedrock-runtime invoke-model \
--model-id <MODEL_ID> \
--content-type application/json \
--cli-binary-format raw-in-base64-out \
--body '{"inputText": "your text"}' \
invoke-model-output.json
CLI v2 では --cli-binary-format raw-in-base64-out を必ず指定してください。CLI 使用時は出力ファイルの指定が必須です。
レスポンスのキー名はモデルによって異なります(例: Titan は embedding、Cohere は embeddings)。
Titan の場合は json.load(open('invoke-model-output.json'))['embedding'] でパースしてください。
embedding 配列を float32 として put-vectors または query-vectors に使用します。
バッチで埋め込みを生成する場合は、AWS SDK または CLI を使用してください。
aws s3vectors put-vectors \
--vector-bucket-name <BUCKET_NAME> \
--index-name <INDEX_NAME> \
--vectors '[{"key":"<ID>","data":{"float32":[<EMBEDDING>]},"metadata":{"topic":"science"}}]'
制約事項:
429 TooManyRequestsException が発生した場合は、バックオフ付きリトライを必ず実装してくださいreferences/limits-and-patterns.md を参照してください必要に応じてステップ 4 で埋め込みを生成した後、クエリを実行します:
aws s3vectors query-vectors \
--vector-bucket-name <BUCKET_NAME> \
--index-name <INDEX_NAME> \
--query-vector '{"float32":[<EMBEDDING>]}' \
--top-k 10 \
--return-distance
オプション: --return-metadata および/または --filter '{"topic":{"$eq":"science"}}' を追加可能です(どちらも GetVectors 権限が必要です)。
詳細は references/metadata-filtering.md を参照してください。
レスポンスボディの例:
{"vectors": [{"key": "id1", "distance": 0.45, "metadata": {"topic": "science"}}, ...], "distanceMetric": "cosine"}
制約事項:
--filter または --return-metadata を使用するには、s3vectors:QueryVectors と s3vectors:GetVectors の 両方の IAM 権限が必要です。GetVectors 権限がない場合、これらのオプションは 403 エラーを返します。| エラー | 原因 | 対処法 |
|---|---|---|
DimensionMismatch |
次元数がインデックスと一致しない | 一致するモデルを使用するか、インデックスを削除して再作成してください(ユーザーへの確認必須 — すべてのベクターが削除されます)。 |
--filter または --return-metadata 使用時の 403 Forbidden |
s3vectors:GetVectors 権限が不足 |
IAM ポリシーに s3vectors:GetVectors を追加してください。 |
--top-k で指定した件数より少ない結果が返る |
フィルターに一致するベクターが少ない | フィルタリングはインライン処理のため、これは想定動作です。フィルター条件を緩和してください。 |
429 TooManyRequestsException |
インデックスのレート制限超過 | バックオフ付きリトライを実施してください。持続的なスループットが必要な場合は複数インデックスへのシャーディングを検討してください。現在の制限値については AWS ドキュメントで "S3 Vectors limitations and restrictions" を検索してください。 |
AccessDeniedException |
s3vectors:* IAM アクションが不足 |
S3 Vectors は s3:* ではなく s3vectors:* 名前空間を使用します。IAM ポリシーを更新してください。 |
RequestTimeoutException またはサービス利用不可 |
リクエストタイムアウト、またはリージョン未対応 | リクエストを再試行してください。リージョン対応状況については AWS ドキュメントで "S3 Vectors limitations and restrictions" を検索してください。 |
Amazon S3 Vectors is a cost-effective AWS service for storing and querying vector embeddings at scale. Optimized for long-term storage with subsecond latency for cold queries, as low as 100ms for warm queries.
"Using S3 Vectors with OpenSearch Service".references/limits-and-patterns.md.For latest guidance, search AWS docs for "S3 Vectors best practices".
Classify the request before starting:
references/limits-and-patterns.md first, then Steps 2-6You MUST execute commands using AWS MCP server tools when connected. Fall back to AWS CLI only if AWS MCP is unavailable. You MUST explain each step to the user before executing.
Constraints:
You MUST confirm bucket name with user. Names: 3-63 chars, lowercase letters, numbers, hyphens only. Encryption (SSE-S3 default or SSE-KMS for compliance) is immutable after creation.
aws s3vectors create-vector-bucket \
--vector-bucket-name <BUCKET_NAME>
Constraints:
kms:GenerateDataKey and kms:Decrypt to the S3 Vectors service principal indexing.s3vectors.amazonaws.com. You MUST use full KMS key ARN (not alias). See references/limits-and-patterns.md for command example.Every parameter is immutable after creation.
Pre-flight checklist (confirm ALL with user):
cosine or euclidean. Use embedding model's recommended metric;"S3 Vectors Bedrock Knowledge Bases prerequisites" to get the required key names.aws s3vectors create-index \
--vector-bucket-name <BUCKET_NAME> \
--index-name <INDEX_NAME> \
--dimension <DIM> \
--distance-metric <cosine|euclidean> \
--data-type float32 \
--metadata-configuration '{"nonFilterableMetadataKeys":["<KEY1>","<KEY2>"]}'
Omit --metadata-configuration if no non-filterable keys are needed.
Index names: 3-63 chars, lowercase, numbers, hyphens, dots. Unique within bucket. Filterable metadata: 2 KB limit. Total metadata (filterable + non-filterable combined): 40 KB. See references/metadata-filtering.md.
Skip to Step 5 (store) or Step 6 (query) if user already has embeddings.
Constraints:
Generate embeddings with Bedrock invoke-model:
aws bedrock-runtime invoke-model \
--model-id <MODEL_ID> \
--content-type application/json \
--cli-binary-format raw-in-base64-out \
--body '{"inputText": "your text"}' \
invoke-model-output.json
You MUST use --cli-binary-format raw-in-base64-out for CLI v2. Output file is required for CLI. The response key is model-dependent (e.g., embedding for Titan, embeddings for Cohere). For Titan, parse with json.load(open('invoke-model-output.json'))['embedding']. Use embedding array as float32 in put-vectors or query-vectors. For batch embedding generation, use AWS SDK or CLI.
aws s3vectors put-vectors \
--vector-bucket-name <BUCKET_NAME> \
--index-name <INDEX_NAME> \
--vectors '[{"key":"<ID>","data":{"float32":[<EMBEDDING>]},"metadata":{"topic":"science"}}]'
Constraints:
429 TooManyRequestsExceptionreferences/limits-and-patterns.md for batch patternsGenerate embedding if needed (Step 4), then query:
aws s3vectors query-vectors \
--vector-bucket-name <BUCKET_NAME> \
--index-name <INDEX_NAME> \
--query-vector '{"float32":[<EMBEDDING>]}' \
--top-k 10 \
--return-distance
Optional: add --return-metadata and/or --filter '{"topic":{"$eq":"science"}}' (both require GetVectors permission). See references/metadata-filtering.md.
Example response body: {"vectors": [{"key": "id1", "distance": 0.45, "metadata": {"topic": "science"}}, ...], "distanceMetric": "cosine"}
Constraints:
--filter or --return-metadata requires both s3vectors:QueryVectors AND s3vectors:GetVectors IAM permissions. Without GetVectors, these options return 403.| Error | Cause | Fix |
|---|---|---|
DimensionMismatch |
Dims don't match index | Use matching model, or delete/recreate index (confirm with user -- destroys all vectors). |
403 Forbidden with --filter or --return-metadata |
Missing s3vectors:GetVectors |
Add s3vectors:GetVectors to IAM policy. |
Fewer results than --top-k |
Few vectors match filter | Expected -- filtering is inline. Broaden filter. |
429 TooManyRequestsException |
Exceeded per-index rate limits | Retry with backoff. Shard across indexes for sustained throughput. Search AWS docs for "S3 Vectors limitations and restrictions" for current limits. |
AccessDeniedException |
Missing s3vectors:* IAM actions |
S3 Vectors uses s3vectors:* namespace, not s3:*. Update IAM policy. |
RequestTimeoutException or service unavailable |
Request timeout or region not supported | Retry request. For regional availability, search AWS docs for "S3 Vectors limitations and restrictions". |
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。