M365Con 2027 – 無料オンラインカンファレンス · 11–22 Jan 2027 · 120 sessions→ m365con.net

ブログ · Mirko Peters

Azure AI Searchにおける「10億ベクトル問題」の解決

By ·

大規模データセットを検索する際の固有の技術的課題を解説します。本記事では、高次元性とメモリの制約がエンタープライズAIワークロードにどのように影響するかを整理します。

Automatically translated with AI from the original post. Read the English original

大規模データセットを検索する際の固有の技術的課題を解説します。本記事では、高次元性とメモリの制約がエンタープライズAIワークロードにどのように影響するかを整理します。

Azure AI Searchにおける「10億ベクトル問題」

10億規模のベクトル検索における課題

エンタープライズAIで膨大なデータセットをインデックス化し、検索する必要が生じると、「10億ベクトル問題」に直面します。数十億のベクトルを扱うことには、固有の技術的課題があります。処理速度を落とさずに大規模データを処理できる効率的なインデックス作成の仕組みを構築する必要があります。検索結果を最新かつ関連性の高い状態に保つには、リアルタイムの更新が重要です。また、正確な検索結果を得るには、高次元の埋め込みを管理することも欠かせません。

10億規模のデータセットを扱う場合、次のような制約に直面します。

  • 高次元性は計算コストを増大させ、検索性能を低下させる可能性があります。
  • ベクトル表現と実世界の意味との間にある意味的なギャップが、不正確さを招く可能性があります。
  • ガベージコレクションが難しくなり、古い情報をインデックスから削除しにくくなります。
  • ベクトルの品質は選択する埋め込みモデルに依存し、それが検索精度に影響します。
  • スケーラビリティはメモリ要件を押し上げ、検索時間を増加させる可能性があります。
  • コールドスタート問題により、良好なベクトル表現がない新規アイテムを検索しにくくなります。
  • 解釈性が低いため、検索結果が表示された理由を理解することが難しい場合があります。

これらの課題により、「10億ベクトル問題」は現代のAIにおける最も難しい問題の一つとなっています。

アルゴリズムの選択が重要な理由

アルゴリズムの選択は、10億ベクトル問題の解決方法に直接影響します。HNSWのようなアルゴリズムを選べば、大規模データセットに対する高速なアクセスと効率的な検索が得られます。ただし、多くのRAMが必要となり、コストが増加する可能性があります。一方、網羅的KNNなどの他のアルゴリズムは高い精度を提供しますが、はるかに多くの計算を必要とするため、小規模データセットに適しています。適切なアルゴリズムを選ぶことで、速度、精度、リソース使用量のバランスを取れます。用途の要件にアルゴリズムを合わせることで、特定のアプリケーションのパフォーマンスを最適化できます。この判断が、大規模データセットをどれだけうまく扱えるか、そしてハードウェアにどれだけ投資するかを左右します。

Azure AI Searchの概要

Azure AI Searchは、10億ベクトル問題に取り組むための強力なプラットフォームを提供します。高度なクレンジングおよびエンリッチメントツールを使ってデータを前処理することで、インデックス作成前にベクトルの品質を高められます。このプラットフォームは、情報を検索用途と最新の検索ニーズに合わせて設計されたベクトルデータベースに整理します。自然言語処理による意味理解を含む、堅牢な検索および取得機能を利用できます。暗号化とアクセス制御によりデータを保護し、セキュリティも強固です。

Azure AI Searchは、他のMicrosoft Azureサービスやサードパーティのプラットフォームともスムーズに統合されます。キーワード検索とベクトル検索を組み合わせた、ハイブリッド検索を利用できます。ランキングと関連性の調整により、検索結果の表示方法を調整でき、ユーザーにとってより有用なものにできます。オートコンプリートや候補の提示などのスマートな検索体験も提供されます。Azureのグローバルインフラストラクチャ上に構築されているため、Azure AI Searchは大規模データセットや大規模データプロジェクトに必要なスケールと信頼性を提供します。

グラフベースのインデックス:HNSWとDiskANN

Graph-Based Index: HNSW and DiskANN

HNSWとは

