5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【速報】Azure AI Search のアップデートでインフラが大幅強化しベクトル検索機能を最適化

Last updated at Posted at 2024-04-04

Azure RAG アーキテクチャの中核サービスである Azure AI Search は 4月4日、インフラ面およびベクトル検索機能を大幅アップデートし、一部リージョンの Basic と Standard プランの新しいサービスで以下のような拡張を行いました。日本リージョンは東西で対応しております。

  • パーティションごとの合計ストレージがプランに応じて 3 倍〜6 倍に増加
  • パーティションあたりのベクトル インデックス サイズが 5 倍〜11 倍に増加
  • コンピューティングリソースの追加でより多くのベクトル検索が高パフォーマンスでサポートされ、インデックス作成とクエリのスループットが最大 2 倍向上

さらに、ベクトルストレージを最適化する新しいベクトル検索機能を追加しました。

  • より小さいプリミティブデータ型の追加(float16, int16, int8)
  • stored パラメータの追加によりクエリ応答に不要なベクトル領域を削減
  • 組み込みのスカラー量子化機能を追加

ストレージアップデート

パーティション当たりのストレージ量が追加コストなしで拡張されました。

Tier 倍率
Basic 2GB 15GB 7.5倍
S1 25GB 160GB 6.4倍
S2 100GB 350GB 3.5倍
S3 200GB 350GB 3.5倍

ベクトルインデックスサイズの拡張も行われました。

Tier 倍率
Basic 1GB 5GB 5倍
S1 3GB 35GB 11.5倍
S2 12GB 100GB 8.3倍
S3 36GB 200GB 5.6倍

※2024年4月3日以降に作成された Azure AI Search サービスが対象です

ベクトル検索最適化機能

新機能は API Version 2024-03-01-Preview が対応しています。

image.png

より小さいプリミティブデータ型の追加(float16, int16, int8)

Azure OpenAI Embeddings モデルへの影響として、text-embedding-ada-002text-embedding-3-smalltext-embedding-3-large モデルはそれぞれ float32 型で出力されますが、これをプログラムでキャストすることにより、float16 で保存できます。これによりサイズは半分になりますが、精度とのトレードオフとなります。

stored パラメータの追加

ベクトルインデックス作成時にベクトルフィールドに新たに追加された stored パラメータを false に設定すると、クエリ時にベクトルデータを返却するために用意されているストレージ領域が削減されます。ベクトルデータ実体は不要だが、ベクトル検索処理のみが実行できればよいというユースケースにおいては、この機能が有効です。

{
    "name": "contentVector",
    "type": "Collection(Edm.Single)",
    "searchable": true,
    "filterable": false,
    "retrievable": false,
    "sortable": false,
    "facetable": false,
    "dimensions": 1536,
    "stored": false,
    "vectorSearchProfile": "my-hnsw-profile-no-compression"
},

storedfalse のときは、retrievablefalse にする必要があります。検索はできますが、取得ができなくなります。つまり検索に使用するオリジナルのベクトルデータは stored とは別にしっかり保存されています。

組み込みのスカラー量子化機能

組み込みのスカラー量子化は float32float16 データを含むベクトルフィールドに適用できる自動 int8 量子化機能です。これによりベクトルデータストレージを圧縮および最適化します。さらに、ベクトルの量子化による精度の低下を緩和するために、量子化ランキングを非圧縮の元ベクトルデータを使ってリランキングするという新しい機構が追加されました。この機能は rerankWithOriginalVectors パラメータと defaultOversampling パラメータで制御できます。

インデックス定義の vectorSearchcompressions 設定を追加します。

"vectorSearch": {
  "compressions": [
    {
      "name": "my-scalar-quantization",
      "kind": "scalarQuantization",
      "rerankWithOriginalVectors": true,
      "defaultOversampling": 10.0,
      "scalarQuantizationParameters": {
        "quantizedDataType": "int8"
      }
    }
  ]
}
  • kind: scalarQuantization 現在はスカラー量子化のみ
  • rerankWithOriginalVectors: 元の非圧縮ベクトルを使用して類似度を再計算し、最初の検索クエリによって返された上位の結果をリランキングします。非圧縮ベクトルは stored:false の場合でも検索インデックスに存在します。
  • defaultOversampling: リランキングのために元の非圧縮ベクトルをどれだけ取ってくるかを計算(k に乗ずる)するパラメータです。例えばk=5defaultOversampling:4 の場合 k * defaultOversampling = 20 で 20 件のドキュメントを内部で取得します。
  • quantizedDataType: 現在は int8 のみに対応

量子化の仕組み

float32/float16 のデータ範囲を int8 の範囲(-128から127)にマッピングします。具体的には、float32/float16 の最大値と最小値を用いてスケーリングファクターを計算し、このファクターを用いてデータを変換します。

検索クエリー

スカラー量子化を有効化したベクトルフィールドに対しては以下のように int8 でクエリーできます。ベクトルは適切な方法で量子化する必要があります。

{
  "vectorQueries": [
    {
      "kind": "vector",
        "vector": [8, 2, 3, 4, 3, 5, 2, 1...],
        "fields": "myvector",
        "oversampling": 12.0,
        "k": 5,
    }
  ]
}

ひとまずいつもの busho-index でテストしましたが、精度は float32 とほぼ変わりませんでした。。。text-embedding-3-smallfloat32 vs int8 with or without rerankWithOriginalVectors。今後 MIRACL データセットでも精度およびパフォーマンス試験を実施予定です。

Satya は Azure Search が ChatGPT で使用されていると語る

Microsoft CEO の Satya Nadella 氏は、2024 年第 3 四半期の決算会見で実際に ChatGPTでも使用されている Azure Search は Microsoft にとって「最も急速に成長しているサービスの 1 つ」であると語りました。

The second thing that we are also seeing is AI just doesn’t sit on its own. AI projects obviously start with calls to AI models, but they also use a vector database. In fact, Azure Search, which is really used by even ChatGPT, is one of the fastest growing services for us.

もうひとつは、AI はそれだけでは成り立たないということだ。AI プロジェクトはまず AI モデルの呼び出しから始まりますが、ベクトルデータベースも使用します。実際、ChatGPT でも使用している Azure Search は、私たちにとって最も急速に成長しているサービスの 1 つです。

参考

https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/announcing-cost-effective-rag-at-scale-with-azure-ai-search/ba-p/4104961
https://learn.microsoft.com/en-us/azure/search/vector-search-how-to-configure-compression-storage

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?