【えいちえぬえすだぶりゅー】

HNSW(階層的近似最近傍探索) とは?

公開:
💡 「億件の中から似たものを一瞬で見つける」——ベクトル検索を支えるスキップ付きグラフ構造

ベクトルデータベースで使われる近似最近傍探索アルゴリズム。階層的なグラフ構造で高次元ベクトルを高速に検索し、RAGや類似検索の基盤技術。

📌 このページのポイント
HNSW:階層的グラフによるベクトル探索 層2 (粗い) 層1 層0 (密な) 入口 最近傍(ゴール) 粗→精で絞込
HNSWの階層グラフ:粗い上位層で大まかに絞り、下位層で精細に探索する
ひよこ ひよこ
ペンギン先生、ベクトルデータベースで「似た文章を探す」って、どうやって速くやるの?
ペンギン先生 ペンギン先生
そこで使われるのが「HNSW」というアルゴリズムだよ。全件を総当たりで比べるのではなく、階層グラフを使って探索対象を絞り込みながら近い候補を見つけるんだ。
ひよこ ひよこ
階層グラフって何なの?
ペンギン先生 ペンギン先生
イメージは地図のスケールを変える感じだよ。一番上の層は道路の少ない粗い地図で、おおざっぱにエリアを絞る。下の層に行くほど詳細な地図になって、最終的に最も近いノードにたどり着くんだ。
ひよこ ひよこ
一番上で大まかに絞って、下で細かく探すんだね!でも「近似」って、正確じゃないってこと?
ペンギン先生 ペンギン先生
そうだよ。厳密な最近傍ではなく「ほぼ一番近い」ものを返すんだ。でも実際の検索では99%以上の精度が出ることが多くて、速度とのトレードオフとして十分実用的なんだよ。
ひよこ ひよこ
RAGで使われるベクトルDBに全部入ってるって、すごく重要な技術なんだね!
ペンギン先生 ペンギン先生
まさにね。PineconeQdrantWeaviateといった主要なベクトルデータベースはほぼ全てHNSWを採用しているよ。億規模のベクトルでも対数時間で検索できるから、LLMと組み合わせたRAGシステムを実用的なレスポンス速度で動かせるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「HNSW」って出てきたら「ベクトル検索を高速化する階層グラフアルゴリズム」と思えればだいたいOK!
📖 おまけ:英語の意味
「Hierarchical Navigable Small World」 = 階層的にナビゲート可能なスモールワールド
💬 スモールワールドネットワーク理論を応用した、2016年のYury Malkovらの論文が起源だよ。
← 用語集にもどる