hnswという名前を耳にしたことがあるかもしれません。これは hierarchical navigable small world の略です。このグラフベースのインデックスアルゴリズムは、大規模なデータセットの中から類似したベクトルを素早く見つけるのに役立ちます。hnswは、データポイントを結びつけるマルチレイヤーのグラフ構造を構築します。この構造により、検索を高速かつ正確に行えます。グラフの各レイヤーは密度が異なり、上位レイヤーはノードが少なく、下位レイヤーはノードが多くなっています。この設計により、検索は上位から始めて下位へ移動し、移動するにつれて結果を絞り込めます。hnswはインメモリのベクトル検索に最適化されているため、グラフ全体をRAMに保持します。この方式では低レイテンシーの結果が得られますが、データセットが増えると大量のメモリが必要になります。

DiskANNとは

Diskannは、数十億規模のベクトル検索という課題に対するMicrosoftの答えです。このグラフベースのインデックスは、メモリとSSDストレージを組み合わせたハイブリッド方式を採用しています。DiskANNでは、インデックスの大部分をSSDに保存できます。SSDはRAMよりはるかに安価です。メモリに保持するのは、最も重要なナビゲーションデータだけです。この設計により、高いハードウェアコストをかけずに大規模なデータセットを管理できます。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 graph:このデータ構造を使うと、インデックス内を効率よく移動できます。
  • Product quantization (PQ):ベクトルをメモリ内で圧縮するため、RAMの使用量を削減できます。

2段階のクエリ実行プロセスの恩恵を受けられます。最初のフェーズでは、DiskANNはRAM内のPQ圧縮ベクトルを使って、候補セットをすばやく特定します。この手順では、ディスクから読み取る必要はありません。2番目のフェーズでは、DiskANNは候補セットについてSSDから完全精度のベクトルを取得します。その後、正確な距離を計算して、最も一致するものを見つけます。このプロセスにより、メモリ要件を低く抑えたまま、高いリコールと低いレイテンシーを実現できます。

ヒント: DiskANNのハイブリッドなメモリとSSDのアーキテクチャにより、一般的なハードウェアでもWebスケールの検索が可能になります。ベクトルインデックスをRAMではなくSSDに保存できるため、大規模なアプリケーションをより低コストで運用できます。

検索プロセス

DiskANNでの検索は、メモリ内の圧縮ベクトルを使ってVamana graphをたどることから始まります。この手順により、有望な候補をすばやく見つけられます。この段階ではディスク読み取りを回避できるため、処理が高速になります。候補セットが得られると、DiskANNは次のフェーズに進みます。

各候補について、SSDから完全精度のベクトルを取得します。クエリと各候補との正確な距離を計算します。この2段階のプロセスにより、検索を遅くすることなく正確な結果を得られます。DiskANNは最良の候補を詳細にチェックするため、高いリコールを実現できます。また、ほとんどの処理がメモリ内で行われるため、レイテンシーも低く抑えられます。

DiskANNの検索プロセスは、大規模なデータセットに適しています。RAMを大量に必要とせずに、数十億のベクトルを扱えます。データが増えても、高速で信頼性の高い結果を得られます。このため、DiskANNはAzure AI Searchにおけるエンタープライズ向けAIワークロードの有力な選択肢となります。

手順実行内容メリット
フェーズ 1:ナビゲーションRAM内のPQ圧縮ベクトルを使って候補を見つける高速な検索、ディスク読み取りなし
フェーズ 2:精査SSDから完全精度のベクトルを取得し、距離を計算する高いリコール、低いレイテンシー

DiskANNのハイブリッドなアーキテクチャと検索プロセスにより、数十億ベクトルの課題を効率よく解決できることがわかります。検索を拡張しながらコストを抑え、データが増えてもパフォーマンスを維持できます。

長所と短所

HNSWの長所と短所

ベクトル検索にhnswを選ぶことが多いのは、最先端の検索速度と高いリコールを実現するからです。hnswを適切にチューニングすれば、高速な結果と正確な一致が得られます。高次元のベクトルデータをうまく扱えるため、最新のAIワークロードにとって重要です。また、増分追加にも対応しているため、すべてを再構築しなくてもインデックスを更新できます。

長所短所
適切にチューニングすれば、最先端の検索速度と高いリコールを実現。各ベクトルのグラフリンクを保存するため、メモリ消費量が多い。
高次元データをうまく扱える。高品質な構築パラメータを使うと、インデックスの構築に長い時間がかかる。
増分追加を効率よくサポートする。要素の削除が複雑で、時間の経過とともにパフォーマンスが低下する可能性がある。

