Azure AI Search における 10 億ベクトル問題の克服
By Mirko Peters ·
エンタープライズ AI で今もっとも差し迫った課題の一つ、検索対象を数十億件のレコードへ拡張するベクトル検索について、詳しく掘り下げていきます。retrieval-augmented generation (RAG) システム、セマンティック検索エンジン、AI アシスタントを扱ったことがある方なら、データが蓄積される速さを実感されているはずです。組織が数百万、場合によっては数十億件のドキュメント、画像、ユーザーの操作履歴を取り込むにつれて、従来の検索アーキテクチャは負荷に耐えられなくなり始めます。そのため、数十億規模のベクトルインデックスの仕組みを理解することは、アーキテクトや開発者にとってもはやオプションではなく、システムを維持するための必須事項です。
Automatically translated with AI from the original post. Read the English original
エンタープライズ AI で今もっとも差し迫った課題の一つ、検索対象を数十億件のレコードへ拡張するベクトル検索について、詳しく掘り下げていきます。retrieval-augmented generation (RAG) システム、セマンティック検索エンジン、AI アシスタントを扱ったことがある方なら、データが蓄積される速さを実感されているはずです。組織が数百万、場合によっては数十億件のドキュメント、画像、ユーザーの操作履歴を取り込むにつれて、従来の検索アーキテクチャは負荷に耐えられなくなり始めます。そのため、数十億規模のベクトルインデックスの仕組みを理解することは、アーキテクトや開発者にとってもはやオプションではなく、システムを維持するための必須事項です。
この包括的なブログ記事では、高次元ベクトル空間における技術的なハードルを整理し、業界を代表するグラフベースのインデックスアルゴリズムである Hierarchical Navigable Small World (HNSW) と Microsoft の DiskANN を比較するとともに、Azure AI Search がこれらのワークロードを効率的に処理するためにどのような機能を提供しているかを解説します。メモリパラメーターの調整、ハードウェアインフラのコスト管理、検索の再現率の最大化に取り組んでいる方にとって、必要な技術的ロードマップを提供します。これらの概念を音声で解説したものとして、関連するポッドキャストエピソード HNSW vs DiskANN for Vector Search in Azure AI Search(M365 FM)もぜひご覧ください。
Azure AI Search における 10 億ベクトル問題
数十億規模のベクトル検索の課題
エンタープライズ AI で大規模なデータセットのインデックス作成と検索が必要になると、10 億ベクトル問題に直面します。数十億のベクトルを扱うには、固有の技術的課題があります。処理速度を落とさずに大規模データを処理できる効率的なインデックス作成の仕組みを構築する必要があります。検索結果を最新かつ関連性の高い状態に保ちたい場合、リアルタイムの更新が重要になります。また、正確な検索結果を得るには、高次元の埋め込みを適切に管理することも欠かせません。
数十億規模のデータセットを扱う場合、いくつかの制約に直面します。
- 次元数が高いと計算コストが増加し、検索性能が低下する可能性があります。
- ベクトル表現と実世界の意味との間にあるセマンティックギャップが、精度の低下を招く可能性があります。
- ガベージコレクションが難しくなり、古い情報をインデックスから削除しにくくなります。
- ベクトルの品質は選択する埋め込みモデルに左右され、それが検索精度に影響します。
- スケーラビリティの拡大はメモリ要件を押し上げ、検索時間を長くする可能性があります。
- コールドスタート問題により、適切なベクトル表現がない新しいアイテムを検索しにくくなります。
- 解釈性が低いため、ある検索結果がなぜ表示されたのかを理解しにくい場合があります。
これらの課題があるため、10 億ベクトル問題は現代の AI においてもっとも難しい問題の一つになっています。
アルゴリズム選択が重要な理由
10 億ベクトル問題へのアプローチは、アルゴリズムの選択によって直接左右されます。HNSW のようなアルゴリズムを選べば、大規模データセットでも高速なアクセスと効率的な検索が可能になります。ただし、多くの RAM が必要になり、コストが増加する可能性があります。一方、exhaustive KNN のような他のアルゴリズムは高い精度を提供しますが、はるかに多くの計算を必要とするため、小規模なデータセットに向いています。適切なアルゴリズムを選ぶことで、速度、精度、リソース使用量のバランスを取ることができます。アプリケーションの要件にアルゴリズムを合わせれば、特定の用途に合わせてパフォーマンスを最適化できます。この判断は、大規模データセットをどれだけうまく扱えるか、そしてハードウェアにどれだけ投資するかを左右します。
Azure AI Search の概要
Azure AI Search は、10 億ベクトル問題に取り組むための強力なプラットフォームを提供します。高度なクレンジングとエンリッチメントのツールを使ってデータを前処理できるため、インデックス作成前にベクトルの品質を高めることができます。このプラットフォームは、情報を検索タスクや最新の検索ニーズに適したベクトルデータベースに整理します。自然言語処理によるセマンティック理解を含む、堅牢な検索および取得機能を利用できます。暗号化やアクセス制御によりデータを保護するセキュリティも強固です。
Azure AI Searchは、他のMicrosoft Azureサービスやサードパーティのプラットフォームともスムーズに統合できます。キーワード検索とベクトル検索を組み合わせたハイブリッド検索を使えば、最良の結果を得られます。ランキングと関連性のチューニングにより、検索結果の表示方法を調整でき、ユーザーにとってより役立つものになります。また、オートコンプリートや検索候補の提示といった、スマートな検索体験も提供しています。Azureのグローバルインフラストラクチャ上に構築されているため、大規模なデータセットや大規模なデータプロジェクトに必要なスケールと信頼性を実現できます。
グラフベースのインデックス: HNSW と DiskANN

