LESSON 30分

ストーリー

田中VPoE
Embeddingでテキストをベクトルに変換できるようになった。次はそのベクトルをどこに格納し、どう検索するかだ
あなた
ベクトルDBですね。Pinecone、Weaviate、Chroma…色々ありますが、どう選べばいいんですか?
田中VPoE
いい質問だ。ベクトルDBの選定はRAGシステムの性能とコストに直結する。マネージドかセルフホストか、スケーラビリティ、フィルタリング機能、コスト構造…いくつかの軸で比較していこう
あなた
NetShop社の場合は何がベストでしょうか?
田中VPoE
まず選択肢を整理してから、うちの要件に照らし合わせて判断する。エンジニアの仕事は「とりあえず人気のもの」ではなく「要件に合ったもの」を選ぶことだ

ベクトルDBとは

役割

ベクトルDB(Vector Database)は、高次元ベクトルデータの格納と類似度検索に特化したデータベースです。

ベクトルDBの基本操作:

[Upsert(格納)]
ドキュメント + Embedding + メタデータ → ベクトルDB

[Query(検索)]
クエリのEmbedding → ベクトルDB → Top-K件の類似ドキュメント

[Filter(絞り込み)]
メタデータ条件 + ベクトル類似度 → フィルタ済み結果

近似最近傍探索(ANN)

ベクトルDBは近似最近傍探索(Approximate Nearest Neighbor)アルゴリズムを使用して高速検索を実現します。

アルゴリズム概要特徴
HNSW階層的ナビゲーション可能小世界グラフ高精度・高速。メモリ使用量大
IVF転置ファイルインデックスメモリ効率良好。大規模データ向け
PQプロダクト量子化メモリ使用量を大幅削減。精度とのトレードオフ
ScaNNGoogle開発のANNアルゴリズム高速・高精度のバランス

主要ベクトルDBの比較

マネージド型

DB提供形態特徴適するケース
PineconeフルマネージドシンプルなAPI、高い可用性、サーバレス運用負荷を最小化したい場合
Weaviate Cloudマネージドハイブリッド検索、GraphQL API柔軟な検索機能が必要な場合
Qdrant Cloudマネージド高速フィルタリング、Rust製高パフォーマンスが必要な場合
Zilliz Cloudマネージド(Milvusベース)大規模データ対応、GPU対応大規模ベクトルデータの場合

セルフホスト型

DB提供形態特徴適するケース
ChromaOSS(Python)軽量、開発者フレンドリープロトタイプ、小規模プロジェクト
WeaviateOSS(Go)ハイブリッド検索、モジュール式中〜大規模の本番システム
QdrantOSS(Rust)高パフォーマンス、ReST APIパフォーマンス重視の本番システム
MilvusOSS(Go/C++)分散アーキテクチャ、大規模対応数十億ベクトル規模
pgvectorPostgreSQL拡張既存PostgreSQLに追加可能既存DB基盤の活用

総合比較

観点PineconeWeaviateQdrantChromapgvector
運用負荷極低低〜中低〜中
スケーラビリティ
ハイブリッド検索対応強い対応限定的要追加実装
メタデータフィルタ対応強い強い対応SQL対応
コスト従量課金無料(OSS)無料(OSS)
学習コスト
本番実績多い多い増加中少ない増加中

選定基準

判断フロー

ベクトルDB選定フロー:

開発フェーズは?
├── PoC/プロトタイプ
│   └── Chroma(最速で開始可能)
└── 本番/商用
    ├── 運用負荷を最小化したい?
    │   ├── Yes → Pinecone(フルマネージド)
    │   └── No → 既存PostgreSQLを活用したい?
    │           ├── Yes → pgvector
    │           └── No → 規模は?
    │                   ├── 中規模(〜1000万ベクトル) → Qdrant or Weaviate
    │                   └── 大規模(1000万超) → Milvus or Pinecone

NetShop社への適用

要件内容推奨
ドキュメント数約10万件(技術文書、議事録、FAQ)中規模
更新頻度日次〜週次差分更新が必要
検索要件ハイブリッド検索 + メタデータフィルタWeaviate or Qdrant
運用チームインフラチーム3名セルフホスト可能
既存基盤PostgreSQL利用中pgvectorも選択肢
予算年間300万円以内OSS + クラウドインフラ

「うちの規模ならQdrantかWeaviateのセルフホストが現実的だ。pgvectorも検討に値するが、ハイブリッド検索やフィルタリングの実装を自前でやる覚悟が要る」 — 田中VPoE


ベクトルDBのデータモデル

基本構成

ベクトルDBのレコード構成:

{
  "id": "doc-001",
  "vector": [0.023, -0.156, 0.892, ...],   // Embeddingベクトル
  "metadata": {                              // メタデータ(フィルタ用)
    "source": "技術文書",
    "department": "開発部",
    "created_at": "2025-12-01",
    "author": "佐藤",
    "tags": ["RAG", "ベクトルDB"]
  },
  "content": "RAGシステムの構築手順..."       // 元テキスト
}

インデックス設計のポイント

設計要素考慮事項
コレクション分割ドメイン別(技術文書/議事録/FAQ)に分割するか単一か
メタデータスキーマフィルタリングに使うフィールドを事前設計
ベクトル次元数Embeddingモデルに合わせて設定
距離メトリクスコサイン類似度が一般的
インデックスパラメータHNSW: ef_construction, M値の調整

まとめ

ポイント内容
ベクトルDBの役割高次元ベクトルの格納と高速な類似度検索
ANNアルゴリズムHNSW、IVF、PQ等で近似的に高速検索
主要な選択肢Pinecone(マネージド)、Weaviate/Qdrant(OSS)、pgvector(PG拡張)
選定基準規模、運用負荷、検索要件、既存基盤、コストで判断

チェックリスト

  • ベクトルDBの基本的な役割と操作を理解した
  • ANNアルゴリズムの種類と特徴を理解した
  • 主要なベクトルDBの特徴を比較できる
  • 要件に応じたベクトルDB選定基準を理解した

次のステップへ

次は「演習:RAGアーキテクチャを設計しよう」です。ここまで学んだ知識を使って、NetShop社の要件に合ったRAGアーキテクチャを設計してみましょう。


推定読了時間: 30分