hnswはインデックス構築にO(N log N)を使用するため、効率よく拡張できます。並列構築によりマルチコアプロセッサを活用できるため、処理が高速になります。メモリ使用量はデータセットのサイズに比例して増加するため、ストレージの必要量を予測できます。ただし、グラフ全体をRAMに保持する必要があるため、数十億ベクトル規模のデータセットではスケーラビリティに制約があります。

DiskANNの長所と短所

従来のRAMでは扱いきれないほどベクトル検索を拡張する必要があるときに、DiskANNを選びます。DiskANNはSSDの利用に最適化されているため、ハードウェアコストを抑え、大規模なデータセットを管理できます。メモリ内検索とバッチ化されたSSD読み取りを組み合わせることで、高い精度と低いレイテンシーを実現します。DiskANNはリアルタイム更新とハイブリッド検索にも対応しているため、ベクトルをフィルターしながら効率よく取得できます。

diskannについて、次の点を考慮してください:

  • RAMの代わりにSSDを使うことで、コストを抑えて拡張できる。
  • メモリ内検索とSSD読み取りにより、大規模でも高い精度と低いレイテンシーを実現。
  • リアルタイム更新と、ベクトル検索とフィルター付き取得のハイブリッド化。
  • Vamanaグラフの構築は計算負荷が高いため、構築に時間がかかります。
  • パフォーマンスは、SSDのスループットとレイテンシに左右されます。
  • 更新コストは、hnswのようなインメモリ構造と比べて高くなります。
  • 実装とチューニングには、慎重な最適化が必要です。

diskannは量子化ベクトルを扱えるため、データを圧縮し、メモリ効率の高い検索を実現できます。diskannを使えば、RAMの上限を気にせずに数十億ベクトル規模のワークロードを扱えます。

メモリとストレージの効率

ベクトル検索にhnswとdiskannのどちらを選ぶかを考える際は、メモリとストレージの効率を検討する必要があります。hnswは、データセットがサーバーのRAMに収まる場合にうまく機能します。高速にアクセスでき、高いパフォーマンスを得られますが、メモリの上限を超えてスケールすることはできません。diskannでは、データセットのサイズをディスク容量まで拡張でき、その代わりに速度を一部犠牲にします。インデックスの大部分をSSDに保存するため、diskannは大規模なベクトルデータセットに最適です。

機能HNSWDiskANN
メモリ効率サーバーのキャッシュ(RAM)に収まるデータセットに対して高い効率を発揮します。RAMに収まらないほど大きなデータセット向けに設計されています。
ストレージ効率利用可能なRAMの容量に制限されます。データセットのサイズをディスク容量まで拡張でき、その代わりに速度を一部犠牲にします。
パフォーマンスの最適化高速なメモリアクセスを活用して速度を高めます。低速なディスクストレージによるパフォーマンスの低下を最小限に抑えます。
データセットへの適合性RAMに収まるデータセットに適しています。RAMの容量を超える大規模なデータセットに適しています。

hnswとdiskannのどちらでも、量子化ベクトルを使うことでストレージの必要量を減らし、検索速度を向上できます。diskannのハイブリッドアーキテクチャを使うと、コストを低く抑えたまま、ベクトル検索をスケールさせられます。特に量子化ベクトルとSSDストレージを組み合わせると、大規模な検索タスクでメモリ効率の高い検索を実現できます。

ベクトル検索アルゴリズムの比較

Vector Search Algorithm Comparison

規模拡大時のパフォーマンス

データセットの増加に伴って、ベクトル検索アルゴリズムのパフォーマンスがどう変化するかを測定する必要があります。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から全精度のベクターを取得して、クエリの結果を精緻化します。この方法により、数十億規模のデータセットでもレイテンシーを低く抑え、高いスループットを維持できます。SSDの読み取りをバッチ処理し、効率的なナビゲーション構造を使うことで、検索をさらに最適化できます。

DiskANNでは、クエリ量が増えても高い再現率と速度を実現できます。メモリの上限を気にする必要がないため、エンタープライズアプリケーション向けに検索性能を拡張できます。

DiskANNを使えば、クエリのレイテンシーとスループットを安定して確保できます。大規模な最近傍検索には、強力な選択肢となります。

