- HOME >
- Jamstack用語集 >
- Vector Database
Vector Database
ベクトルデータベース
Vector Database を分かりやすく
Vector Database(ベクトルデータベース)は、高次元のベクトルを効率的に保存し、類似度検索を行うためのデータベースです。
例え話をしましょう。図書館で本を探すとします。
従来の検索(キーワードベース)
- あなた「『Python』という言葉が含まれる本を探して」
- 図書館「タイトルや目次に『Python』が含まれる本が5冊あります」
- 問題:「プログラミング」や「コーディング」など、関連する本は見つからない
Vector Database の検索(意味ベース)
- あなた「Pythonに関する本を探して」
- 図書館「Pythonの本だけでなく、プログラミング、コーディング、 ソフトウェア開発など、意味が近い本も含めて20冊提案します」
- メリット:キーワードが一致しなくても、意味が近ければ見つかる
Vector Database は、「意味の近さ」で検索できるデータベースです。
Vector Database の仕組み
Vector Database は、テキストや画像を数値のベクトルに変換して保存します。
ベクトル化(Embedding)
テキストをベクトルに変換:
「猫」 → [0.2, 0.8, 0.1, 0.5, ...] (1536次元)
「犬」 → [0.3, 0.7, 0.2, 0.4, ...] (1536次元)
「車」 → [0.9, 0.1, 0.8, 0.2, ...] (1536次元)
ベクトルの次元数は、モデルによって異なる
- OpenAI text-embedding-ada-002: 1536次元
- Sentence Transformers: 384〜768次元類似度の計算
ベクトル間の距離や類似度を計算します。
コサイン類似度:
「猫」と「犬」の類似度: 0.85(高い)
「猫」と「車」の類似度: 0.15(低い)
意味が近いほど、類似度が高い効率的な検索
数百万〜数億のベクトルから、類似したベクトルを高速に検索します。
従来の方法(全件スキャン):
100万件のベクトルを順番にチェック
→ 遅い(数秒〜数分)
Vector Database(近似最近傍探索):
インデックスを使って効率的に検索
→ 速い(数ミリ秒〜数十ミリ秒)主要な Vector Database
様々な Vector Database が存在します。
Pinecone
特徴:
- マネージドサービス
- スケーラビリティが高い
- 簡単に始められる
料金:
- 無料プラン: 100万ベクトルまで
- 有料プラン: 使用量に応じて課金
用途:
- 本番環境での利用
- 大規模なアプリケーションChroma
特徴:
- オープンソース
- Python で簡単に使える
- ローカルでも動作
料金:
- 無料(オープンソース)
用途:
- プロトタイプ開発
- 小〜中規模のアプリケーションWeaviate
特徴:
- オープンソース
- GraphQL API
- セルフホストとクラウドの両対応
料金:
- セルフホスト: 無料
- クラウド: 使用量に応じて課金
用途:
- エンタープライズ向け
- 複雑なクエリが必要な場合FAISS
特徴:
- Facebook AI Research 開発
- 非常に高速
- ライブラリ(DBではない)
料金:
- 無料(オープンソース)
用途:
- 研究開発
- カスタム実装Qdrant
特徴:
- Rust 製で高性能
- フィルタリング機能が豊富
- オープンソース
料金:
- セルフホスト: 無料
- クラウド: 使用量に応じて課金
用途:
- 高性能が求められる場合
- 複雑なフィルタリングVector Database の用途
Vector Database は、様々な AI アプリケーションで活用されています。
RAG(Retrieval Augmented Generation)
関連情報を検索して、AI の応答を強化します。
流れ:
1. ユーザーの質問をベクトル化
2. Vector Database で類似文書を検索
3. 検索結果を AI に渡す
4. AI が文脈を理解して応答
メリット:
- 最新情報を参照できる
- 専門知識を活用できる
- ハルシネーション(幻覚)を削減Semantic Search(意味検索)
キーワードではなく、意味で検索します。
例:
ユーザーの検索: 「在宅勤務のメリット」
従来の検索:
「在宅勤務」「メリット」というキーワードを含む文書
Semantic Search:
「リモートワーク」「テレワーク」「通勤不要」など、
意味が近い文書も検索推薦システム
ユーザーの好みに基づいて、類似アイテムを推薦します。
例: 音楽の推薦
1. ユーザーが好きな曲のベクトルを取得
2. 類似したベクトルの曲を検索
3. 推薦リストを生成
メリット:
- 明示的なタグやカテゴリが不要
- より細かいニュアンスで推薦画像検索
テキストや画像から、類似画像を検索します。
例1: テキストから画像検索
「猫の写真」 → 猫の画像を検索
例2: 画像から類似画像検索
猫の画像をアップロード → 類似した猫の画像を検索異常検知
通常のパターンと異なるデータを検出します。
例: セキュリティログの監視
1. 正常なログのベクトルを保存
2. 新しいログのベクトルを計算
3. 既存のベクトルと類似度を比較
4. 類似度が低い場合、異常として警告Vector Database の設計パターン
効果的に Vector Database を使うための設計パターンです。
パターン 1: シンプルな RAG
基本的な RAG の実装
1. データの準備
- ドキュメントを小さなチャンクに分割
- 各チャンクをベクトル化
- Vector Database に保存
2. 検索
- ユーザーの質問をベクトル化
- 類似チャンクを検索(Top 3〜5)
- AI に渡して応答生成パターン 2: メタデータフィルタリング
メタデータで絞り込んでから検索
例: ドキュメント管理システム
1. ベクトル検索
2. メタデータでフィルタリング
- 作成日: 2024年以降
- 部署: 営業部
- 公開ステータス: 公開
結果: 条件に合う文書のみを検索パターン 3: ハイブリッド検索
ベクトル検索とキーワード検索を組み合わせ
1. ベクトル検索: 意味の近さで検索
2. キーワード検索: 特定の用語を含む文書
3. 両方の結果をマージ
メリット:
- 精度の向上
- 柔軟な検索パターン 4: 階層的検索
粗い検索 → 詳細な検索
1. ドキュメント全体のベクトルで検索
2. 関連ドキュメントを特定
3. そのドキュメント内のチャンクを検索
メリット:
- 効率的
- より関連性の高い結果Vector Database のベストプラクティス
Vector Database を効果的に使うためのベストプラクティスです。
1. 適切なチャンクサイズ
小さすぎるチャンク(50〜100文字):
- 文脈が不足
- 検索精度が低下
大きすぎるチャンク(2000文字以上):
- 関連性の低い情報も含まれる
- 検索精度が低下
推奨:
- 200〜500文字程度
- 段落や意味の区切りで分割2. オーバーラップ
チャンク間でテキストを重複させる
例:
チャンク1: [文1, 文2, 文3]
チャンク2: [文3, 文4, 文5](文3が重複)
メリット:
- 文脈の連続性を保持
- 検索精度の向上3. メタデータの活用
ベクトルと一緒にメタデータを保存
例:
- ドキュメントID
- タイトル
- 作成日
- カテゴリ
- タグ
メリット:
- フィルタリングが可能
- 検索結果の管理が容易4. 定期的な更新
データを最新に保つ
プロセス:
1. 新しいドキュメントを追加
2. 古いドキュメントを削除
3. 更新されたドキュメントを再ベクトル化
重要性:
- 情報の鮮度を保つ
- 検索精度を維持Vector Database の課題
Vector Database にもいくつかの課題があります。
課題 1: コスト
ベクトル化と保存にコストがかかります。
ベクトル化のコスト:
- OpenAI Embeddings: $0.10 / 1M トークン
- 100万ドキュメント(平均500トークン): 約 $50
保存コスト:
- Pinecone: $0.096 / 1M ベクトル / 月
- 100万ベクトル: 約 $96 / 月
合計: 初期 $50 + $96 / 月課題 2: レイテンシ
検索には時間がかかる場合があります。
一般的なレイテンシ:
- 小規模(〜10万ベクトル): 10〜50ms
- 中規模(〜100万ベクトル): 50〜100ms
- 大規模(〜1000万ベクトル): 100〜300ms
リアルタイムアプリケーションでは考慮が必要課題 3: 精度とスピードのトレードオフ
高精度検索:
- すべてのベクトルを比較
- 遅いが正確
高速検索:
- 近似アルゴリズム(ANN)
- 速いが、わずかに精度が落ちる
バランスを取る必要があるまとめ
Vector Database は、高次元ベクトルを効率的に保存・検索するためのデータベースです。RAG や semantic search など、AI アプリケーションに不可欠な技術です。
重要なポイント
- 意味検索 - キーワードではなく、意味の近さで検索
- 高速 - 数百万のベクトルから数ミリ秒で検索
- RAG - AI の応答を強化する重要な要素
- 多様な用途 - 検索、推薦、異常検知など
- 選択肢 - Pinecone、Chroma、Weaviate など多数
Vector Database が最適な場面
- RAG(Retrieval Augmented Generation)
- Semantic Search(意味検索)
- 推薦システム
- 画像検索
- 異常検知
Vector Database の選び方
- 小規模・プロトタイプ: Chroma、FAISS
- 中規模: Qdrant、Weaviate
- 大規模・本番環境: Pinecone
Vector Database は、AI アプリケーションの可能性を大きく広げます。適切に活用することで、より賢く、より有用な AI システムを構築できます。