Database

Amazon RDS

マネージドのリレーショナルDB。RDS for PostgreSQLはpgvectorでベクトル検索ができますが、Bedrock Knowledge Basesの正式なベクトルストアはAurora限定——AIP-C01ではこの一線が問われます。

  • B|実装まわり
  • D1 FM統合・データ・コンプラ

ひとことで言うと

マネージドのリレーショナルDBです。GenAI文脈での顔はpgvector拡張によるベクトル類似検索——ただし、Bedrock Knowledge Basesの正式なベクトルストアとして選べるのはAuroraだけで、単体のRDS for PostgreSQLは選べません。

要するに、同じPostgreSQLでも「本店」と「支店」の違いです。pgvectorという同じ道具は両方の店に置いてありますが、Bedrock Knowledge Basesという配達サービスは本店(Aurora)としか正式契約していません。支店(RDS for PostgreSQL)でpgvectorを使うこと自体はできても、それは自分でRAGを組む場合の話です。

なぜ生まれたか

pgvectorはPostgreSQL向けのオープンソース拡張で、既存のリレーショナルデータと同じDBにベクトルを共存させられます。新しい専用ベクトルDBを立てずに、既存のPostgreSQL資産の上でベクトル検索を足したいというニーズに応えるものです。

起きる不便pgvectorでの解決
ベクトル検索のためだけに別のデータベースを増やしたくない既存のPostgreSQLにpgvector拡張を追加するだけで済む
ベクトル検索と通常のSQL条件検索を同時にかけたい同一テーブル内でベクトル列と通常列を一緒にクエリできる
インデックス方式を選びたいIVFFlatとHNSWの両方に対応

何に使うか

用途使い方関連ドメイン
自前RAGのベクトルストアRDS for PostgreSQL+pgvectorで類似検索を自分のアプリから呼ぶD1
Bedrock Knowledge Basesのベクトルストア不可。この用途はAuroraを使う—
メタデータ付きベクトル検索通常のWHERE句とベクトル距離検索を組み合わせるD1

試験でどう問われるか

問われ方正解に寄る条件引っかけの選択肢
Bedrock Knowledge BasesのベクトルストアにPostgreSQLを使いたいAmazon Aurora PostgreSQLを選ぶ「RDS for PostgreSQLでpgvectorを使えばよい」という選択肢(KBの正式サポート外)
既存のRDS資産の上で自前のベクトル検索を組みたいRDS for PostgreSQL+pgvectorでも技術的には可能「pgvectorが使えないから専用ベクトルDBが必須」という誤った前提
ハイブリッド検索(キーワード+ベクトル)が要るAuroraをKBのベクトルストアに選び、GINインデックスを併用RDS for PostgreSQLを直接KBに接続しようとする案

「pgvectorが使えるから、RDSもBedrock Knowledge Basesのベクトルストアになる」は誤りです。KBの公式なカスタマー管理ベクトルストア一覧はOpenSearch Serverless/OpenSearch Managed Clusters/S3 Vectors/Amazon Aurora/Neptune Analytics/Pinecone/Redis Enterprise Cloud/MongoDB Atlasで、単体のAmazon RDSは含まれません。同じPostgreSQLでもエンジンの違いが正誤を分けます。

実務でどう使うか

  • KB用にAuroraのテーブルを作るときは列とインデックスの指定が細かい。 ベクトル列・テキスト列にインデックスが必須で、メタデータフィルタリングを使うならJSONB列にGINインデックスも要ります
  • メタデータフィルタで結果が想定より少なくなることがある。 HNSWインデックス走査後にフィルタが適用される仕様のため、選択性の高いフィルタでは反復スキャン(hnsw.iterative_scan、pgvector 0.8.0以降)の有効化が推奨されています
  • 自前でRDS+pgvectorのRAGを組む場合は、埋め込み生成・チャンク分割・同期を自分で書く必要があります。 KBのようにマネージドで面倒を見てくれる範囲ではありません

ハマりどころ: Aurora PostgreSQL Serverlessを使う場合、DBクラスタはBedrock Knowledge Baseと同じAWSアカウントに存在しなければなりません。クロスアカウント構成のまま接続しようとすると失敗します。

取り違えやすいもの

迷う相手切り分けの一言
Amazon Aurora(PostgreSQL互換)KBの正式なベクトルストアはこちら限定。試験で「PostgreSQLでKBを組む」と出たら、選ぶべきは常にAurora側
Amazon DocumentDBRDSはリレーショナル(SQL)。DocumentDBはドキュメント(MongoDB互換)。データの構造がすでにJSON中心ならDocumentDB側が候補になる
OpenSearch Servicepgvectorは「既存のリレーショナル資産にベクトルを足す」路線。OpenSearchは「検索専用にゼロから最適化する」路線。既存資産の有無で分かれる

想起チェック

Q1. 「PostgreSQLでpgvectorを使っているから、そのままBedrock Knowledge Basesのベクトルストアに指定できる」は正しいですか?

エンジンがRDS for PostgreSQL単体なら誤りです。Bedrock Knowledge Basesが公式サポートするのはAmazon Auroraのみで、単体のAmazon RDSはベクトルストアの選択肢に含まれません。

Q2. RDS for PostgreSQLでベクトル検索を使いたいが、Knowledge Basesには組み込めない場合、どういう構成になりますか?

自前のRAGパイプラインとして組みます。埋め込み生成・チャンク分割・同期処理をアプリ側で実装し、pgvectorはあくまで類似検索のためのDB拡張として使います。

出典(AWS公式)