ひとことで言うと
サーバーレスの key-value/ドキュメント型 DBです。AIP-C01 の文脈では、ベクトルストアではなく、会話履歴やセッション状態の置き場として出てきます。
要するに、受付の来客記録簿です。誰が・いつ・何を話したかを高速に出し入れする台帳であって、話の「意味」で検索する棚(ベクトルストア)ではありません。意味で探したいなら、この台帳を OpenSearch に流し込む必要があります。
なぜ生まれたか
| 生成AIアプリでぶつかる作業 | DynamoDB の受け皿 |
|---|---|
| Bedrock の呼び出しはステートレス。会話の続きをどう覚えるか | セッションIDをパーティションキーにした会話履歴テーブル |
| 会話ログを無期限に持ちたくない | TTL 属性で自動失効(expired処理) |
| DynamoDB のデータを意味検索・RAGに使いたいが、専用ETLは組みたくない | OpenSearch Service への Zero-ETL 統合(Bedrock の埋め込みモデルで自動ベクトル化) |
何に使うか
| 用途 | 使い方 | 関連ドメイン |
|---|---|---|
| 会話履歴・セッション状態 | セッションIDをキーに、Lambda 経由で読み書き | D1・D2 |
| プロンプトテンプレート・呼び出しログの記録 | Prompt Management や監査証跡の実データ置き場 | D1・D3 |
| RAG向けの元データ | Zero-ETL で OpenSearch Service に同期し、Bedrock でベクトル化 | D1 |
試験でどう問われるか
| 問われ方 | 正解に寄る条件 | 引っかけの選択肢 |
|---|---|---|
| 会話履歴を安く自動的に消したい | TTL属性で期限を設定 | 定期バッチで削除するLambdaを自前で書く(過剰実装) |
| DynamoDBのデータを意味検索に使いたい | OpenSearch ServiceへのZero-ETL統合 | DynamoDBを直接Bedrock Knowledge Basesのベクトルストアに指定する(非対応) |
| 会話履歴をRAGのベクトルストアにしたい | 用途が違う。KBの正式なカスタマー管理ベクトルストアは OpenSearch・S3 Vectors・Aurora・Neptune Analytics 等 | DynamoDBをそのままKBのベクトルストアとして選ぶ |
DynamoDB は Bedrock Knowledge Bases のベクトルストアの選択肢に入っていません。公式のカスタマー管理ベクトルストア一覧は OpenSearch Serverless/OpenSearch Managed Clusters/S3 Vectors/Amazon Aurora/Neptune Analytics/Pinecone/Redis Enterprise Cloud/MongoDB Atlas で、DynamoDB は含まれません。「DynamoDBに埋め込みを持たせてKBに直結する」という選択肢が出たら誤りです。
実務でどう使うか
- TTLは「即消える」ではない。 期限を過ぎたアイテムは数日以内に削除される仕組みで、削除タイミングの厳密な保証はありません。「会話ログを法令上◯時間以内に確実に消す」ような要件にはTTL単体では足りません
- TTLで消えたアイテムはDynamoDB Streamsに「サービスによる削除」として流れます。 ユーザー操作による削除と区別できるので、監査ログ側で扱いを分けられます
- Zero-ETL統合はDynamoDB Streamsが土台。 ストリームは既定で有効ではなく、有効化と
StreamViewTypeの選択(NEW_AND_OLD_IMAGESなど)が前提条件です
ハマりどころ: Zero-ETL統合の初回同期はDynamoDBのエクスポート機能(Point-in-Time Recovery必須)で行われ、以降の差分だけがStreams経由になります。PITRを有効化し忘れると初回スナップショットが作れません。
取り違えやすいもの
| 迷う相手 | 切り分けの一言 |
|---|---|
| Amazon Aurora(Bedrock KBのベクトルストア) | Aurora=KBが公式サポートするベクトルストア。DynamoDB=サポート外。「意味検索の器」が要るならAurora側 |
| Amazon Bedrock Sessions API | Bedrockのセッション管理APIはBedrockが会話状態をマネージドで持つ仕組み。DynamoDBは自前でアプリ側に会話履歴を持つときの選択肢で、両者は競合する2つの手段 |
| DynamoDB Streams | DynamoDBは「データを置く場所」。Streamsは「そのデータの変化を流す配管」。RAG連携ではセットで使う |
想起チェック
Q1. 会話履歴をDynamoDBに持たせつつBedrock Knowledge Basesの検索対象にもしたい。どう構成しますか?
DynamoDB単体では検索対象にできません。OpenSearch ServiceへのZero-ETL統合でデータを同期し、Bedrockの埋め込みモデルでベクトル化した上でOpenSearch側を検索することになります。
Q2. 「会話ログをTTLで消しているのに、削除タイミングが要件よりばらつく」と指摘されたら?
TTLは期限到来後数日以内に削除される仕組みで、秒単位の即時削除は保証していません。厳密な削除タイミングが要件なら、アプリ側で明示的な削除処理を組む必要があります。