コストとリソースへの影響

Azure AI Searchでベクター検索アルゴリズムを選ぶ際は、コストとリソースへの影響を考慮する必要があります。各アルゴリズムのメモリとストレージの使い方は、予算とスケーラビリティに影響します。

数十億ベクターのワークロードでは、DiskANNが際立っています。インデックスの大部分をRAMより安価なSSDに格納できます。この設計により、メモリコストを大きく増やすことなく、数千から数十億のベクターまで拡張できます。DiskANNはSSDを効率的に利用し、本当に重要なデータだけをメモリに保持するため、本番環境のAIワークロードに適しています。

HNSWは中規模のデータセットに最適です。インデックス全体をRAMに保持する必要があります。この要件により、拡張できる範囲が制限されます。データセットが大きくなりすぎると、運用コストが高くなる可能性があります。また、HNSWは2,000次元までという制限があり、ユースケースが限られる場合があります。

インデックスの種類数十億ベクターのワークロードへの適合性メモリ要件運用コスト
DiskANNはい、SSDのパフォーマンスを前提に設計されています数千から数十億のベクターまで拡張可能本番環境のAIワークロードに推奨
HNSWいいえ、中規模のデータセットに適していますインデックスをRAMに収める必要があります2,000次元までに制限されます

ヒント: コストを管理しつつ、検索を数十億ベクターまで拡張したい場合、DiskANNは明確な利点があります。手頃なSSDを利用でき、メモリの必要量も抑えられます。

実際のユースケース

これらのアルゴリズムの価値は、実際のアプリケーションで確認できます。多くの組織が、さまざまな種類のベクター検索の課題に対して、DiskANNとHNSWを使い分けています。

  • 近似最近傍検索には、コスト効率の高いハイブリッド手法を使用できます。このアプローチは、SSDストレージとインメモリのグラフ構造を組み合わせたものです。
  • データがあまり変化しない研究用コーパスのような静的データセットには、DiskANNをデプロイできます。
  • コストを重視するデプロイにはDiskANNを選べます。コストを抑える必要がある数十億規模のアプリケーションに適しています。
  • レイテンシーが10ミリ秒未満で許容されるクエリには、DiskANNを使用できます。この速度は、多くのエンタープライズ検索タスクに十分な速さです。
  • ハイブリッド検索では、HNSWとディスクベースの転置ファイル(HNSW-IF)を組み合わせることができます。この方法では、高い再現率を達成しつつ、レイテンシーを低く抑えられます。
ユースケース説明
静的データセットデータの変化が少ない研究用コーパスに最適です。
コストを重視するデプロイコストが課題となる数十億規模のアプリケーションに適しています。
レイテンシー許容型のクエリレイテンシーが10ミリ秒未満で許容されるクエリに適しています。

注: 多くの組織が、ハイブリッド手法を用いて、レイテンシー10ミリ秒で90%の再現率を達成しています。この性能は、ほとんどのエンタープライズAI検索アプリケーションの要件を満たします。

アルゴリズムの選択は、ワークロードに合わせて行ってください。拡張性、コスト管理、低レイテンシーの3つが必要な場合、DiskANNは必要な柔軟性と効率性を提供します。

HNSWとDiskANNの使い分け

Azure AI Search のワークロードに適したアルゴリズムを選ぶかどうかで、速度、コスト、精度は大きく変わります。データ、ハードウェア、データの更新頻度を確認する必要があります。ここでは主な判断基準を整理し、ベクトル検索の目的に最適なツールを選べるようにします。

判断基準

データセットのサイズ

まずはデータセットのサイズを確認しましょう。数百万件のベクトルを扱う場合、HNSWは高速で高精度な検索結果を提供します。データがメモリに収まるときに最も効果を発揮します。データセットが数十億件のベクトルに増えた場合は、DiskANNがより適した選択です。インデックスの大部分をSSDに格納するため、RAM不足を心配する必要がありません。

基準HNSWDiskANN
データセットのサイズ数百万件のベクトルに適している数十億件のベクトルで優れている

HNSWは小規模なワークロードに適しており、DiskANNは処理速度を落とすことなく大規模なデータセットを扱えることがわかります。

ハードウェアとコスト

