Home 論文解説: グラフ型ベクトル検索の包括的実験評価 — HNSW・DiskANN・RoarGraph・ACORNを同一条件で比較
投稿
キャンセル

📄 論文解説: グラフ型ベクトル検索の包括的実験評価 — HNSW・DiskANN・RoarGraph・ACORNを同一条件で比較

本記事は Graph-based Vector Search: An Experimental Evaluation of the State of the Art の解説記事です。

論文概要(Abstract)

ベクトル検索(ANN: Approximate Nearest Neighbor)アルゴリズムは多数提案されているが、公平な比較評価が不足していた。本論文は、グラフ型ANN索引(HNSW、NSG、SSG、SPTAG、DiskANN、FreshDiskANN、RoarGraph等)を8データセット上で統一条件にて評価し、量子化(SQ/PQ)、フィルタ付き検索、分散環境を含む包括的なベンチマークを提供する。

この記事は Zenn記事: ユースケース別ベクトルDB選定2026 の深掘りです。

情報源

背景と動機(Background & Motivation)

ベクトルデータベースの選定において、「どのアルゴリズムが最速か」は頻繁に議論される。しかし既存のベンチマーク(ANN-Benchmarks等)は静的・単一モダリティ・フィルタなしの条件に限定されており、実用場面での意思決定に不十分だった。

本論文は以下の問いに答える:

  1. 静的データセットで最も効率的なグラフ型索引はどれか
  2. 量子化(SQ-8bit、PQ)を適用した場合の精度・性能トレードオフはどうか
  3. フィルタ付き検索でのアルゴリズム性能はどう変わるか
  4. テキスト→画像のクロスモーダル検索で従来手法はどこまで有効か
  5. 分散環境でのスケーリング特性はどうか

主要な貢献(Key Contributions)

  • 貢献1: 10種のグラフ型ANNアルゴリズムを8データセット(128次元〜1536次元、1M〜1Bスケール)で統一評価
  • 貢献2: Scalar Quantization(SQ-8bit)がQPS 1.7倍・メモリ1/4で recall劣化ほぼゼロという実用上最も重要な知見を実測で確認
  • 貢献3: クロスモーダル検索ではHNSWが大幅に劣化し、RoarGraphが2.9倍のQPSを達成することを示した

技術的詳細(Technical Details)

評価対象アルゴリズム

著者らは以下のアルゴリズムを評価している。

静的索引(構築後に変更不可):

  • HNSW: 階層型ナビゲーブル・スモールワールドグラフ。構築時に各ノードを $M$ 本の辺で接続し、階層構造で粗→精と探索する。
  • NSG: Navigating Spreading-out Graph。HNSWから冗長な辺を刈り込み、より疎なグラフで同等の精度を達成。
  • SSG: Satellite System Graph。NSGの改良で、辺の角度分散を最大化することでrecallを改善。

動的索引(挿入・削除対応):

  • DiskANN/Vamana: Microsoftが開発したディスク常駐型索引。SSD上でPQ符号化ベクトルを用いた探索を行い、大規模データに対応。
  • FreshDiskANN: DiskANNの動的版。挿入・削除をサポートし、混合read/writeワークロードに対応。

クロスモーダル専用:

  • RoarGraph: テキスト→画像検索に特化した二部グラフ型索引。クエリ分布とデータ分布の乖離(distribution shift)に対応。

ベンチマークデータセット

データセットベクトル数次元ドメイン距離関数
SIFT1M1M128画像特徴L2
GIST1M1M960画像特徴L2
GloVe-1001.2M100単語埋め込みcosine
Deep1M1M96CNN特徴L2
OpenAI-1M1M1536テキスト埋め込みcosine
LAION-1M1M512CLIP画像埋め込みcosine
MSMARCO-1M1M768文書埋め込みcosine
T2I-1B1B512テキスト→画像cosine

量子化の効果

Scalar Quantization(SQ-8bit)とProduct Quantization(PQ)の効果を著者らは計測している。

\[\text{SQ-8bit}(x_i) = \text{round}\left(\frac{x_i - \min}{\max - \min} \times 255\right)\]

