使用 MRL 壓縮截斷維度 (預覽)
重要
此功能在補充使用規定下處於公開預覽狀態。 預覽 REST API 支援此功能。
練習在文字內嵌-3 模型上使用較少維度的能力。 在 Azure OpenAI 上,文字內嵌-3 模型會重新訓練 Matryoshka 表示法學習 (MRL) 技術,以在不同壓縮層級產生多個向量表示法。 這種方法會產生更快的搜尋並降低儲存成本,且語意資訊遺失最少。
在 Azure AI 搜尋中,MRL 支援補充 純量和二進位量化。 當您使用任一 truncationDimension
量化方法時,也可以指定向量欄位上的屬性,以減少文字內嵌的維度。
MRL 多層次壓縮可節省向量儲存空間,並根據文字內嵌改善向量查詢的查詢回應時間。 在 Azure AI 搜尋中,MRL 支援只會與另一個量化方法一起提供。 搭配 MRL 使用二進位量化可提供最大向量索引大小縮減。 若要達到最大的記憶體縮減,請使用二進位量化搭配 MRL,並將 stored
設定為 false。
此功能處於預覽。 其可在以預覽 API 版本為目標的 Beta SDK 套件中和 中取得 2024-09-01-preview
。
必要條件
文字內嵌-3 模型,例如 Text-embedding-3-small 或 Text-embedding-3-large (僅限文字內容)。
或
Edm.Single
類型的Edm.Half
新向量字位(您無法將 MRL 壓縮新增至現有的欄位)。階層式導覽小型世界 (HNSW) 演算法 (在此預覽版中不支持詳盡的 KNN)。
純量或二進位量化。 只有在設定純量或二進位量化時,才能設定截斷維度。 我們建議進行 MRL 壓縮的二進位量化。
支援的用戶端
您可以使用 REST API 或 Azure SDK Beta 套件來實作 MRL 壓縮。
檢查每個 Azure SDK Beta 套件的變更記錄:Python、.NET、Java、JavaScript。
目前沒有 Azure 入口網站 或 Azure AI Studio 支援。
如何使用 MRL 擴充文字內嵌
MRL 是內建至您已使用之文字內嵌模型的功能。 若要受益於 Azure AI 搜尋中的這些功能,請遵循下列步驟。
使用建立 或更新索引 (預覽) 或對等 API 來指定索引架構。
將向量欄位 新增至索引定義。
vectorSearch.compressions
在索引定義中指定物件。包含量化方法,可以是純量或二進位 (建議的)。
truncationDimension
使用文字內嵌-3-large 模型時,請包含設定為 512 的參數,或最低為 256。指定指定 HNSW 演算法和向量壓縮物件的向量配置檔。
將向量配置檔指派給類型
Edm.Half
或Edm.Single
欄位集合中的向量欄位。
使用支援 MRL 的文字內嵌模型沒有任何查詢端修改。 在查詢時間進行整合向量化、文字到查詢轉換、語意排名和其他相關性增強功能,例如使用原始向量重新調整,以及過度取樣不受 MRL 支持影響。
由於額外的步驟,索引編製速度較慢,但查詢速度較快。
支援 MRL 的向量搜尋組態範例
下列範例說明符合 MRL 需求和建議的向量搜尋組態。
truncationDimension
是壓縮屬性。 它會指定將記憶體中的向量圖形壓縮多少,以及純量或二進位壓縮等壓縮方法。 針對二進位量化,我們建議使用1,024或更高版本 truncationDimension
。 使用 MRL 和二進位壓縮時,小於 1,000 的維度會降低搜尋結果的品質。
{
"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
屬性,可用來指定評分和排名結果的維度數目。 其值應該是您所使用之模型的維度限制(1,536 用於文字內嵌-3-small)。
{
"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": []
}