ベクトルデータベース

埋め込みベクトルを保存し、類似度検索を高速に実行するデータベース

データベースAI

ベクトルデータベースとは

ベクトルデータベース (Vector Database) は、埋め込みベクトル (高次元の数値配列) を保存し、コサイン類似度や L2 距離で類似ベクトルを高速に検索するデータベースである。RAG、セマンティック検索、レコメンデーションの基盤。

なぜ必要か

通常の DB: WHERE name = 'Alice'  ← 完全一致
ベクトル DB: 「TypeScript 入門」に意味的に近いドキュメントを検索
  → 「JavaScript の基礎」「フロントエンド開発」がヒット (キーワード一致なし)

主要なベクトル DB

DB 特徴 AWS での利用
OpenSearch (k-NN) 全文検索 + ベクトル検索 Amazon OpenSearch Service
Pinecone ベクトル検索専用 SaaS -
pgvector PostgreSQL 拡張 Aurora PostgreSQL
Qdrant Rust 製、高速 セルフホスト
Weaviate GraphQL API セルフホスト

OpenSearch でのベクトル検索

// インデックスの作成
PUT /documents
{
  "mappings": {
    "properties": {
      "title": { "type": "text" },
      "embedding": { "type": "knn_vector", "dimension": 1024 }
    }
  }
}

// ベクトル検索
POST /documents/_search
{
  "query": {
    "knn": {
      "embedding": {
        "vector": [0.12, -0.34, ...],
        "k": 10
      }
    }
  }
}

RAG パイプライン

1. ドキュメントを埋め込みベクトルに変換 (Bedrock Titan Embed)
2. ベクトル DB に保存 (OpenSearch)
3. ユーザーの質問を埋め込みベクトルに変換
4. ベクトル DB で類似ドキュメントを検索 (k-NN)
5. 検索結果 + 質問を LLM に渡す (Bedrock Nova)
6. LLM が回答を生成

近似最近傍探索 (ANN)

全ベクトルとの距離を計算すると O(n) で遅い。ANN アルゴリズムで近似的に高速検索する。

アルゴリズム 特徴
HNSW 高精度、メモリ消費大
IVF メモリ効率が良い
PQ (Product Quantization) ベクトルを圧縮

DynamoDB でのシンプルなベクトル検索

小規模 (数千件) なら DynamoDB にベクトルを保存し、Lambda で全件スキャン + コサイン類似度計算も可能。大規模になったら OpenSearch に移行する。

基礎から学ぶなら関連書籍が手がかりになる。

関連用語