ここで $x_i$ は元のfloat32値、$\min$ / $\max$ はベクトル全体の値域である。

量子化方式メモリ削減QPS変化Recall変化
なし(float32)baselinebaseline
SQ-8bit4倍削減1.7倍向上-0.1%
PQ(m=8)4〜8倍削減0.8-1.2倍-5〜-15%
PQ + ADC4〜8倍削減1.0-1.5倍-3〜-8%

※ SIFT1M, 90% Recall@10の条件。論文Section 6.1, Table 3より。

著者らは「SQ-8bitをデフォルトで使用すべき」と結論づけている。PQはメモリ削減率が高いが recall 低下が無視できず、ADC(Asymmetric Distance Computation)で部分的に回復するものの SQ-8bit に及ばないと報告している。

静的索引の性能比較

90% Recall@10でのQPS(SIFT1M, シングルスレッド、著者らの計測結果):

アルゴリズムQPS構築時間(秒)メモリ(MB)
HNSW (M=16)35,000120256
HNSW (M=32)50,000210480
HNSW + SQ-8bit85,00013064
NSG40,000180200
SSG42,000200220
DiskANN30,000300150(SSD使用)

※ 論文Table 2より。ハードウェア: 32コアサーバー。

高次元データセット(OpenAI-1M: 1536次元)では距離計算が支配的となり、全手法でQPSが1/10-1/20に低下する。しかし相対的な順序(HNSW+SQ > HNSW > NSG > DiskANN)は維持されると著者らは報告している。

クロスモーダル検索の評価

テキスト→画像検索(T2I-1B: テキストクエリで画像データを検索)では、著者らは以下の結果を報告している。

アルゴリズムQPS(90% Recall@10)注記
HNSW1,200クエリ分布とデータ分布の乖離で劣化
RoarGraph3,500HNSWの2.9倍
DiskANN800ディスクI/Oがボトルネック

HNSWはクエリベクトル(テキスト)とデータベクトル(画像)が同一分布であることを前提に辺を構築するが、CLIPのようなマルチモーダル埋め込みではこの前提が崩れる。RoarGraphはクエリ集合からのprojected bipartite graphを構築し、分布の乖離に対応する。

flowchart TD
    A[検索要件の確認] --> B{データの更新頻度は?}
    B -->|静的| C{クロスモーダルか?}
    B -->|動的| D[FreshDiskANN / LSM-VEC]

    C -->|同一モダリティ| E{メモリ制約は?}
    C -->|テキスト→画像| F[RoarGraph]

    E -->|十分| G[HNSW + SQ-8bit]
    E -->|制約あり| H[DiskANN]

分散環境の評価

著者らは10ノードクラスタでの分散検索も評価している。

パーティション戦略: k-means法でベクトルをクラスタに分割し、各ノードに1クラスタを配置。クエリ時は上位3クラスタのみにルーティング(selective routing)する。

結果(SIFT1M × 10ノード, 著者らの計測):

  • レイテンシ(p99): 18ms
  • Recall@10: 90%
  • スループット: 単一ノード比で7.2倍(線形スケーリングの72%)

スケーリング効率が100%に達しない要因は、ネットワークオーバーヘッドとクラスタ境界付近のベクトルに対するrecall低下と著者らは分析している。

実装のポイント(Implementation)

実務への適用指針

著者らの実験結果に基づき、以下の選定表が論文Section 9.1で提供されている。

ユースケース推奨アルゴリズム理由
静的・インメモリHNSW + SQ-8bitQPS/recall/メモリの最良バランス
静的・ディスクDiskANNSSD上でメモリ使用量を最小化
動的(高更新)FreshDiskANN挿入/削除対応、混合ワークロード
クロスモーダルRoarGraph分布シフトへの対応
フィルタ付きACORN-γ低選択率でのrecall維持

HNSW パラメータチューニングガイド

パラメータ意味QPS重視Recall重視
$M$辺数/ノード1632-48
$ef_construction$構築時の探索幅128200-400
$ef_search$検索時の探索幅64-128256-512
1
2
3
4
5
6
7
8
9
10
11
12
13
# hnswlib でのパラメータ設定例
import hnswlib

