【AWS】コラム

通常のS3とAmazon S3 Vectorsは何が違う? Bedrock RAGで使う2種類のS3を整理する

作成者: ゼネックコミュニケーション|May 8, 2026 7:14:58 AM

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つの文脈で登場します。

  • データソースにS3バケットを指定してください」
  • ベクトルストアにAmazon S3 Vectorsを選択できます」

名前が似ているためひとつながりのサービスに見えますが、この2つはサービスとしても役割としても別物です。

なお、KBのベクトルストアにはAmazon OpenSearch ServerlessやAurora PostgreSQLなども選択できますが、 本記事ではS3 Vectorsに絞って解説します。

 

2つはそもそも別のサービス

通常の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」のメニュー内に同居していますが、内部的には別サービスとして扱われます。

 

Bedrock KBにおける2つの役割

独立した2つのサービスが、Bedrock KBの中でそれぞれ異なる役割を担います。

データソースとしての通常S3の役割

通常S3バケットはKBにとっての「入口」です。PDFやMarkdown、WordなどのドキュメントをS3バケットに置くと、KBがそこからテキストを読み取ります。

KBはS3バケットをポーリングするのではなく、開発者が「Sync(同期)」を実行したタイミングでバケットの内容を取り込みます。

重要な点として、通常S3には元ドキュメントのファイルが残り続けます。KBは元ファイルをS3から削除しません。ベクトル化の処理はあくまでコピーを作る形で行われます。

ベクトルストアとしてのS3 Vectorsの役割

S3 Vectorsはチャンキング・ベクトル化されたデータの「格納庫」です。KBのSyncが実行されると、KBが自動的にS3 Vectorsへのベクトル書き込みを行います。開発者がS3 Vectorsに直接ベクトルを書き込む必要はありません

ユーザーが質問を入力するとKBが質問をベクトル化し、S3 Vectorsに対して類似検索を実行します。ヒットしたベクトルに紐づくテキストチャンクをLLMへのプロンプトに挿入して回答を生成します。

検索時の流れ

ユーザーの質問:「この会社での新入社員のPCセットアップ手順を教えてください」

KBが質問をベクトル化

S3 Vectorsで類似ベクトルを検索

類似チャンクのテキストを取得

LLMへのプロンプトに挿入

データストアにある資料を基に回答生成を表示

引用元として表示されるのは通常S3のファイルパスです。S3 Vectorsのインデックス名などは表示されません。

 

①まずは通常のS3バケットを作る

概念を整理したところで、実際にコンソールを操作します。まず通常のS3バケットから始めます。

操作手順

1.AWSマネジメントコンソールにログインし、S3コンソールを開く
2.左サイドバーの「バケット」をクリック
3.「バケットを作成」をクリック

4.バケット名を入力(例:rag-documents-20260402)
5.「パブリックアクセスをすべてブロック」にチェックが入っていることを確認
6.「バケットを作成」をクリック

7.バケット作成後、テスト用ファイルをアップロードする
8.作成したバケットをクリックして詳細画面を開く
9.「オブジェクト」タブの「アップロード」をクリック 「ファイルを追加」をクリックし、手元のテキスト10.ファイルやPDFファイルを選択する(内容は何でも構わない)
   今回はIPAのセキュリティ関連のPDFをアップロードしました。  
11.「アップロード」をクリックして完了を確認する

12

この時点での通常S3の状態

  • ファイルが格納されている
  • ベクトルはまだ存在しない
  • 類似検索はできない(ファイル名でのオブジェクト検索のみ)

 

② Amazon S3 Vectorsのバケットとインデックスを作る

次に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」をクリック

この時点でのS3 Vectorsの状態

  • インデックスが作成されている
  • ベクトルは0件(まだ何も格納されていない)
  • S3 Vectorsにはドキュメントファイルを格納できない
  • 類似検索はできる状態だが、対象データが存在しない

 

③ Bedrock KBで2つを接続する 

2つのリソースが揃ったところで、KBを作成して接続します。KBの作成フローの中で、通常S3とS3 Vectorsがそれぞれ別のステップに現れます。

KBの作成手順

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」をクリックする

データの同期(Sync)を実行する