HNSW とは
HNSW は hierarchical navigable small world の略で、聞いたことがあるかもしれません。このグラフベースのインデックスアルゴリズムは、大規模なデータセットの中から類似したベクトルを素早く見つけるのに役立ちます。HNSW は、データポイントを連結した多層グラフ構造を構築し、検索を高速かつ正確にします。グラフの各層は密度が異なり、上位層はノード数が少なく、下位層ほどノード数が多くなります。この設計により、上位層から検索を始めて下に向かって絞り込んでいけます。HNSW はインメモリのベクトル検索に最適化されており、グラフ全体を RAM に保持します。このアプローチは低レイテンシの結果をもたらしますが、データセットが大きくなると多くのメモリが必要になるという意味でもあります。
DiskANN とは
DiskANN は、数十億規模のベクトル検索が抱える課題に対する Microsoft の答えです。このグラフベースのインデックスは、メモリと SSD ストレージを組み合わせたハイブリッドなアプローチを採用しています。DiskANN では、インデックスの大部分を RAM よりはるかに安価な SSD に保存できます。メモリに保持するのは、最も重要なナビゲーション用のデータだけです。この設計により、高いハードウェアコストをかけずに大規模なデータセットを管理できます。DiskANN は Vamana グラフアルゴリズムを使って、データの中での検索を導きます。また、特別な剪定(プルーニング)手法を用いて、グラフの多様性と効率性を保っています。Microsoft の DiskANN は Azure AI Search などのサービスを支えており、エンタープライズ AI における重要な技術革新となっています。
| イノベーション | 説明 |
|---|---|
| 高速な ANN 検索 | DiskANN のアーキテクチャにより、SSD 上で効率的な ANN 検索が可能になり、ハードウェアコストの削減に役立ちます。 |
| ハイブリッドメモリシステム | DiskANN は DRAM と SSD を組み合わせて使用し、1 台のマシンで数十億のポイントを管理します。 |
| コストパフォーマンスの高いストレージ | DiskANN は ANN インデックスをディスクに格納するため、高次元データの処理を低コストで実現できます。 |
HNSW の仕組み
グラフの構築
HNSW は、検索グラフの階層構造を作成することでグラフベースのインデックスを構築します。最初は空の構造から始めます。最初に追加されたベクトルが、最上位層の唯一のノードになります。新しいベクトルを追加するたびに、HNSW はランダムなプロセスによって、そのベクトルが参加する層の数を決定します。新しいベクトルは、割り当てられた最大層数まで、各層で最も近い隣接ノードと接続されます。最上位層はノード数が最も少ないため、検索の良い出発点になります。下位層はノード数が多く、詳細な検索が可能です。HNSW は全体の再構築を行わずにグラフを更新できるため、要件の拡大に合わせてデータを追加できます。
検索のプロセス
HNSW で検索する場合は、グラフの最上位層から始めます。長距離リンクを使って、目的のベクトルがありそうな領域へ素早く移動します。層を下がるにつれて接続は密になります。これにより検索を絞り込み、最も一致するものに近づけます。最下層では、HNSW がビームサーチを用いて最近傍を見つけます。このプロセスにより、特にグラフ全体がメモリに収まっている場合に、高速かつ正確な結果が得られます。
- HNSW の設計原則:
- インメモリ処理に最適化され、低レイテンシと高い再現率を実現します。
- スモールワールドネットワークに基づく多層グラフ構造を採用しています。
- 剪定戦略により冗長なエッジを削除し、多様性を促進します。
- 検索は層を下降する過程で行われ、まずまばらな長距離リンクを使い、最後に基底層でビームサーチを行います。
HNSW と DiskANN はどちらもグラフベースのインデックスを使用していますが、その設計は異なるニーズに適しています。HNSW はすべてをメモリに保持できる場合に最適です。DiskANN は SSD を活用することで数十億のベクトルまでスケールでき、Azure AI Search におけるエンタープライズワークロードに理想的です。
DiskANN の仕組み
ハイブリッドなメモリと SSD のアーキテクチャ
数十億ベクトル規模の検索に DiskANN を使うと、独特のアプローチに出会います。DiskANN はメモリと SSD ストレージを組み合わせ、ハイブリッドなアーキテクチャを実現しています。この設計により、ベクトルインデックスの大部分を RAM より安価な SSD に保存できます。メモリに保持するのは、ナビゲーションに必要な最小限のデータだけです。この方法により、高価なハードウェアを用意しなくても、数十億ベクトルまで検索をスケールさせられます。
DiskANN は、ストレージとスピードを最適化するために、主に 2 つの技術を使用しています。
- Vamana グラフ: この構造を使うと、インデックス内を効率的にナビゲートできます。
- 直積量子化 (PQ): メモリ上でベクトルを圧縮し、RAM の使用量を減らします。
2 段階のクエリ実行プロセスにより、メリットが得られます。第 1 段階では、DiskANN がメモリ上の PQ 圧縮ベクトルを使って、候補セットを素早く特定します。この段階ではディスクを読み取る必要はありません。第 2 段階では、DiskANN が候補セットについて SSD から完全精度のベクトルを取得します。その後、正確な距離を計算して、最も一致するものを見つけます。このプロセスにより、メモリ要件を低く抑えながら、高い再現率と低いレイテンシーを実現できます。
ヒント: DiskANN のメモリと SSD のハイブリッドアーキテクチャにより、一般的なハードウェアでも Web 規模の検索が可能になります。ベクトルインデックスを RAM ではなく SSD に保存できるため、大規模なアプリケーションをより手頃なコストで運用できます。
検索プロセス
DiskANN での検索は、メモリ上の圧縮ベクトルを使って Vamana グラフをナビゲートすることから始まります。このステップにより、有望な候補を素早く見つけられます。この段階ではディスク読み取りを避けるため、処理が高速化されます。候補セットが得られると、DiskANN は次の段階に進みます。
候補ごとに、SSD から完全精度のベクトルを取得します。クエリとこれらの候補との正確な距離を計算します。この 2 段階のプロセスにより、検索を遅らせることなく正確な結果が得られます。DiskANN は最も有望な候補を詳細に確認するため、高い再現率を達成できます。また、作業の大部分はメモリ内で行われるため、レイテンシーも低く抑えられます。
DiskANN の検索プロセスは、非常に大規模なデータセットに適しています。大量の RAM を必要とせず、数十億ベクトルを扱えます。データが増えても、高速で信頼性の高い結果を得られます。このため、Azure AI Search におけるエンタープライズ AI ワークロードにとって、DiskANN は有力な選択肢となります。
| ステップ | 実行内容 | メリット |
|---|---|---|
| フェーズ 1: ナビゲーション | RAM 上の PQ 圧縮ベクトルを使って候補を特定する | ディスク読み取りなしで高速に検索できる |
| フェーズ 2: 精緻化 | SSD から完全精度のベクトルを取得し、距離を計算する | 高い再現率と低いレイテンシー |
DiskANN のハイブリッドアーキテクチャと検索プロセスにより、数十億ベクトルという課題を効率的に解決できることがわかります。データが拡大しても、検索をスケールさせ、コストを抑え、パフォーマンスを維持できます。
長所と短所
HNSW の長所と短所
ベクトル検索で HNSW を選ぶことは多くあります。最先端レベルの検索速度と高い再現率を提供するためです。HNSW を適切にチューニングすれば、高速な結果と正確な一致が得られます。高次元のベクトルデータも well に扱えるため、最新の AI ワークロードでは重要な利点です。また、増分追加にも対応しているため、インデックス全体を再構築せずに更新できます。
HNSW の長所と短所の概要は次のとおりです。
| 長所 | 短所 |
|---|---|
| 適切にチューニングすると、最先端の検索速度と高い再現率を実現。 | 各ベクトルのグラフリンクを保存するため、メモリ消費が大きい。 |
| 高次元データを適切に扱える。 | 高品質な構築パラメーターを使うと、インデックスの構築に時間がかかる。 |
| 増分追加を効率的にサポート。 | 要素の複雑な削除により、時間の経過とともにパフォーマンスが低下する可能性がある。 |
HNSW はインデックス構築に O(N log N) を要するため、効率的にスケールできます。並列構築によりマルチコアプロセッサを活用でき、処理が高速化されます。メモリ使用量はデータセットのサイズに比例して増えるため、ストレージ要件を予測しやすくなります。ただし、グラフ全体を RAM に保持する必要があるため、数十億ベクトル規模のデータセットではスケーラビリティに制約があります。
DiskANN の長所と短所
RAM で扱える範囲を超えてベクトル検索をスケールさせる必要がある場合に、DiskANN を選びます。DiskANN は SSD の利用に最適化されているため、ハードウェアコストを抑えつつ、大規模なデータセットを管理できます。インメモリ検索とバッチ処理された SSD 読み取りを組み合わせることで、高い精度と低いレイテンシーが得られます。DiskANN はリアルタイムの更新とハイブリッド検索にも対応しているため、ベクトルのフィルタリングと取得を効率的に行えます。
DiskANN について、次の点を検討してください。
- RAM の代わりに SSD を使うことで、コスト効率よくスケールできる。
- インメモリ検索と SSD 読み取りにより、大規模環境でも高い精度と低いレイテンシーを実現。
- リアルタイムの更新と、ベクトル検索とフィルター付き検索を組み合わせたハイブリッド検索。
- Vamana グラフの構築は計算負荷が高いため、ビルド時間が長くなります。
- パフォーマンスは SSD のスループットとレイテンシーに左右されます。
- HNSW のようなインメモリ構造と比べて、更新のコストが高くなります。
- 実装とチューニングには、慎重な最適化が必要です。
DiskANN は量子化ベクトルを扱えるため、データを圧縮し、メモリ効率の良い検索を実現できます。RAM の上限を気にすることなく、数十億ベクトル規模のワークロードに DiskANN を利用できます。
メモリとストレージの効率
ベクトル検索に HNSW と DiskANN のどちらを選ぶかは、メモリとストレージの効率を考慮して判断する必要があります。HNSW は、データセットがサーバーの RAM に収まる場合にうまく機能します。高速なアクセスと高いパフォーマンスが得られますが、メモリの上限を超えてスケールすることはできません。DiskANN では、データセットのサイズをディスク容量まで拡張できます。その代わりに速度は多少犠牲になります。インデックスの大部分を SSD に格納するため、DiskANN は大規模なベクトルデータセットに最適です。
| 機能 | HNSW | DiskANN |
|---|---|---|
| メモリ効率 | サーバーのキャッシュ(RAM)に収まるデータセットに対して非常に効率的です。 | RAM に収まらないほど大きなデータセット向けに設計されています。 |
| ストレージ効率 | 利用可能な RAM の容量によって制限されます。 | ディスク容量までデータセットサイズを拡張できます。その代わりに速度は多少犠牲になります。 |
| パフォーマンスの最適化 | 高速なメモリアクセスを活用して高速化します。 | 低速なディスクストレージによるパフォーマンスの低下を最小限に抑えます。 |
| データセットへの適合性 | RAM に収まるデータセットに適しています。 | RAM の容量を超える大規模データセットに適しています。 |
HNSW と DiskANN のどちらでも量子化ベクトルを使うと、ストレージの必要量を減らし、検索速度を向上させられます。DiskANN のハイブリッドアーキテクチャを使うと、コストを抑えながらベクトル検索をスケールさせることができます。特に量子化ベクトルと SSD ストレージを組み合わせると、大規模な検索タスクでメモリ効率の良い検索を実現できます。
ベクトル検索アルゴリズムの比較

