【Build 2024 速報】Azure AI Search に LLM 連携を強化するためのベクトル検索、マルチモーダル検索、Fabric OneLake 統合が追加

Microsoft にとって[最も急速に成長しているサービスの 1 つ](https://qiita.com/nohanaga/items/d0922a812a41af2c7f64#satya-%E3%81%AF-azure-search-%E3%81%AF-chatgpt-%E3%81%A7%E4%BD%BF%E7%94%A8%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%A8%E8%AA%9E%E3%82%8B)である Azure AI Search は 5月21日、Microsoft Build 2024 において LLM 連携を強化する新機能が追加されました。今回の新機能はベクトル検索機能の強化、マルチモーダル検索の強化、Fabric OneLake との統合の 3 つにフォーカスしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/11920c69-84bb-975c-8375-4b6807a22460.png)

>**Azure AI Search = Revolutionary retrieval**

# 🎉GA: 8/5 に複数機能の GA が発表されました
https://learn.microsoft.com/en-us/azure/search/whats-new#august-2024

## 1. ベクトル検索機能
- バイナリ ベクトル型の追加 (8/5 GA)
- ベクトル重み付けの追加 (8/5 GA)
- ハイブリッド検索の `MaxTextSizeRecall` の追加 (プレビュー)
- ベクトルクエリにしきい値を設定 (8/5 GA)
- すべてのプランでの容量の増加とベクトル割り当ての増加 (同じ価格)
- ハイブリッド検索のクエリ レイテンシーが最大 50% 削減
- AzureOpenAIEmbedding スキル (8/5 GA) の最新の Embeddings モデルのサポート

## 2. マルチモーダル検索
- Azure AI Vision マルチモーダル Embeddings スキル (プレビュー)
- Azure AI Vision ベクタライザー (プレビュー)
- Azure AI Studio モデル カタログ ベクタライザー (プレビュー)

## 3. Fabric OneLake との統合
[OneLake ファイル インデクサー](https://learn.microsoft.com/azure/search/search-how-to-index-onelake-files)の追加によって以下のことが可能となりました。
- OneLake からのファイルのインデックス作成とショートカットの使用 
- OneLake での Lakehouse ファイルのインデックス作成 
- Amazon S3 と Google Cloud Storage のデータへの OneLake ショートカット

# 1. ベクトル検索機能
ベクトル検索機能は Microsoft が最も力を入れている機能の一つです。4 月にも[ベクトル検索機能を最適化](https://qiita.com/nohanaga/items/d0922a812a41af2c7f64)しており、その続きのアップデートといえます。汎用ベクトルストレージとして新たな Embeddings モデルへの対応や、痒い所に手が届くベクトルクエリーの強化が行われました。ちょうど `Cohere-embed-v3-multilingual` モデルは[検証](https://qiita.com/nohanaga/items/a6cd2c2d589a95a3722a)していましたので、今後バイナリフィールドの検証などもしていきたいと思います。

## バイナリ ベクトル型の追加
Cohere の v3 バイナリ Embeddings モデルなど、バイナリ Embeddings を出力するモデルとの統合をサポートします。バイナリ フィールドは `Collection(Edm.Binary)`、パック形式の埋め込みが含まれます。たとえば、元の Embeddings の次元が 1024 の場合、`packedBit` でパックされたバイナリ ベクトルの長さは `ceiling(1024 / 8) = 128` となります。`vectorEncoding` フィールドにプロパティを設定すると、パックされたフォームが取得できます。バイナリ データ フィールドの場合、ベクトル比較はハミング距離 `hamming` メトリックを使用して実行されます。

```json
{ 
  "name": "my-binary-vector-field", 
  "type": "Collection(Edm.Byte)", 
  "vectorEncoding": "packedBit", 
  "dimensions": 1024, 
  "vectorSearchProfile": "myHnswProfile" 
} 
```

## ベクトル重み付けの追加
`weight` クエリ パラメーターを追加して、検索操作に含まれる各ベクトルの相対的な重みを指定します。この機能は、ハイブリッド検索やマルチベクトル検索など、2 つ以上の異なる結果セットを組み合わせる必要がある複雑なクエリで特に役立ちます。重みは、各ドキュメントの RRF 逆順位融合スコアを計算するときに使用されます。`weight` 計算は、それぞれの結果セット内のドキュメントのランク スコアに対する値に乗算されます。

```json
{ 
  "vectorQueries": [ 
    { 
      "kind": "vector", 
      "vector": [1.0, 2.0, 3.0], 
      "fields": "my_vector_field", 
      "k": 10, 
      "weight": 0.5 
    } 
  ], 
  "search": "hello world" 
} 
```

## ハイブリッド検索の `maxTextRecallSize` の追加
`hybridSearch` クエリ パラメーター オブジェクトを追加して、ハイブリッド (テキストとベクター) 検索でテキスト クエリを使用して呼び出されるドキュメントの最大数を指定します。デフォルトは 1,000 ドキュメントです。このパラメータを使用すると、ハイブリッド クエリで返される結果の数を増減できます。

```json
{ 
  "vectorQueries": [ 
    { 
      "kind": "vector", 
      "vector": [1.0, 2.0, 3.0], 
      "fields": "my_vector_field", 
      "k": 10 
    } 
  ], 
  "search": "hello world", 
  "hybridSearch": { 
    "maxTextRecallSize": 100, 
    "countAndFacetMode": "countAllResults" 
} 
```
## ベクトルクエリにしきい値を設定
これまで最近傍検索では常に `k` パラメータで要求された近傍が返されるため、スコアの低い一致が得られる可能性がありました。`threshold` クエリ パラメーターを追加して、スコアの低い検索結果を除外できるようになりました。

```json
{ 
  "vectorQueries": [ 
    { 
      "kind": "vector", 
      "vector": [1.0, 2.0, 3.0], 
      "fields": "my-cosine-field", 
      "threshold": { 
        "kind": "vectorSimilarity", 
        "value": 0.8 
      } 
    }
  ]
}
```

## すべてのプランでの容量の増加とベクトル割り当ての増加 (同じ価格)
[4 月の容量増加]()に加えて、2024 年 5 月 17 日以降に作成された Standard 2 (S2)、Standard 3 (S3)、および Standard 3 High Density (S3 HD)、ストレージ最適化層 (L1 および L2) サービスに対するベクトルインデックスサイズとパーティション サイズがさらに大きくなりました。

https://learn.microsoft.com/en-us/azure/search/search-limits-quotas-capacity#vector-limits-on-services-created-after-may-17-2024

## ハイブリッド検索のクエリ レイテンシーが最大 50% 削減
Azure AI Search はパフォーマンス向上も実現しています。最新の改善により、アプリを変更することなく、ハイブリッド検索クエリの待ち時間が**最大 50% 短縮**されています。

## AzureOpenAIEmbedding スキルの最新の Embeddings モデルのサポート
このスキルの更新により、Azure OpenAI Service で以下のモデルのサポートが追加されます。以前は次元制限は 1,536 次元に固定されていましたが `dimensions` パラメータによって設定可能になりました。

- text-embedding-3-small
- text-embedding-3-large

### データのインポートとベクター化機能からの選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/d1965587-733a-36fb-9ff9-497bc20b0894.png)

# 2. マルチモーダル検索
Azure AI Search の統合ベクトル化 (プレビュー)機能がマルチモーダル向けに強化されました。インデックス作成パイプラインから画像 Embeddings を作成するプロセスが大幅に合理化され、インデックスへの画像ベクトル表現の保存とクエリ時の画像検索が容易になります。

これまで私が Qiita を通じて検証してきたマルチモーダル RAG をより便利に構築するための機能が追加されました。これからマルチモーダル RAG システムを構築される方には朗報ですね。

https://qiita.com/nohanaga/items/4c3f3370bdad7743e74d

## 統合ベクトル化（Integrated Vectorization） アーキテクチャ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/ac18d707-e373-4fb4-801c-62f494007591.png)

## Azure AI Vision マルチモーダル Embeddings スキル
[Azure AI Vision マルチモーダル Embeddings スキル](https://learn.microsoft.com/azure/search/cognitive-search-skill-vision-vectorize
)は、Azure AI Vision の[マルチモーダル Embeddings API](https://learn.microsoft.com/azure/ai-services/computer-vision/how-to/image-retrieval) を使用して、画像またはテキスト入力の Embeddings を生成します。

## Azure AI Vision ベクタライザー
[Azure AI Vision ベクタライザー](https://learn.microsoft.com/azure/search/vector-search-vectorizer-ai-services-vision)は、Azure AI Vision リソースに接続し、マルチモーダル Embeddings を使用してクエリ時に Embeddings を生成します。

```json
"vectorizers": [
    {
        "name": "my-ai-services-vision-vectorizer",
        "kind": "aiServicesVision",
        "aiServicesVisionParameters": {
            "resourceUri": "https://westus.api.cognitive.microsoft.com/",
            "apiKey": "0000000000000000000000000000000000000",
            "authIdentity": null,
            "modelVersion": "2023-04-15"
        },
    }
]
```

## Azure AI Studio モデルカタログ ベクタライザー
これまで Cohere モデル、CLIP モデルなどは、 [AML スキル](https://learn.microsoft.com/azure/search/cognitive-search-aml-skill)を構成することでデータインジェスト時に Embedddings 化することができました。今回これを補完するための機能として、[Azure AI Studio モデルカタログ ベクタライザー](https://learn.microsoft.com/azure/search/vector-search-vectorizer-azure-machine-learning-ai-studio-catalog)は、Azure AI Studio モデル カタログを介して Azure Machine Learning エンドポイントにデプロイされた Embeddings モデルに接続します。現在以下のモデルがサポートされています。

- OpenAI-CLIP-Image-Text-Embeddings-vit-base-patch32
- OpenAI-CLIP-Image-Text-Embeddings-ViT-Large-Patch14-336
- Facebook-DinoV2-Image-Embeddings-ViT-Base
- Facebook-DinoV2-Image-Embeddings-ViT-Giant
- Cohere-embed-v3-english
- Cohere-embed-v3-multilingual

### データのインポートとベクター化機能からの選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/42e782a7-d0cb-5976-d07b-84a05e509017.png)


# 3. Fabric OneLake との統合
[OneLake ファイル インデクサー](https://learn.microsoft.com/azure/search/search-how-to-index-onelake-files)は、Microsoft Fabric テナントの OneLake に接続し、そのファイルのインデックスを作成するように設計されています。OneLake レイクハウスから直接ファイルにインデックスを付けることも、OneLake ショートカットを使用することもできます。

OneLake ファイルと OneLake ショートカット用の新しいインデクサー。アマゾン ウェブ サービス (AWS) および Google データ ソースへのデータ アクセスに Microsoft Fabric と OneLake を使用している場合は、このインデクサーを使用して外部データを検索インデックスにインポートします

次の OneLake ショートカットが OneLake ファイル インデクサーでサポートされています。
- ADLS Gen2 ショートカット
- OneLake ショートカット(別の OneLake インスタンスへのショートカット)
- Amazon S3 ショートカット
- Googleクラウドストレージのショートカット

このインデクサーは、特に PDF、Microsoft Office ドキュメント、画像、JSON、CSV ファイルなどの非構造化コンテンツおよび半構造化コンテンツを対象としています。一方、このインデクサーは、parquet ファイルのインデックス作成など、構造化されたテーブル コンテンツには適用されません。

### データのインポートとベクター化機能からの選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/674344/ff26d0ac-4235-6310-978c-28cfb1df9124.png)

# API Version, SDK Version
 - [API Version](https://learn.microsoft.com/rest/api/searchservice/search-service-api-versions#2024-05-01-preview) `2024-05-01-preview` を使用します
 - [Python SDK](https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/search/azure-search-documents/CHANGELOG.md) は `11.6.0b4` を使用します

# 今後
これらの新機能を細かく検証していきたいと思います。

# 参考

https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/azure-ai-search-s-new-hybrid-and-vector-search-updates-to-boost/ba-p/4141467

https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/azure-ai-search-now-supports-ai-vision-multimodal-and-ai-studio/ba-p/4136743

https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/azure-ai-search-integration-with-fabric-onelake-now-in-preview/ba-p/4136672