5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

S3 Vectorsを活用してナレッジパイプラインを構築!

5
Last updated at Posted at 2026-02-16

概要

今回は、社内Q&A形式のナレッジの更新や追加をbizメンバーの方が簡単に管理できるように、スプレッドシートをUIにして、S3 Vectors + Bedrock Knowledge Basesでベクトル検索するパイプラインを組んでみました!LayerX様の週2500回以上使われる社内チャットボットを支えるAmazon Bedrock Knowledge Basesで作るRAGの記事を参考にさせていただきました。

全体像

スプレッドシートにQ&Aをインポートし、カスタムメニューから「追加」を押すだけ。それだけでベクトル検索可能になります!

スプレッドシート (UI) 
    ↓ GAS
API Gateway 
    ↓
Lambda 
    ↓
S3 (原本) → Knowledge Bases (ベクトル変換) → S3 Vectors (検索)

S3 Vectorsとは

S3 VectorsはS3にベクトルデータをそのまま保存・検索できるサーバーレスなベクトルストレージ機能で、2025年7月に発表(プレビュー)され、2025年12月に正式リリースされた比較的に新しいサービスです。以下はGPT先生が教えてくれた従来との比較です。まだ私はちゃんと理解できておりません(笑)

従来のRAGや検索システムは基本この構造:

Embedding生成
→ Vector DB(Pinecone / OpenSearch / pgvector / Weaviate など)
→ 類似検索
→ LLM

つまり

ストレージ = DBだった。

S3 Vectorsの構造:

S3 VectorsはEmbedding生成
→ S3(Vector Bucket)
→ 類似検索API
→ LLM

つまり

ストレージ = S3
検索 = S3ネイティブ機能になった。

今回は、Knowledge BasesがTitan Embeddings V2でテキストをベクトルに変換し、S3 Vectorsに格納します。検索時はクエリもベクトル化して、類似度で近いナレッジを返す仕組みです。S3 Vectorsはこのパイプラインの出口で、ここが安く済むおかげで全体のコストが抑えられています。

スプレッドシートの構成

内容 備考
A チェックボックス 操作対象の選択
B ID KB-{UUIDv4}。GASで自動生成
C 質問 自然言語
D 回答 自然言語
E カテゴリ メタデータフィルタ用
F 参照URL ソース元
G 更新日 自動
H ステータス 未同期 / 同期済 / deleting / deleted / エラー

B列のIDはシート保護で編集不可にし、事故を防ぎます。また今回は、カスタムメニューも構築しています。GASのonOpen() で追加できます。

スクリーンショット 2026-02-16 17.19.21.png

「追加」「差分更新」「削除」の3つ。A列のチェックした行に対してまとめて実行する形で、B列のNoはAPI呼び出しの前に採番してシートに書き込む形にしています。

使い方

① C,D列にQAペア、E列にカテゴリ、F列に参照URLを入力し、A列のチェックボックスをクリック!

スクリーンショット 2026-02-16 17.31.47.png

② カスタムメニューの「ナレッジ同期」をクリック!
※今回は追加ですが、差分更新や削除も行えます!

スクリーンショット 2026-02-16 17.19.21.png

③ OKをクリック!

スクリーンショット 2026-02-16 17.32.55.png

④ B列にKB- プレフィックス + UUIDv4(36桁)形式のIDが生成されます。これがAWS S3のファイル名となり、スプレッドシートの行とS3上のファイルを1対1で紐づけるキーになっています。このペアがあることで、検索時に category = "人事" や active = "true"のようなメタデータでフィルタリングできます。Markdown本文だけだとベクトル検索しかできないけど、メタデータがあれば「人事カテゴリだけから探す」「削除済みを除外する」といった絞り込みができます!

スクリーンショット 2026-02-16 17.33.16.png

⑤ AWS knowledge bases上に即座に反映されます!

スクリーンショット 2026-02-16 17.43.56.png

まとめ

今回のパイプライン

Knowledge BasesのVector StoreとしてS3 Vectorsを使っており、S3(原本)→Knowledge Bases(ベクトル変換)→ S3 Vectors(検索)という流れで、S3 Vectorsがパイプラインの出口になります。

差分更新の仕組み

B列のIDをキーにS3上の原本(.md + .metadata.json)を丸ごと上書きし、Knowledge Basesを再同期(再インデックス)し、本文差分の抽出ではなく、行単位の上書き。

構造化Markdownテンプレート

 ## Question / ## Answerのセクション分けで、質問と回答の検索重み付けを均等にしています。フッターに no、category、sourceを埋め込み、検索結果からナレッジの出所をたどれるようにしました。

論理削除とdeleting/deleted

メタデータの active を "false" にする論理削除方式。検索時に active = "true"
でフィルタすれば即座に除外できる。スプレッドシート側は deleting → deleted
の2段階で、ingestion完了前の状態を可視化。

API呼び出し前にID採番

NoはAPI呼び出しの前にシートに書き込む。通信失敗してもIDは確定済みで、ステータスが「エラー」になるだけ。再送で復旧。

最後に

S3 Vectorsのおかげで、大幅にコストを抑えてベクトル検索パイプラインを構築でき、スプレッドシートをUIにしたことでビジネスサイドの運用負荷も少なくなります。今回は、QA形式のペアでの実装ですが、今後はドキュメントファイルやPDFなどあらゆる形式のナレッジにも対応できるように、改善してきます!

参考文献

週2500回以上使われる社内チャットボットを支えるAmazon Bedrock Knowledge Basesで作るRAG

Amazon S3 Vectors公式サイト

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?