ベクトルデータベースとは、高次元ベクトルを取り扱うために設計された専用のストレージシステムです。高次元ベクトルとは、機械学習モデルが意味を表現するために用いる、通常は数百から数千の浮動小数点数からなる数値配列のことです。単語、文章、画像、音声クリップ、ユーザーの行動はすべてベクトルとしてエンコードでき、ベクトルデータベースはこれらの埋め込みを数十億件保存し、新しいクエリに対してミリ秒単位で最も近い一致を見つけることを可能にします。
ベクトルデータベースの仕組み
大規模言語モデルやビジョンエンコーダーなどのMLモデルが埋め込みを生成すると、そのベクトルは元のアイテム(テキスト、画像ファイル、商品レコードなど)への参照とともにデータベースに送られます。データベースはHNSW(Hierarchical Navigable Small World)やIVF(Inverted File Index)などの近似最近傍(ANN)アルゴリズムを用いて索引を構築します。これらの構造は若干の正確性を犠牲にする代わりに、大規模データセットに対するクエリ速度を劇的に向上させます。検索時には、アプリケーションが新しい埋め込みをクエリとして送信し、索引がコサイン類似度、内積、ユークリッド距離などの類似度指標でランク付けされた上位k件のベクトルを返します。
なぜ重要なのか
従来のキーワード検索では「feline companion」と「house cat」がほぼ同じ意味であることを判別できませんが、それぞれの埋め込みはベクトル空間上で近い位置に配置されるため、ベクトルデータベースはそれらを一致として返します。この機能が、現代のセマンティック検索、レコメンドエンジン、画像・音声検索、異常検知、そしてRetrieval-Augmented Generation(RAG)における検索ステップを支えています。RAGでは、LLMがベクトルストアから取得した文書に基づいて回答を生成します。専用の索引化なしには、数百万のベクトルを一つずつクエリと比較することは、本番環境のトラフィックには遅すぎます。
主な種類と例
- 専用ベクトルデータベース:Milvus、Qdrant、Weaviate、Pineconeなど、ANN索引を中心にゼロから設計された専用エンジンです。
- ベクトル検索ライブラリ:FAISSやAnnoyのように、スタンドアロンサービスではなくアプリケーション内で動作する軽量エンジンです。
- ハイブリッドデータベース:PostgreSQL(pgvector経由)、Elasticsearch、MongoDBなど、従来のドキュメント機能またはリレーショナル機能にベクトル索引を追加した既存のストアです。
- マネージドクラウドサービス:主要なクラウドプロバイダーが提供するホスト型サービスで、より広範なデータプラットフォームとベクトル検索を統合します。
これらの選択は通常、スケール、レイテンシ要件、構造化レコードとデータが共存しているか、そしてチームが引き受けられる運用負荷の度合いによって決まります。この分野で最も優れたシステムは、代表的なデータセットにわたって再現率と毎秒クエリ数を比較するANN-Benchmarksリーダーボードなどのベンチマークで評価されています。