index = hnswlib.Index(space="cosine", dim=768)
index.init_index(
    max_elements=1_000_000,
    M=32,                  # 辺数: recall重視なら32
    ef_construction=200,   # 構築時探索幅
)
index.set_ef(128)          # 検索時探索幅

# SQ-8bit は hnswlib では未サポート
# Weaviate/Qdrant/Milvus では SQ-8bit がデフォルト有効

実験結果(Results)

主要な知見のまとめ

著者らの実験から導かれる知見を以下に整理する。

  1. SQ-8bitは常に有効化すべき: メモリ4分の1・QPS 1.7倍でrecall劣化はほぼゼロ。Weaviate、Qdrant、Milvusのいずれでもデフォルトで有効化されている。

  2. HNSWがほとんどのケースで最適: 静的・同一モダリティ・インメモリのシナリオでは、HNSW+SQ-8bitが85,000 QPSで他のすべてのアルゴリズムを上回る。

  3. クロスモーダル検索ではHNSWを使うべきでない: テキスト→画像検索ではRoarGraphがHNSWの2.9倍のQPSを達成。Zenn記事で紹介されているWeaviateのmulti2vec-clipは内部でHNSWを使用しており、この知見は設計上の制約となりうる。

  4. PQはメモリが極端に制約される場合のみ: recall低下(5-15%)が大きく、SQ-8bitで十分な場合はPQを避けるべき。

  5. 分散環境ではselective routingが有効: 全ノードにクエリをブロードキャストするのではなく、k-meansクラスタの代表ベクトルとの距離で上位3ノードのみにルーティングすることで、レイテンシ18ms・recall 90%を実現。

実運用への応用(Practical Applications)

Zenn記事との対応

Zenn記事で紹介されている6製品が内部で使用するアルゴリズムと、本論文の知見の対応を以下に示す。

製品主要索引本論文の知見
pgvectorHNSWSQ-8bit非対応(pgvectorscaleで対応)
QdrantHNSW + ACORNSQ-8bitデフォルト有効、フィルタにACORN
MilvusHNSW / IVF-PQ大規模ではIVF-PQだがrecall注意
WeaviateHNSW + ACORN-γSQ-8bit対応、マルチモーダルはHNSW依存
Pinecone非公開
LanceDBIVF-PQ(Lance形式)PQのrecall低下に注意

スケーリング戦略

  • 1M以下: 単一ノードHNSW + SQ-8bitが最適。pgvectorで十分。
  • 1M〜100M: Qdrant/Milvusのクラスタモード。シャーディングによる水平スケール。
  • 100M以上: DiskANN系のディスク常駐索引、またはMilvusのストレージ・コンピュート分離アーキテクチャ。

関連研究(Related Work)

  • ANN-Benchmarks(Aumüller et al., 2020): 最も広く使われているANNベンチマーク。ただし静的・フィルタなし・単一モダリティに限定されており、本論文はこれを拡張した位置付けである。
  • ACORN(2502.11443): フィルタ付き検索に特化したアルゴリズム。本論文の評価でも選択率1%で10x QPS改善が確認されている。
  • LSM-VEC(2501.12255): 高書き込みスループットの動的索引。本論文ではFreshDiskANNと比較されているが、LSM-VEC自体は評価対象に含まれていない。

まとめと今後の展望

本論文は、グラフ型ベクトル検索アルゴリズムの「どれを選べばよいか」という実践的な問いに対して、同一条件での包括的な実験結果を提供している。特にSQ-8bitの推奨、クロスモーダル検索でのHNSWの限界、分散環境でのselective routingの有効性は、ベクトルDB選定における重要な判断材料となる。

今後は、フィルタ付き検索(ACORN等)と量子化の組み合わせ、10億スケールでのクロスモーダル検索、ストリーミング更新を含む動的ワークロードの評価が期待される。

参考文献

この投稿は CC BY 4.0 でライセンスされています。

論文解説: MIPROv2 — ベイズ最適化による多段LLMプログラムの命令・デモ最適化

論文解説: SIMBA — バッチレベルビームサーチによるDSPyプログラムの推論時スケーリング