ベクトルデータベース

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

データベースAI
ベクトルデータベース」の技術書を見る (4 冊) →

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

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

なぜ必要か

通常のデータベースはキーワードの完全一致や部分一致でしか検索できない。しかし、自然言語の検索では「TypeScript 入門」と「JavaScript の基礎」のように、キーワードが一致しなくても意味的に近いドキュメントを見つけたい場面がある。ベクトル DB は、テキストを数値ベクトルに変換し、ベクトル間の距離で意味的な類似度を計算することで、この問題を解決する。

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

主要なベクトル DB

主要なベクトル DB を以下にまとめる。

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

OpenSearch でのベクトル検索

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 パイプライン

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 に移行する。

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

この記事は役に立ちましたか?

関連用語

関連する記事