Vector Database
ベクトルデータベース
べくとるでえたべえす
Definition
A vector database is a data store optimized to save embeddings and quickly retrieve nearby vectors for similarity search. It is a common building block for RAG and semantic search systems.
数百万件の文書をベクトル化してRAGシステムに組み込むとき、通常のデータベースでは対応しきれません。全ベクトルとの距離を総当たりで計算していては、応答に何秒もかかってしまいます。ベクトルデータベースとは、高次元の埋め込みベクトルを効率的に格納・検索するために設計された専用のデータストアです。
なぜ専用のデータベースが必要なのか
SQLデータベースは行と列の構造化データを扱うために最適化されていますが、数百〜数千次元のベクトル間で「最も近いもの」を高速に見つける処理には向いていません。ベクトルデータベースは近似最近傍探索(ANN: Approximate Nearest Neighbor)というアルゴリズムを使い、多少の精度を犠牲にしながらも数ミリ秒で類似ベクトルを返します。代表的なANNアルゴリズムにはHNSW(Hierarchical Navigable Small World)やIVF(Inverted File Index)があります。
主要なベクトルデータベース
現在、多くのベクトルデータベースが利用可能です。Pineconeはフルマネージド型のクラウドサービスで、インフラ管理なしですぐに使い始められます。Weaviateはオープンソースで、ベクトル検索とキーワード検索のハイブリッド機能が充実しています。QdrantはRust製で高速処理に強みがあります。また、PostgreSQLにベクトル検索機能を追加するpgvectorは、既存のRDBインフラをそのまま活用できるため、導入障壁が低いと人気です。
RAGにおける役割
RAGシステムでは、ベクトルデータベースが検索のバックボーンを担います。事前に文書をチャンク分割してベクトル化し、メタデータ(ファイル名、作成日、カテゴリなど)と共にインデックスに格納します。クエリが来ると、クエリベクトルに最も近いチャンクを高速に取得し、LLMに渡します。メタデータによるフィルタリングを組み合わせれば、「2024年以降の技術文書から検索」といった条件付き検索も可能です。
選定のポイント
選定の際には、データ規模、レイテンシ要件、運用コスト、既存インフラとの相性を総合的に判断します。数千件程度なら pgvector で十分な場合も多く、数百万件を超える規模ではPineconeやQdrantのような専用ソリューションが適しています。クラウドベンダー各社もAmazon OpenSearch、Google Vertex AI Vector Search、Azure AI Searchなどのマネージドサービスを展開しており、自社のクラウド環境に合わせて選べる選択肢が広がっています。