DiskANN は、RAM に各ベクトルのPQ で圧縮された小さなコピーを保持し、SSD には完全なベクトルとグラフを保持している。検索は、コストの低いRAM 比較を用いてグラフを走査し、その後、少数のコストの高いディスク読み取り操作を用いて上位の候補を再ランク付けする。
単一のコモディティ・SSD で、ディスク側の処理は容易にこなせる。RAM 側は、どのノートPCにも収まる。PQ のトリックがなければ、データセットを読み込むだけでも、数百GBのRAM を備えたサーバーが必要になるだろう。
PQ ≈ 1 µs、 SSD ≈ 100 µsでモデル化されています。実数はハードウェアに依存します。R )。階層構造はなく、単一の大きなグラフである。L の候補ベクトルプールを維持する。最良の候補をポップし、その近傍を拡張し、in-RAM PQ コードのみを使用して距離を推定する。ウォーク中はディスクI/Oを行わない。メンタルモデル: PQ は、「この近隣領域は有望か?」という低コストなテストである。ディスク読み取りは、「実際に検証してみよう」という高コストなチェックである。DiskANN は、その作業の大部分をこの低コストなテストでこなしている。
DiskANN は、RAM に収まらないデータセット向けに設計された、グラフベースの近似最近傍インデックスである。これは、効率的なディスクアクセス用にレイアウトされた単層のVamana グラフを構築し、メモリ内の各ベクトルに対してごく小さな積量子化 (PQ) コードを保持し、全精度のベクトルとグラフのエッジをSSD に格納する。 検索処理では、低コストなRAM PQ による比較を用いてグラフを探索し、ディスクにアクセスするのは、ごく少数の最終候補の順位付けを行う場合のみです。
『Milvus 』において、DiskANN はディスク上インデックスオプションの基盤となっている。これにより、数十ギガバイト(数百ギガバイトではない)のRAM を搭載したマシン上で、数十億規模のコレクションを検索可能にし、ディスク再ランク付けステップによって、リコール率をインメモリグラフインデックスと同等の水準に維持している。
R (グラフの次数、構築時間): Vamana グラフにおけるノードあたりの辺の最大数。Rの値が大きいほど、接続性とリコール率は向上するが、その代償としてディスク上のグラフサイズが大きくなり、構築時間が長くなる。L /search_list (クエリ時間):ビーム検索中に維持される候補プール。リコールとレイテンシを調整する主要なパラメータであり、HNSW のef に相当する。この値は、少なくともtop-K 以上でなければならない。データセット(またはメモリ使用量)がRAM の処理能力を超える場合は、DiskANN を選択してください。これは、SSD の読み取りが主因となるミリ秒レベルのレイテンシを代償として、わずかなメモリ使用量で高リコール率のクエリに対応します。すべてがメモリに余裕を持って収まる場合は、HNSW の方が高速に回答します。ディスクを使用せずに高速なインデックス構築や適度なメモリ節約が必要な場合は、IVF のバリエーションが中間的な選択肢となります。
ベクトルがRAM に収まらなくなった場合、あるいはそれらを格納するためのRAM のコストが許容範囲を超える場合。10億個の768次元浮動小数点ベクトルは、HNSW では約3 TBのメモリを必要とするが、RAM では数十GBのみ、さらにSSD とDiskANN を組み合わせれば収まる。データセットがメモリに余裕を持って収まる場合、HNSW は依然として低レイテンシの選択肢となる。
高速なNVMe (SSD )が重要な要件である。クエリのレイテンシは、ごく少数のランダムディスク読み取り(各約100 µs)によって支配されているためである。RAM の要件は控えめで、PQ のコード(例:ベクトルあたり32~64バイト)に作業用バッファを加えた程度である。
クエリごとの処理時間については、はい――通常、メモリ内HNSW ではサブミリ秒であるのに対し、ディスク上の再ランク付けは1ミリ秒未満の低単一桁ミリ秒です。これは、ディスク上の再ランク付けがRAM へのアクセスに比べて約100倍遅いからです。その代償として、DiskANN は、リコール率を90~95%以上に維持しつつ、同じデータセットに対して1桁少ないRAM で処理を行います。
PQ コードはグラフ探索を制御するためにのみ使用され、最終スコアを算出するためのものではない。結果を返す前に、DiskANN はSSD から上位候補のフルプレシジョンベクトルを読み込み、それらを正確に再ランク付けする。これにより、IVF_PQ のような純粋なPQ ベースのインデックスでは修正できない量子化誤差が補正される。
さらに詳しく知りたい場合は、セットアップ要件については『DiskANN 』のドキュメントを参照するか、完全な決定ガイドについては『Index Explained』を参照してください。