大規模環境でのパフォーマンス
データセットの増加に伴って、ベクトル検索アルゴリズムのパフォーマンスを測定する必要があります。HNSW と DiskANN はどちらも高い再現率と速度を目指していますが、その戦略は異なります。HNSW はインメモリのグラフに依存しているため、ベクトルが RAM に収まる場合は、高速な最近傍検索が可能です。DiskANN はメモリと SSD を組み合わせたハイブリッド方式を採用しているため、メモリの上限を気にすることなく検索パフォーマンスをスケールさせられます。
数百万件のベクトルに対して最近傍検索を実行する場合、HNSW は高速な検索と低レイテンシーを提供します。再現率と速度のパラメーターを調整することもできます。DiskANN は、データセットが拡大しても高い再現率と速度を維持します。インデックスの大部分を SSD に格納するため、数十億件のベクトルを扱えます。2 段階の検索を使うことで、速度と精度のバランスを取れます。第 1 段階ではメモリ内で候補を見つけ、第 2 段階では SSD を使って結果を絞り込みます。
どちらのアルゴリズムでも高い再現率と速度を実現できますが、DiskANN を使うと、RAM の上限を超えて検索パフォーマンスをスケールさせられます。
数十億ベクトルへのスケーラビリティ
データセットが数百万件から数十億件のベクトルへと増えると、新たな課題に直面します。HNSW は最大 5,000 万件のベクトルにうまく対応します。既定のベクトル検索アルゴリズムとして HNSW を使い、再現率を重視してパラメーターを調整してください。5,000 万~5 億件のベクトルになったら、シャーディングとスカラー量子化を導入します。効率化のために 2 段階の検索を検討することもできます。5 億件を超えるデータセットでは、階層型検索とマルチティア アーキテクチャが必要です。コールドデータには積極的な量子化を使います。
| ベクトル数の範囲 | HNSW の戦略 |
|---|---|
| 1~5,000 万件 | 既定のアルゴリズムとして HNSW を使用し、ベクトルが RAM に収まるようにして、再現率を重視してパラメーターを調整します。 |
| 5,000 万~5 億件 | シャーディングを導入し、スカラー量子化を有効にして、効率化のために 2 段階の検索を検討します。 |
| 5 億件以上 | 階層型検索、マルチティア アーキテクチャを使用し、コールドデータには積極的な量子化を適用します。 |
DiskANN は、数十億件規模のベクトル検索の在り方を変えます。インデックスの大部分を SSD に格納するため、RAM の上限を気にする必要はありません。製品量子化を使ってベクトルを圧縮し、ナビゲーションデータはメモリ内に保持します。検索パフォーマンスを犠牲にすることなく、最近傍検索を数十億件のベクトルまで拡張できます。DiskANN はクラスタリングベースの近似検索とハイブリッド検索をサポートしており、大規模なデータセットの管理に役立ちます。
DiskANN を使うと、数十億件のベクトルに対応するベクトル検索アルゴリズムをスケールさせられるため、エンタープライズのワークロードに最適です。
クエリのレイテンシーとスループット
大規模なベクター検索を実行する際は、クエリのレイテンシーとスループットが重要になります。HNSWは、グラフ全体をメモリ上に保持するため、最近傍検索で低レイテンシーを実現します。データセットがRAMに収まる場合は、高速なクエリ応答と高いスループットが得られます。データが増えると、シャーディングやマルチティア構成を用いることになり、レイテンシーが増加します。
DiskANNは、2段階の検索プロセスを使用します。まず、メモリ上の圧縮ベクターを検索し、高速に候補を絞り込みます。次に、SSDから完全精度のベクターを取得して、クエリを精緻化します。この方式により、10億規模のデータセットでも、レイテンシーを低く抑え、高いスループットを維持できます。SSDの読み取りをバッチ処理し、効率的なナビゲーション構造を使うことで、検索をさらに最適化できます。
DiskANNでは、クエリ量が増えても高い再現率と速度を実現できます。メモリの上限を気にする必要がないため、エンタープライズアプリケーション向けに検索性能をスケールさせることができます。
DiskANNを使えば、クエリのレイテンシーとスループットを安定して確保できます。大規模な最近傍検索に適した、有力な選択肢です。
コストとリソースへの影響
Azure AI Search でベクター検索アルゴリズムを選ぶ際は、コストとリソースへの影響を考慮する必要があります。各アルゴリズムがメモリとストレージをどのように使うかによって、予算と拡張性が左右されます。
DiskANNは、10億規模のベクターを扱うワークロードで優位性があります。インデックスの大部分をSSDに格納できます。SSDはRAMより低コストです。この設計により、メモリコストを大きく増やすことなく、数千から数十億のベクターまでスケールできます。DiskANNは、SSDを効率的に活用し、最も重要なデータだけをメモリに保持するため、本番環境のAIワークロードに適しています。
HNSWは中規模のデータセットに最適です。インデックス全体をRAMに保持する必要があります。この要件により、スケールできる範囲が制限されます。データセットが大きくなりすぎると、運用コストが高くなる可能性があります。また、HNSWは2,000次元までに制限されているため、ユースケースが限られる場合があります。
| インデックスの種類 | 10億規模のベクターワークロードへの適性 | メモリ要件 | 運用コスト |
|---|---|---|---|
| DiskANN | はい。SSDの性能を前提に設計されています | 数千から数十億のベクターまでスケールします | 本番環境のAIワークロードに推奨 |
| HNSW | いいえ。中規模のデータセットに適しています | インデックスをRAMに収める必要があります | 2,000次元までに制限されています |
ヒント: コストを抑えつつ、検索を数十億のベクターまでスケールさせたい場合は、DiskANNが明確な利点になります。低価格のSSDを利用でき、メモリの必要量も抑えられます。
実際のユースケース
これらのアルゴリズムの価値は、実際のアプリケーションで確認できます。多くの組織が、異なる種類のベクター検索の課題に対して、DiskANNとHNSWを使い分けています。
- 近似最近傍検索では、コスト効率に優れたハイブリッド方式を利用できます。この方式は、SSDストレージとインメモリのグラフ構造を組み合わせます。
- 研究用コーパスのように、データがあまり変化しない静的データセットには、DiskANNを導入できます。
- コストを重視する環境では、DiskANNを選択できます。コストを抑える必要がある10億規模のアプリケーションに適しています。
- 10ミリ秒未満のレイテンシーが許容されるクエリには、DiskANNを使用できます。この速度は、多くのエンタープライズ検索タスクに十分な速さです。
- ハイブリッド検索では、HNSWとディスクベースの転置ファイル(HNSW-IF)を組み合わせることができます。この方式は、高い再現率を達成しつつ、レイテンシーを低く抑えます。
| ユースケース | 説明 |
|---|---|
| 静的データセット | データの変化が少ない研究用コーパスに最適です。 |
| コスト重視の環境 | コストが課題となる10億規模のアプリケーションに適しています。 |
| レイテンシー許容のクエリ | 10ミリ秒未満のレイテンシーが許容されるクエリに適しています。 |
注: 多くの組織が、ハイブリッド方式を使い、10ミリ秒のレイテンシーで90%の再現率を達成しています。この性能は、ほとんどのエンタープライズAI検索アプリケーションの要件を満たします。
アルゴリズムの選択は、ワークロードに合わせて行いましょう。拡張性、コスト、低レイテンシーのすべてが必要な場合は、DiskANNが必要な柔軟性と効率性を提供します。
HNSWまたはDiskANNを選ぶ場面
Azure AI Search のワークロードで適切なアルゴリズムを選ぶことは、速度、コスト、精度に大きく影響します。データ、ハードウェア、データの更新頻度を確認する必要があります。ベクター検索の要件に合った最適なツールを選べるよう、主な判断基準を見ていきましょう。
判断基準
データセットのサイズ
まず、データセットのサイズを確認することから始めてください。数百万件のベクトルを扱うなら、HNSWは高速で正確な検索結果を返します。データがメモリに収まる場合に最も効果を発揮します。データセットが数十億件のベクトルに増えた場合は、DiskANNがより適した選択肢になります。DiskANNではインデックスの大部分をSSDに格納するため、RAMの不足を心配する必要がありません。
| 比較基準 | HNSW | DiskANN |
|---|---|---|
| データセットのサイズ | 数百万件のベクトルに適している | 数十億件のベクトルで優れた性能を発揮 |
HNSWは小規模なワークロードに適し、DiskANNは性能を落とさずに大規模なデータセットを処理できることがわかります。
ハードウェアとコスト
ハードウェアと予算も大きな要素になります。HNSWはグラフ全体をメモリ上に保持するため、多くのRAMが必要です。ベクトルデータベースが大きくなるにつれて、コストが高くつくことがあります。DiskANNはインデックスの大部分をRAMより安価なSSDに格納するため、コストを抑えられます。必要なメモリは、インデックスのナビゲーション部分に対応できる量だけで十分です。
| 比較基準 | HNSW | DiskANN |
|---|---|---|
| インフラストラクチャ | RAMの要件 | メモリコストを削減 |
コストを低く抑えつつ、数十億件のベクトルから検索したい場合は、DiskANNが明確な優位性を持ちます。
レイテンシーの要件
検索結果をどれくらい速く得る必要があるかを検討してください。HNSWはメモリ上で検索を行うため、レイテンシーが非常に低くなります。データがRAMに収まっていれば、数ミリ秒で結果を得られます。DiskANNは速度と拡張性のバランスを取ります。2段階の検索プロセスを使用するため、非常に大規模なデータセットでも高速な結果を得られます。多くのエンタープライズアプリケーションでは、DiskANNのクエリ時間は10ミリ秒未満に保たれます。
- HNSWは、1ミリ秒の差が重要になるワークロードに最適です。
- DiskANNは、大規模なデータセットを素早く検索する必要があり、レイテンシーがわずかに増えることを許容できる場合に適しています。
更新パターン
データがどのくらい頻繁に変更されるかも、選択に影響します。HNSWは静的なデータや、ゆっくり変化するデータに適しています。ベクトルを頻繁に更新する場合は、インデックスの再構築が必要になることがあり、時間がかかります。DiskANNは頻繁な更新により柔軟に対応します。ベクトルを追加または変更する頻度が高くても、精度と再現率を安定して維持します。
| 機能 | HNSW | DiskANN |
|---|---|---|
| 更新時のレイテンシー | インデックスの完全な再構築が必要 | 変更に効率的に対応 |
| 再現率 | 高いが、変更の影響を受ける | 頻繁な変更があっても精度が安定 |
アプリケーションで多くの更新を処理する必要がある場合は、DiskANNのほうが高い柔軟性を得られます。
利用シナリオ
実際のシナリオを参考にすると、どのアルゴリズムが要件に合うかを判断しやすくなります。
| 指標 | HNSW | DiskANN |
|---|---|---|
| 平均再現率 | 0.6 | 0.7 |
| エンドツーエンドの精度 | 0.972 | 0.933 |
| Robustness-0.2@10 | 0.998 | 0.984 |
| Robustness-0.9 | 0.84 | 0.81 |
- HNSWは高い再現率と高速なクエリスループットを実現します。SIFT1Mのようなデータセットでは、CPU上でクエリあたり1〜2ミリ秒で、上位10件の再現率が約95%に達します。
- DiskANNは平均再現率がより高く、大規模なデータセットでより多くの正しい一致を見つけられることを意味します。データが増えても精度を高く保ちます。
- HNSWは、最高水準の精度と速度が求められる推薦システムや検索エンジンに最適です。
- DiskANNは、製品画像やドキュメントを数十億件規模で検索するような大規模検索に適しています。速度、コスト、拡張性のバランスが求められる場合に有効です。
HNSWは、小規模なデータセットで可能な限り高速な検索を必要とするワークロードで際立っています。DiskANNは、予算を超えることなく膨大なデータを検索する必要がある場合に力を発揮します。
移行とハイブリッドなアプローチ
すべての状況で1つのアルゴリズムだけを選ぶ必要はありません。多くの組織は、小規模なデータセットではHNSWから始めます。ベクトルデータベースが大きくなると、より多くのデータを扱い、コストを抑えるためにDiskANNへ移行します。ハイブリッドなアプローチも可能です。たとえば、人気のあるベクトルや最近のベクトルはHNSWでメモリ上に保持し、古いベクトルや利用頻度の低いベクトルはDiskANNでSSDに格納するといった使い方があります。
- 高速なプロトタイピングや小規模なワークロードには、まずHNSWから始めてください。
- データセットがメモリの上限を超えたら、DiskANNへ移行してください。
- 速度と拡張性の最適なバランスを得るために、両方の手法を組み合わせてください。
ヒント: ワークロードを定期的に見直してください。データや要件が変わるにつれて、アプローチを調整することで、最適な性能と価値を得られます。
データセットのサイズ、ハードウェア、レイテンシーの要件、更新パターンを理解することで、HNSWとDiskANNの間で適切な選択ができます。これにより、目標に合い、ビジネスとともに成長するベクトル検索システムを構築できます。
Azureにおけるベクトル検索のベストプラクティス
インデックス構成のヒント
Azure AI Search で高いパフォーマンスを実現するには、いくつかの重要な設定のポイントに従うことが有効です。まず、インデックスのサイズが単一のベクター検索ユニットに収まるようにしてください。これにより、検索を高速かつ安定した状態に保てます。埋め込みのサイズはできるだけ小さくしてください。埋め込みが小さいほど、クエリの応答時間が短くなり、1秒あたりのクエリ数が増えます。効率化のために Approximate Nearest Neighbor (ANN) クエリを使用してください。精度をあまり損なわずに検索を高速化できます。
クエリごとの結果数は 10 から 100 の範囲に収めてください。この範囲であれば、待ち時間が短くなり、検索の応答性を維持できます。本番環境では、ゼロにスケールするモデルエンドポイントの使用を避けてください。コールドスタートによって検索が遅くなり、ユーザーの不満につながる可能性があります。検索トラフィックの急増に備えて計画し、システムが突然の増加に対応できるようにしてください。安全かつ効率的な認証には、OAuth トークンを使用するサービス プリンシパルを利用してください。パフォーマンス向上の恩恵を受けるため、常に最新バージョンの Python SDK を使用してください。より高いスループットが必要な場合は、エンドポイントをスケールさせるか、複数のエンドポイントに分散して並列処理してください。
ヒント:適切に構成されたインデックスは、Azure における最適化されたベクター検索の基盤です。
監視と最適化
高いパフォーマンスを維持するには、特に数十億ベクターのワークロードでは、検索システムを監視して最適化する必要があります。次の表は、効果的な手法の例です。
| 手法 | 説明 |
|---|---|
| マルチティア インデックス | 頻繁にアクセスされるデータには高速なインデックスを使用し、アクセス頻度の低いデータは圧縮して容量を節約します。 |
| ファンアウト制御 | シャードとクラスター間の相互作用を管理し、ネットワークホップを減らします。 |
| 量子化 | IVF-PQ などの手法でベクターサイズを縮小し、メモリの制限内に収めます。 |
| セントロイドのチューニング | セントロイドの数を調整し、再現率とオーバーヘッドのバランスを取ります。 |
| 非対称距離計算 | 完全精度のクエリと圧縮されたベクターを比較することで、検索を高速化します。 |
| 意図的なクエリのルーティング | メタデータとクラスタリングを使用して、検索中に不要なブロードキャストを避けます。 |
| ネットワークペイロードの最小化 | ノード間では、完全なベクターではなく ID とスコアのみを転送します。 |
| 階層的な集計 | 結果をローカルで集計して、調整処理を減らし、レイテンシーを安定させます。 |
| メモリ優先 | 最適な検索パフォーマンスのために、ベクターがメモリに収まるようにします。 |
| 状況に応じた GPU の利用 | 必要に応じてインデックス作成に GPU を使用しますが、検索スループットの向上に役立つかどうかを確認してください。 |
| ネットワークの品質 | ネットワークの状態を監視してください。ネットワークは検索のレイテンシーに影響します。 |
注:定期的な監視により、問題を早期に発見し、検索を円滑に稼働させ続けることができます。
よくある落とし穴
Azure で検索システムを構築またはスケールする際には、いくつかのよくある落とし穴に直面することがあります。よくある間違いの一つは、単一の検索ユニットに対してインデックスを大きくしすぎることです。これによりクエリが遅くなり、検索の信頼性が低下する可能性があります。大きな埋め込みを使用することも、パフォーマンスを損なう原因になります。ユースケースに対して、埋め込みは常に可能な限り小さく保ってください。
もう一つの落とし穴は、検索トラフィックの急増を無視することです。突然の増加に備えて計画していないと、高負荷時にシステムが停止する可能性があります。ゼロにスケールするエンドポイントに依存すると、コールドスタートの遅延が発生し、検索が遅くなります。SDK を更新しない、または OAuth トークンを使用しない場合は、セキュリティリスクや、得られたはずのパフォーマンス向上の機会損失につながる可能性があります。
覚えておいてください:これらの落とし穴を避けることで、検索を高速かつ安全で信頼性の高い状態に保てます。
これらのベストプラクティスに従うことで、Azure で堅牢かつ効率的な検索エクスペリエンスを構築できます。大規模なデータセットも容易に扱え、ユーザーに迅速で正確な結果を提供できるようになります。
Azure AI Search で数十億ベクターの課題を解決するには、ニーズに合ったアルゴリズムを選択することが重要です。DiskANN は、大規模なデータセットに対してコスト効率の高いスケーラビリティを提供し、HNSW は小規模なワークロードで高速な結果をもたらします。ワークロード、規模、予算に合わせてアルゴリズムを選択してください。次の表は、最適なエンドポイントを選ぶのに役立ちます:
| SKU の種類 | ユースケースの説明 |
|---|---|
| 標準エンドポイント | インデックスが 3億2,000万ベクター未満で、レイテンシーが特に重要な場合に最適です。 |
| ストレージ最適化エンドポイント | 1,000万ベクター以上の規模で、ある程度のレイテンシーを許容でき、コスト効率が求められる場合に適しています。 |
- 数件のドキュメントでテストして、ストレージの必要量を見積もってください。
- 更新と全体のコンテンツ量を見越して計画してください。
Azure AI Search は柔軟性を備えており、エンタープライズ AI に向けた Microsoft の技術革新をサポートします。これらの技術的な知見を実際のクラウド アーキテクチャに結び付けるために、関連するポッドキャストのエピソード 「HNSW vs DiskANN for Vector Search in Azure AI Search」もぜひお聴きください。
よくある質問
HNSW と DiskANN の主な違いは何ですか?
HNSWはメモリ内でのベクトル検索に使用します。DiskANNでは、インデックスの大部分をSSDに格納できます。そのためDiskANNは、メモリのコストを抑えながら数十億件のベクトルを扱う用途に適しています。
DiskANNはリアルタイムのアプリケーションにも使用できますか?
はい。DiskANNは低レイテンシーの検索を実現し、多くの場合10ミリ秒未満で応答します。非常に大規模なデータセットであっても、リアルタイムのAI検索タスクに使用できます。
Azure AI Searchでは、どのアルゴリズムを使うかをどのように決めればよいですか?
RAMに収まる小規模なデータセットにはHNSWを選びます。大規模なデータセットで、費用対効果の高いスケーリングが必要な場合はDiskANNを選びます。データサイズ、ハードウェア、レイテンシーの要件を考慮してください。
DiskANNには特別なハードウェアが必要ですか?
いいえ。SSDを搭載した標準的なサーバーでDiskANNを実行できます。高価な大容量メモリのマシンは必要ありません。そのため、スケーリングがより容易になり、コストも抑えられます。
Azure AI Searchは、どのようにデータを保護していますか?
Azure AI Searchは、暗号化とアクセス制御を使用します。データにアクセスできるユーザーを管理できます。Microsoftのセキュリティ機能により、機密情報を保護できます。
ダウンタイムなしでベクトルインデックスを更新できますか?
HNSWとDiskANNの両方のインデックスを更新できます。DiskANNは大規模なデータセットに対しても効率的な更新をサポートします。システムを停止させることなく、検索結果を最新の状態に保てます。
ベクトル検索のパフォーマンスを最適化するためのベストプラクティスにはどのようなものがありますか?
より小さい埋め込みを使用し、インデックスを1つの検索ユニット内に収め、クエリのレイテンシーを監視してください。また、SDKは常に最新の状態に保ち、クエリの急増にも備えて計画しておくことで、高いパフォーマンスを維持できます。
🎧 このエピソードを聴く
Azure AI SearchのベクトルスearchにおけるHNSWとDiskANNについて、実践的な解説をお探しですか?このエピソードでは、このトピックをわかりやすく解説し、Microsoft 365、Azure、Power Platform、セキュリティ、AI、そして現代の働き方においてなぜ重要なのかを紹介します。
次のような方は、このエピソードをぜひお聴きください:
- Azure AI SearchのベクトルサーチにおけるHNSWとDiskANNの背景にある主要な概念を理解する
- Microsoftの技術エコシステム全体の中で、それがどのように位置付けられるかを確認する
- 組織にとって実際にどのような価値を生み出せるかを知る
あわせて楽しんでいただける関連のM365 FMエピソード:
- ベクトル検索を超えてMicrosoft Copilotの精度を高める
- Azure AI Search – わかりやすい解説
- ベクトルデータベース – わかりやすい解説
- エンタープライズのセマンティック検索向けMicrosoft Graph API Discovery
- SharePointの検索で適切なファイルを先頭に表示する
M365 FMでは、Microsoftに関するさらに実践的な議論をご覧いただけます。
最終確認: 2026年7月。
対象読者
このエピソードは、導入、運用、ガバナンスに関する判断を行う前に実践的な基礎知識を必要とする、Microsoft管理者、アーキテクト、開発者、セキュリティ専門家、ビジネスリーダーを対象としています。
🎧 あわせて聴きたいエピソード
- Azure Resource Manager — このトピックをさらに広げるうえで、密接に関連する次のステップです。
- Infrastructure as Code — このトピックをさらに広げるうえで、密接に関連する次のステップです。
- Azure Policy — このトピックをさらに広げるうえで、密接に関連する次のステップです。