ハードウェアと予算も大きな要素です。HNSWはグラフ全体をメモリに保持するため、多くのRAMを必要とします。ベクトルデータベースが大きくなるにつれて、コストが膨らむ可能性があります。DiskANNはインデックスの大部分をRAMより安価なSSDに格納するため、コストを抑えられます。必要なのは、インデックスのナビゲーション部分に必要な分のメモリだけです。

基準HNSWDiskANN
インフラストラクチャRAM要件メモリコストを削減

コストを低く抑えつつ数十億件のベクトルを検索したい場合、DiskANNには明確な優位性があります。

レイテンシの要件

検索結果をどれだけ速く得る必要があるかを考えましょう。HNSWはメモリ内で検索を行うため、非常に低いレイテンシを実現します。データがRAMに収まる場合、わずか数ミリ秒で結果を得られます。DiskANNは速度と規模のバランスを取ります。2段階の検索プロセスを使うため、非常に大規模なデータセットでも高速な結果が得られます。多くのエンタープライズアプリケーションでは、DiskANNはクエリ時間を10ミリ秒未満に保ちます。

  • HNSWは、わずか1ミリ秒の差が重要になるワークロードに最適です。
  • DiskANNは、大規模なデータセットを素早く検索する必要があり、レイテンシのわずかな増加を許容できる場合に適しています。

更新パターン

データの変更頻度も選択に影響します。HNSWは静的なデータや変化の緩やかなデータに適しています。ベクトルを頻繁に更新する場合、インデックスの再構築が必要になることがあり、時間がかかります。DiskANNは頻繁な更新により適応します。ベクトルを頻繁に追加・変更しても、精度と再現率を安定して維持します。

機能HNSWDiskANN
更新時のレイテンシインデックスの完全な再構築が必要変更に効率的に適応
再現率高いが、変更の影響を受ける頻繁な変更があっても精度が安定

アプリケーションで大量の更新を処理する必要がある場合、DiskANNはより高い柔軟性を提供します。

利用シナリオ

実際のシナリオを参考にすると、自分のニーズに合うアルゴリズムを判断しやすくなります。

指標HNSWDiskANN
平均再現率0.60.7
エンドツーエンドの精度0.9720.933
Robustness-0.2@100.9980.984
Robustness-0.90.840.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 秒あたりのクエリ数が増加します。効率化のために近似最近傍(ANN)クエリを使用してください。精度をあまり犠牲にすることなく、検索を高速化できます。

クエリごとの結果数は 10 から 100 の範囲に抑えてください。この範囲により、レイテンシが低減し、検索の応答性を保てます。本番環境では、ゼロにスケールするモデルエンドポイントの使用は避けてください。コールドスタートによって検索が遅くなり、ユーザーの不満につながるおそれがあります。検索トラフィックの急増に対応できるよう、クエリのピークを見込んで計画してください。安全で効率的な認証には、OAuth トークンを使用するサービス プリンシパルを使用してください。パフォーマンスの改善を活用するため、常に最新バージョンの Python SDK を使用してください。より高いスループットが必要な場合は、エンドポイントをスケールアップするか、複数のエンドポイントに分散して並列処理してください。

ヒント:適切に構成されたインデックスは、Azure における最適化されたベクター検索の基盤です。

監視と最適化

特に数十億ベクターのワークロードでは、高いパフォーマンスを維持するために検索システムを監視し、最適化する必要があります。以下の表に、効果的な手法の例を示します。

手法説明
マルチティア インデックスホットデータには高速なインデックスを使用し、コールドデータは圧縮して容量を節約します。
ファンアウト制御シャードとクラスター間の相互作用を管理し、ネットワーク ホップを削減します。
量子化IVF-PQ などの手法でベクターサイズを縮小し、メモリの制限内に収めます。
セントロイドの調整セントロイドの数を調整し、再現率とオーバーヘッドのバランスを取ります。
非対称距離計算完全精度のクエリと圧縮されたベクターを比較することで、検索を高速化します。
意図的なクエリ ルーティングメタデータとクラスタリングを使用して、検索中の不要なブロードキャストを回避します。
ネットワーク ペイロードの最小化ノード間では、完全なベクターではなく ID とスコアのみを転送します。
階層的な集計結果をローカルで集計し、調整の負荷を減らしてレイテンシを安定させます。
メモリ優先最良の検索パフォーマンスを得るため、ベクターがメモリに収まるようにします。
状況に応じた GPU の利用必要に応じてインデックス作成に GPU を使用しますが、検索スループットの向上に効果があるかどうかを確認してください。
ネットワーク品質ネットワークの状態は検索レイテンシに影響するため、監視してください。

