重要
この機能はパブリック プレビュー段階にあり、追加使用条件の下で提供されます。 この機能には、最新の プレビュー REST API バージョン をお勧めします。
text-embedding-3 モデルで使うディメンションを減らす機能を使ってみます。 Azure OpenAI では、テキスト埋め込み 3 モデルは、さまざまなレベルの圧縮で複数のベクター表現を生成する Matryoshka Representation Learning (MRL) 手法で再トレーニングされます。 この方法では、セマンティック情報の損失を最小限に抑えながら、検索の高速化とストレージ コストの削減が実現されます。
Azure AI 検索の MRL は、スカラー量子化とバイナリ量子化の補完をサポートします。 いずれかの量子化方法を使用する場合は、ベクター フィールドに truncationDimension
プロパティを指定して、テキスト埋め込みの次元を減らすことができます。
MRL マルチレベル圧縮では、ベクトル ストレージが節約され、テキスト埋め込みに基づいてベクトル クエリのクエリ応答時間が向上します。 Azure AI 検索では、MRL のサポートは、量子化の別の方法と共にのみ提供されます。 MRL でバイナリ量子化を使用すると、最大限のベクトル インデックス サイズの削減が提供されます。 最大のストレージ削減を実現するには、MRL でバイナリ量子化を使用し、 stored
を false に設定します。
前提条件
テキスト埋め込み3のモデルには、たとえば text-embedding-3-small や text-embedding-3-large があります。
Edm.Half
型またはEdm.Single
型の新しいベクター フィールド。 既存のフィールドに MRL 圧縮を追加することはできません。階層型ナビゲート可能スモールワールド (HNSW) アルゴリズム。 このプレビューでは、完全な KNN はサポートされていません。
スカラーまたはバイナリ量子化。 切り詰められたディメンションは、スカラーまたはバイナリ量子化が構成されている場合にのみ設定できます。 MRL 圧縮の場合はバイナリ量子化をお勧めします。
サポートされるクライアント
REST API または Azure SDK ベータ パッケージを使って、MRL 圧縮を実装できます。 現時点では、Azure portal や Azure AI Foundry のサポートはありません。
REST API 2024-09-01-preview 以降。 最新のプレビュー API をお勧めします。
各 Azure SDK ベータ パッケージ (Python、.NET、Java、JavaScript) の変更ログをご確認ください。
MRL 拡張テキスト埋め込みを使用
MRL は、既に使用しているテキスト埋め込みモデルに組み込まれています。 Azure AI Search で MRL 機能を使用するには:
インデックス スキーマを指定するには 、インデックスの作成または更新 (プレビュー) または同等の API を使用します。
インデックス定義にベクトル フィールドを追加します。
インデックス定義で
vectorSearch.compressions
オブジェクトを指定します。スカラーまたはバイナリ (推奨) のいずれかの量子化方法を含めます。
truncationDimension
パラメーターを含め、512 に設定します。 text-embedding-3-large モデルを使用している場合は、256 という低い値に設定できます。HNSW アルゴリズムとベクター圧縮オブジェクトを指定するベクター プロファイルを含めます。
フィールド コレクション内の
Edm.Half
またはEdm.Single
型のベクトル フィールドに、ベクトル プロファイルを割り当てます。
MRL 対応のテキスト埋め込みモデルを使用するためのクエリ側の変更はありません。 MRL のサポートは、統合されたベクター化、クエリ時のテキストからクエリへの変換、セマンティック ランク付け、および元のベクターとの再ランク付けやオーバーサンプリングなどの関連性強化機能には影響しません。
追加の手順によりインデックス作成が遅くなりますが、クエリは高速です。
例: MRL をサポートするベクター検索構成
次の例は、MRL の要件と推奨事項を満たすベクトル検索構成を示しています。
truncationDimension
は圧縮プロパティです。 スカラーやバイナリ圧縮などの圧縮方法と併せて、メモリ内のベクトル グラフの圧縮量を指定します。 バイナリ量子化を使用する truncationDimension
には、1,024 以上をお勧めします。 ディメンションが 1,000 未満の場合、MRL とバイナリ圧縮を使用すると、検索結果の品質が低下します。
{
"vectorSearch": {
"profiles": [
{
"name": "use-bq-with-mrl",
"compression": "use-mrl,use-bq",
"algorithm": "use-hnsw"
}
],
"algorithms": [
{
"name": "use-hnsw",
"kind": "hnsw",
"hnswParameters": {
"m": 4,
"efConstruction": 400,
"efSearch": 500,
"metric": "cosine"
}
}
],
"compressions": [
{
"name": "use-mrl",
"kind": "truncation",
"rerankWithOriginalVectors": true,
"defaultOversampling": 10,
"truncationDimension": 1024
},
{
"name": "use-bq",
"kind": "binaryQuantization",
"rerankWithOriginalVectors": true,
"defaultOversampling": 10
}
]
}
}
MRL の要件を満たすすべて指定されたベクトル フィールド定義の例を次に示します。 ベクター フィールドでは次のことが必要であることを思い出してください。
Edm.Half
型またはEdm.Single
型です。アルゴリズムと圧縮の設定を指定する
vectorSearchProfile
プロパティがあります。スコアリングとランク付けの結果のディメンションの数を指定する
dimensions
プロパティがあります。 その値は、使用しているモデルのディメンション制限である必要があります (テキスト埋め込み 3-small の場合は 1,536)。
{
"name": "text_vector",
"type": "Collection(Edm.Single)",
"searchable": true,
"filterable": false,
"retrievable": false,
"stored": false,
"sortable": false,
"facetable": false,
"key": false,
"indexAnalyzer": null,
"searchAnalyzer": null,
"analyzer": null,
"normalizer": null,
"dimensions": 1536,
"vectorSearchProfile": "use-bq-with-mrl",
"vectorEncoding": null,
"synonymMaps": []
}