2026年3月31日、Amazon S3 Vectorsが大阪リージョンを含む17の追加リージョンで利用可能になりました。東京リージョンではすでに利用できていましたが、今回の拡張でより多くの環境で試しやすくなっています。
https://aws.amazon.com/jp/about-aws/whats-new/2026/03/s3-vectors-expands-17-regions/
Amazon Bedrock Knowledge Base(以下KB)を使ってRAG(Retrieval-Augmented Generation)を構築していると、"S3"という名前がついたサービスが2つの文脈で登場します。
名前が似ているためひとつながりのサービスに見えますが、この2つはサービスとしても役割としても別物です。
なお、KBのベクトルストアにはAmazon OpenSearch ServerlessやAurora PostgreSQLなども選択できますが、 本記事ではS3 Vectorsに絞って解説します。
通常のAmazon S3とAmazon S3 Vectorsは、サービスとしても役割としても別物です。
「汎用バケット(通常のオブジェクトストレージ)」と
「ベクトルバケット(Vector buckets)」が別メニューとして存在する。
名前は似ているが、格納できるデータの種類と操作方法が異なる」
正確には次のように整理できます。
|
通常のAmazon S3
|
Amazon S3 Vectors
|
|
|
サービスの分類
|
オブジェクトストレージ
|
ベクトルストレージ(専用サービス)
|
|
提供開始
|
2006年
|
2025年7月(プレビュー)/ 12月GA
|
|
格納できるもの
|
あらゆる形式のファイル(PDF・画像・動画等)
|
ベクトルデータ(浮動小数点数の配列)のみ
|
|
主な操作
|
PUT / GET / DELETE(ファイル操作)
|
PutVectors / QueryVectors(ベクトル操作)
|
|
類似検索
|
できない
|
できる(コサイン類似度・ユークリッド距離)
|
|
コンソール上の場所
|
S3 →「汎用バケット」
|
S3 →「ベクトルバケット」
|
|
料金体系
|
ストレージ(GB/月)+ リクエスト数
|
ベクトルストレージ + クエリ実行数
|
|
IAMサービス名
|
s3:*
|
s3vectors:*
|
IAMのアクション名が異なることからもわかるように、APIレベルで完全に分離した独立したサービスです。
コンソール上は同じ「S3」のメニュー内に同居していますが、内部的には別サービスとして扱われます。
独立した2つのサービスが、Bedrock KBの中でそれぞれ異なる役割を担います。
通常S3バケットはKBにとっての「入口」です。PDFやMarkdown、WordなどのドキュメントをS3バケットに置くと、KBがそこからテキストを読み取ります。
KBはS3バケットをポーリングするのではなく、開発者が「Sync(同期)」を実行したタイミングでバケットの内容を取り込みます。
重要な点として、通常S3には元ドキュメントのファイルが残り続けます。KBは元ファイルをS3から削除しません。ベクトル化の処理はあくまでコピーを作る形で行われます。
S3 Vectorsはチャンキング・ベクトル化されたデータの「格納庫」です。KBのSyncが実行されると、KBが自動的にS3 Vectorsへのベクトル書き込みを行います。開発者がS3 Vectorsに直接ベクトルを書き込む必要はありません。
ユーザーが質問を入力するとKBが質問をベクトル化し、S3 Vectorsに対して類似検索を実行します。ヒットしたベクトルに紐づくテキストチャンクをLLMへのプロンプトに挿入して回答を生成します。
ユーザーの質問:「この会社での新入社員のPCセットアップ手順を教えてください」
↓
KBが質問をベクトル化
↓
S3 Vectorsで類似ベクトルを検索
↓
類似チャンクのテキストを取得
↓
LLMへのプロンプトに挿入
↓
データストアにある資料を基に回答生成を表示
引用元として表示されるのは通常S3のファイルパスです。S3 Vectorsのインデックス名などは表示されません。
概念を整理したところで、実際にコンソールを操作します。まず通常のS3バケットから始めます。
1.AWSマネジメントコンソールにログインし、S3コンソールを開く
2.左サイドバーの「バケット」をクリック
3.「バケットを作成」をクリック
4.バケット名を入力(例:rag-documents-20260402)
5.「パブリックアクセスをすべてブロック」にチェックが入っていることを確認
6.「バケットを作成」をクリック
7.バケット作成後、テスト用ファイルをアップロードする
8.作成したバケットをクリックして詳細画面を開く
9.「オブジェクト」タブの「アップロード」をクリック 「ファイルを追加」をクリックし、手元のテキスト10.ファイルやPDFファイルを選択する(内容は何でも構わない)
今回はIPAのセキュリティ関連のPDFをアップロードしました。
11.「アップロード」をクリックして完了を確認する
12
次にS3 Vectorsを作成します。コンソール上は同じS3のメニュー内にありますが、操作の流れが通常S3とは異なります。
1.S3コンソールの左サイドバーで「ベクトルバケット」をクリック
2.「バケットを作成」をクリック
3.バケット名を入力(例:rag-vectors-20260402)
4.「Create vector bucket」をクリック
格納できるのはベクトルデータのみ。
PDFやテキストファイルを直接アップロードすることはできない」
ベクトルバケットを作成しただけでは検索は行えません。
その中にベクトルインデックスを作成する必要があります。
インデックスは「何次元のベクトルを格納するか」「どのデータ型を使うか」を定義するもので、一度作成すると次元数とデータ型は変更できません。
インデックスはざっくり言うと「ベクトルの検索台帳」です。
ベクトルデータをただ保存するだけでなく、「このバケットには何次元のベクトルが入っていて、どうやって検索するか」というルールを定義したものです。図書館でいうと、本棚(バケット)の中の索引カード(インデックス)に相当します。
具体的には以下の3つを定義します。
・次元数:格納するベクトルの次元数。埋め込みモデルごとに決まっているので、使うモデルに合わせる必要があります
・距離計算の方式:類似度をコサイン類似度で測るかユークリッド距離で測るか
コサイン類似度はベクトルの「向き」で類似度を測ります。文章の長さに関係なく意味の近さで判断するので、テキスト検索に向いています。RAGでは基本的にこちらを使います。
ユークリッド距離はベクトルの「座標間の直線距離」で測ります。数値データや座標データの近さを測るのに向いています。
・データ型:ベクトルの数値をどの精度で保存するか(float32が一般的)
使用する埋め込みモデルの出力次元数に合わせて設定します。
|
埋め込みモデル |
次元数 |
|
Amazon Titan Text Embeddings v2 |
256 / 512 / 1024(選択可) |
|
Amazon Titan Text Embeddings v1 |
1536(固定) |
|
Cohere Embed v3 |
1024 |
|
Cohere Embed Multilingual v3 |
1024 |
1.作成したベクトルバケットをクリック
2.「ベクトルインデックスの作成」をクリック
以下を入力する:
ベクトルインデックス名: docs-index20260402(任意の名前で可)
ディメンション: 1024(Titan Embeddings v2を使用する場合)
距離メトリック: コサイン(デフォルトのまま)
「Create index」をクリック
2つのリソースが揃ったところで、KBを作成して接続します。KBの作成フローの中で、通常S3とS3 Vectorsがそれぞれ別のステップに現れます。
1.Bedrockコンソールを開く
2.左メニュー「ナレッジベース(Knowledge bases)」→「作成(Create knowledge base)」をクリック
3.「ベクトルストアを含むナレッジベース」を選択する
4.KB名を入力(例:my-first-kb)→「Next」
5.データソースの種類として「Amazon S3」を選択する
6.手順①で作成した通常S3バケットのURIを入力する(例:s3://rag-documents-20260402/)
次に埋め込みモデルを選択します。
7.「Embeddings model」として「Amazon Titan Text Embeddings v2」を選択する
Dimensionは「1024」を選択する(インデックス作成時の設定と一致させる)
8.手順②で作成したベクトルデータソースを選択する
9.確認画面を確認して「Create knowledge base」をクリックする
KBを作成した時点ではベクトルは空のままです。
通常S3のドキュメントをS3 Vectorsへ取り込むには同期(Sync)を実行します。
作成したナレッジベースを選択します。
1.KB詳細ページの「データソース(Data sources)」タブを開く
2.データソースを選択して「同期(Sync)」をクリックする
3.ステータスが「Completed」になるまで待つ(数分かかる場合があります。)
以後は通常S3にファイルを追加・更新するたびに Syncを実行してS3 Vectorsを最新の状態に保つ
同期完了後、テストしてみます。
1.KB詳細ページ右側の「ナレッジベースをテスト」
2.質問を入力する(例:「情報セキュリティ10大脅威のうち、組織向けの1位は何ですか?」)
3.回答が表示されることを確認する
ハンズオンを通じて見えてきた動作を改めて整理します。
【ドキュメントの取り込み時】
開発者
↓ PDFやMarkdownなどのファイルをアップロード
通常のS3バケット(元ドキュメントの保管場所)
↓ KBがSyncを実行
① テキストを抽出する
② チャンキングを行う(長いドキュメントを適切な単位に分割)
③ 各チャンクを埋め込みモデルでベクトル化する
↓ ベクトルと元テキストを格納
Amazon S3 Vectors(ベクトルの保管場所)
【ユーザーの質問に答えるとき】
ユーザーの質問テキスト
↓ KBが質問をベクトル化する
Amazon S3 Vectors → 類似ベクトルを検索する
↓ 類似度の高いチャンクのテキストを取得する
LLMへのプロンプトにチャンクのテキストを挿入する
↓ 回答を生成する
回答テキスト + 引用元(通常S3のファイルパス)
↓
ユーザーへ返却
通常S3とS3 Vectorsは常にペアで動作します。 どちらか一方だけでは機能しません。
格納自体は技術的に可能です(バイナリファイルとして保存できます)。ただし、ベクトルの類似検索機能は通常S3には存在しません。類似検索を行うためにはS3 Vectorsが必要です。
できません。S3 Vectorsはベクトルデータ(浮動小数点数の配列)のみを格納できる専用ストレージです。PDFやWord・Markdownなどのドキュメントは通常のS3バケットに格納する必要があります。KBがそのドキュメントを読み取ってベクトル化し、結果をS3 Vectorsへ格納します。
正確にはそうではありません。S3 VectorsはAmazon S3とは独立した別のサービスです。IAMのアクション名(s3vectors:*)や APIエンドポイントも通常S3(s3:*)とは異なります。コンソール上はS3のメニュー内に配置されていますが、内部的には別サービスとして実装されています。
変更できません。KBの作成後にベクトルストアの種類を変更することはできません。変更が必要な場合は既存のKBを削除して再作成し、ドキュメントの同期を再実行する必要があります。このため、ベクトルストアの選択は設計段階で慎重に行うことを推奨します。
同じAWSアカウント内に作ることが推奨されます。クロスアカウント構成は技術的には可能ですが、IAMポリシーの設定が複雑になるため、特に理由がなければ同じアカウント内で統一することを推奨します。
① 別サービス 通常のS3とAmazon S3 Vectorsはサービスとして独立しています。IAMポリシーもs3:*とs3vectors:*で別々に管理します。
② 別の役割 KBにおいて通常S3は「元ドキュメントの置き場(データソース)」、S3 Vectorsは「ベクトルの保管場所(ベクトルストア)」として、それぞれ異なる目的で使われます。
③ ペアで動く 2つは常にセットで機能します。通常S3にドキュメントを置き、S3 VectorsにそのベクトルをKBが自動で格納します。どちらか一方だけではRAGは成立しません。