Interactive
HNSW近似最近傍探索可視化
200個の点から実際に多層グラフ(HNSW)を構築します。 点をクリックするとクエリになり、上層を貪欲に降下してから最下層でビームサーチするという 記事の検索アルゴリズムそのままの過程が見えます。efSearchを動かすと、総当たり(正解)と突き合わせた再現率と訪問ノード数が実際にどう変わるかを確認できます。
点(200個、意味的に近いものが固まる様子を模した6クラスタ)をクリックするとクエリになります。オレンジの太線が上層を貪欲降下した経路、薄い黄色のハローが最下層のビームサーチで訪問したノード、緑の点が最終的な上位6件です。 細い灰色線が最下層の全結線、青い線が上層(近道)の結線です。
総訪問ノード数
29
最上層からのホップ数
5層
このクエリの再現率
100%
上位6件(HNSW) vs 総当たりの正解
点#0(距離 0.0)✓ 正解に一致
点#103(距離 26.4)✓ 正解に一致
点#191(距離 30.1)✓ 正解に一致
点#144(距離 39.2)✓ 正解に一致
点#67(距離 46.9)✓ 正解に一致
点#8(距離 48.9)✓ 正解に一致
すべてブラウザ内で多層グラフの構築・貪欲降下・ビームサーチ・総当たり照合を実際に計算しています(可視化のため2次元の点で表現していますが、距離関数さえあればアルゴリズム自体は次元に依存しません)。近傍選択は距離が近いM個を選ぶ簡易版です。
ここが分かる
- 検索は最上層の入口から貪欲降下し、下層へ移るたびに探索の主体が変わる——記事の「最上層が高速道路、最下層が一般道」という比喩どおり、青い上層の辺は少ないホップで長距離を移動し、灰色の最下層の辺は密な近距離移動を担う様子を実際のグラフで確認できる。
- efSearchを広げるほど再現率は上がるが、訪問ノード数(=計算量)も増える——「efSearchと再現率」タブでは30クエリの平均を総当たりの正解と突き合わせて実測し、記事の言う速度と再現率のトレードオフを具体的な数値で確認できる。
- クエリごとにHNSWが返した上位k件と総当たりの正解を1件ずつ突き合わせる——「正解にない」がついた点は、グラフを辿るだけでは見つからなかった取りこぼしで、再現率が100%に届かない具体例として観察できる。