ベクトルDB(Vector Database)とは、
文章・画像・音声などを「ベクトル(数値の配列)」に変換して保存し、意味的に近いデータを高速検索するためのデータベースです。
AI・LLM・RAG(Retrieval Augmented Generation)などで非常に重要な基盤技術です。
目次
ベクトルDBの基本イメージ
通常のDBと大きく違うのは 検索方法 です。
| DB種類 | 検索方法 |
|---|---|
| 通常DB | 完全一致(SQL) |
| 検索エンジン | キーワード |
| ベクトルDB | 意味の近さ(類似度) |
例:質問
AIとは何?ベクトルDBは
- AIとは何か
- 人工知能の説明
- 機械学習の基礎
など 意味が近い文章を検索できます。
なぜベクトルが必要なのか
AIは文章をそのまま理解できません。そこで Embedding(埋め込み)という処理を行います。テキストをベクトルに変換します。
例
「猫」 → [0.21, -0.45, 0.88, ...]つまり
文章 → 数値ベクトルに変換します。
例(2次元で簡単に説明)
犬 ●
猫 ●
車 ●
トラック ●猫と犬は近い
車は遠い
この距離で検索します。
ベクトルDBの検索の仕組み
① 文書をベクトル化
文章 → Embedding → ベクトル② DBに保存
vectorDB
├ doc1 [0.12, 0.98, ...]
├ doc2 [0.43, 0.21, ...]③ 質問をベクトル化
質問 → Embedding④ 最も近いベクトルを検索
類似度検索(cosine similarity)LLMでの使われ方(RAG)
ユーザー質問
↓
Embedding
↓
ベクトルDB検索
↓
関連文章取得
↓
LLMに渡す
↓
回答生成ベクトルDB = AIの知識検索エンジンです。
ベクトルDBと普通のDBの違い
| 項目 | 通常DB | ベクトルDB |
|---|---|---|
| 検索 | SQL | 類似度 |
| データ | テキスト | 数値ベクトル |
| 用途 | 業務データ | AI検索 |
| AI | 不向き | 最適 |
代表的なベクトルDB
| DB | カテゴリ | 特徴 | 公式サイト | 公式ドキュメント | GitHub |
|---|---|---|---|---|---|
| Pinecone | SaaS型(クラウド) | SaaS型、フルマネージドVectorDB | https://www.pinecone.io/ | https://docs.pinecone.io/ | — |
| Weaviate | OSS+クラウド | GraphQL API・AI機能統合 | https://weaviate.io/ | https://weaviate.io/developers/weaviate | BSD-3 |
| Milvus | OSS | 大規模分散向け | https://milvus.io/ | https://milvus.io/docs | Apache-2.0 |
| Qdrant | OSS ローカル可 | Rust製・高速 | https://qdrant.tech/ | https://qdrant.tech/documentation/ | Apache-2.0 |
| Chroma | Python特化 | Python向けRAG開発で人気 | https://www.trychroma.com/ | https://docs.trychroma.com/ | Apache-2.0 |
※ANN:Approximate Nearest Neighbor(近似最近傍探索)
大量のベクトルの中から「最も近いベクトル」を高速に見つけるための検索手法
※ベクトル検索ライブラリ:
ANNアルゴリズムを実装しベクトルの類似検索を高速化するアルゴリズムライブラリ
Pinecone
- 公式サイト
Pinecone
https://www.pinecone.io/ - 公式ドキュメント
Pinecone Docs
https://docs.pinecone.io/
特徴
- 完全マネージド
- スケールが簡単
- 多くのAI SaaSが採用
向いている用途
AI SaaS
プロダクションRAGQdrant – OSS
- 公式サイト
Qdrant
https://qdrant.tech/ - 公式ドキュメント
Qdrant Documentation
https://qdrant.tech/documentation/
特徴
- Rust製
- フィルタ検索強い
- ローカル利用しやすい
Milvus
Milvus
- 公式サイト
https://milvus.io/ - ドキュメント
https://milvus.io/docs
特徴
- Kubernetes対応
- 数十億ベクトル
- 分散VectorDB
向いている用途
企業AI
検索エンジンWeaviate
Weaviate
特徴
- GraphQL API
- hybrid search
- AIモジュール内蔵
Chroma
特徴
- Pythonだけで使える
- RAG開発で人気
参考:ANNアルゴリズム
| 略称 | 正式名称 | 概要 |
|---|---|---|
| ANN | Approximate Nearest Neighbor | 近似最近傍探索 |
| HNSW | Hierarchical Navigable Small World | 階層型スモールワールドグラフ |
| IVF | Inverted File Index | 転置ファイルインデックス |
| PQ | Product Quantization | 積量子化 |
| LSH | Locality Sensitive Hashing | 局所性敏感ハッシュ |
参考:ベクトル検索ライブラリ
ライブラリは 複数のANNアルゴリズムを実装していることがあります。
| 名前 | 正式名称 | 開発 |
|---|---|---|
| FAISS | Facebook AI Similarity Search | Meta |
| HNSWlib | Hierarchical Navigable Small World library | nmslib |
| Annoy | Approximate Nearest Neighbors Oh Yeah | Spotify |
| ScaNN | Scalable Nearest Neighbors |
まとめ
ベクトルDBとはAIが意味で検索するためのデータベースです。
コメント