ベクトルデータベース
ベクトル(数値の配列)を効率的に保存し、類似度検索に特化したデータベース。セマンティック検索やRAGの基盤技術。
通常のデータベースとの違い
SQLデータベース:
- 検索:
WHERE name = 'John'(完全一致、範囲検索) - 得意: 構造化データの正確な検索
ベクトルデータベース:
- 検索: 「このベクトルに最も近いTop-K件」(類似度検索)
- 得意: 意味的な近さの検索
仕組み
- 埋め込みモデルが生成したベクトル(例: 1536次元の数値配列)を保存
- インデックスを構築(HNSW, IVFなど)
- クエリベクトルとの類似度を高速計算
- 最も近いTop-K件を返す
主なベクトルDB
クラウド型:
- Pinecone: マネージドサービス、スケーラブル
- Weaviate: オープンソース、GraphQL対応
- Qdrant: Rust製、高速
ローカル型:
- Chroma: Python製、軽量
- FAISS: Meta製、高速だがDB機能は限定的
類似度計算方法
- コサイン類似度: ベクトルの角度で類似性を測る(最も一般的)
- ユークリッド距離: ベクトル間の直線距離
- 内積: ベクトルの大きさも考慮
インデックス技術
大規模データで高速検索を実現するための手法:
- HNSW(Hierarchical Navigable Small World): グラフベース、高速・高精度
- IVF(Inverted File Index): クラスタリングベース、メモリ効率的
- PQ(Product Quantization): 圧縮技術、大規模データ向け
運用上の考慮点
- データの鮮度管理: 元データ更新時にベクトルも再生成が必要
- 削除データの同期: 元データ削除時にベクトルDBからも削除
- 権限管理: 誰が何を見られるかのフィルタリング
- コスト: クラウド型は従量課金、ローカル型はインフラコスト
主な用途
- RAGシステムの検索エンジン
- レコメンデーションシステム
- 画像検索(画像を埋め込みに変換して検索)
- 異常検知(正常パターンとの距離で検知)