KBを作成した時点ではベクトルは空のままです。
通常S3のドキュメントをS3 Vectorsへ取り込むには同期(Sync)を実行します。

作成したナレッジベースを選択します。

1.KB詳細ページの「データソース(Data sources)」タブを開く
2.データソースを選択して「同期(Sync)」をクリックする

3.ステータスが「Completed」になるまで待つ(数分かかる場合があります。)

以後は通常S3にファイルを追加・更新するたびに Syncを実行してS3 Vectorsを最新の状態に保つ

同期完了後、テストしてみます。

動作確認:テスト検索

1.KB詳細ページ右側の「ナレッジベースをテスト」  

2.質問を入力する(例:「情報セキュリティ10大脅威のうち、組織向けの1位は何ですか?」) 

3.回答が表示されることを確認する  

 

2つのS3が連携する全体の流れ

ハンズオンを通じて見えてきた動作を改めて整理します。

【ドキュメントの取り込み時】

開発者
↓ PDFやMarkdownなどのファイルをアップロード
通常のS3バケット(元ドキュメントの保管場所)
↓ KBがSyncを実行
① テキストを抽出する
② チャンキングを行う(長いドキュメントを適切な単位に分割)
③ 各チャンクを埋め込みモデルでベクトル化する
↓ ベクトルと元テキストを格納
Amazon S3 Vectors(ベクトルの保管場所)

【ユーザーの質問に答えるとき】

ユーザーの質問テキスト
↓ KBが質問をベクトル化する
Amazon S3 Vectors → 類似ベクトルを検索する
↓ 類似度の高いチャンクのテキストを取得する
LLMへのプロンプトにチャンクのテキストを挿入する
↓ 回答を生成する
回答テキスト + 引用元(通常S3のファイルパス)

ユーザーへ返却

通常S3とS3 Vectorsは常にペアで動作します。 どちらか一方だけでは機能しません。

 

誤解しやすいポイントのQ&A

Q1: ベクトルを通常のS3バケットへ格納できますか?

格納自体は技術的に可能です(バイナリファイルとして保存できます)。ただし、ベクトルの類似検索機能は通常S3には存在しません。類似検索を行うためにはS3 Vectorsが必要です。

Q2: PDFファイルをS3 Vectorsへ直接アップロードできますか?

できません。S3 Vectorsはベクトルデータ(浮動小数点数の配列)のみを格納できる専用ストレージです。PDFやWord・Markdownなどのドキュメントは通常のS3バケットに格納する必要があります。KBがそのドキュメントを読み取ってベクトル化し、結果をS3 Vectorsへ格納します。

Q3: S3 VectorsはS3の「拡張機能」ですか?

正確にはそうではありません。S3 VectorsはAmazon S3とは独立した別のサービスです。IAMのアクション名(s3vectors:*)や APIエンドポイントも通常S3(s3:*)とは異なります。コンソール上はS3のメニュー内に配置されていますが、内部的には別サービスとして実装されています。

Q4: KBのベクトルストアを後からS3 VectorsからOpenSearchへ変更できますか?

変更できません。KBの作成後にベクトルストアの種類を変更することはできません。変更が必要な場合は既存のKBを削除して再作成し、ドキュメントの同期を再実行する必要があります。このため、ベクトルストアの選択は設計段階で慎重に行うことを推奨します。

Q5: 通常S3のバケットとS3 Vectorsのバケットは同じAWSアカウントに作る必要がありますか?

同じAWSアカウント内に作ることが推奨されます。クロスアカウント構成は技術的には可能ですが、IAMポリシーの設定が複雑になるため、特に理由がなければ同じアカウント内で統一することを推奨します。

 

まとめ:3つのキーワードで覚える

① 別サービス 通常のS3とAmazon S3 Vectorsはサービスとして独立しています。IAMポリシーもs3:*とs3vectors:*で別々に管理します。

② 別の役割 KBにおいて通常S3は「元ドキュメントの置き場(データソース)」、S3 Vectorsは「ベクトルの保管場所(ベクトルストア)」として、それぞれ異なる目的で使われます。

③ ペアで動く 2つは常にセットで機能します。通常S3にドキュメントを置き、S3 VectorsにそのベクトルをKBが自動で格納します。どちらか一方だけではRAGは成立しません。