注:定期的な監視により問題を早期に発見し、検索を円滑に稼働させ続けられます。

よくある落とし穴

Azure で検索システムを設定したり拡張したりする際には、よくある落とし穴に直面することがあります。よくある誤りの一つは、インデックスが単一の検索ユニットには大きくなりすぎるのを放置することです。これによりクエリが遅くなり、検索の信頼性も低下するおそれがあります。大きな埋め込みを使うことも、パフォーマンスを損なう原因になります。ユースケースに対して、埋め込みは常に可能な限り小さく保ってください。

もう一つの落とし穴は、検索トラフィックの急増を無視することです。急な増加に備えていないと、システムは負荷がかかった状態で障害を起こすおそれがあります。ゼロにスケールするエンドポイントに依存すると、コールドスタートによる遅延が発生し、検索が遅くなります。SDK を更新しない場合や OAuth トークンを使用しない場合は、セキュリティリスクを招き、パフォーマンス向上の機会を逃すことにつながります。

注意:これらの落とし穴を避けることで、検索を高速かつ安全で信頼性の高い状態に保てます。

これらのベストプラクティスに従うことで、Azure において堅牢で効率的な検索体験を構築できます。大規模なデータセットも容易に扱え、利用者に迅速で正確な結果を届けられるようになります。


Azure AI Searchでは、用途に合ったアルゴリズムを選ぶことで、10億件規模のベクトルの問題に対応できます。DiskANNは、大規模なデータセットに対してコスト効率の高いスケーラビリティを提供します。一方、HNSWは小規模なワークロードで高速な結果を返します。アルゴリズムは、ワークロード、規模、予算に合わせて選んでください。次の表を参考に、最適なエンドポイントを選んでください:

SKUの種類ユースケース・説明
Standardエンドポイント遅延の許容度が低く、インデックスのベクトル数が3億2,000万未満の場合に最適です。
ストレージ最適化エンドポイント1,000万件以上のベクトルを扱い、ある程度の遅延を許容でき、コスト効率を重視する場合に最適です。
  • 少数のドキュメントでテストし、ストレージの必要量を見積もってください。
  • 更新作業とコンテンツの総量を考慮して計画してください。

Azure AI Searchは柔軟性があり、エンタープライズAIに向けたMicrosoftの技術革新をサポートします。

よくある質問

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は常に最新の状態に更新し、クエリの急増に備えて計画を立てることで、高いパフォーマンスを維持できます。


🎧 このエピソードを聴く

HNSW vs DiskANN for Vector Search in Azure AI Searchについて、実践的な解説をお探しですか?このエピソードでは、このテーマをわかりやすく解説し、Microsoft 365、Azure、Power Platform、セキュリティ、AI、そして現代の働き方にとってなぜ重要なのかを紹介します。

次のような方におすすめのエピソードです:

  • Azure AI SearchにおけるHNSW vs DiskANN for Vector Searchの基本的な考え方を理解したい方
  • Microsoftの技術エコシステム全体の中で、このテーマがどのような位置づけにあるのかを知りたい方
  • 組織にとって実際にどのような価値をもたらすのかを学びたい方

あわせて聴きたい関連するM365 FMのエピソード:

M365 FMでは、実践的なMicrosoftの話題をさらに多く配信しています。

最終確認日: 2026年7月。

対象読者

このエピソードは、導入、運用、ガバナンスに関する判断を行う前に、実践的な基礎知識を必要としているMicrosoft管理者、アーキテクト、開発者、セキュリティ専門家、ビジネスリーダーに向けたものです。

🎧 あわせて聴きたいエピソード

  • Azure Resource Manager — このトピックをさらに深めるうえで、次に読むべき関連性の高い内容です。
  • Infrastructure as Code — このトピックをさらに深めるうえで、次に読むべき関連性の高い内容です。
  • Azure Policy — このトピックをさらに深めるうえで、次に読むべき関連性の高い内容です。

Entities in this article

DiskANN Azure AI Search Vector search Hybrid search Microsoft Azure Cold start Embeddings Semantic model

Related articles

RSS