你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 MRL 压缩截断维度(预览版)
重要
此功能根据补充使用条款处于公开预览状态。 预览版 REST API 支持此功能。
通过运用该方案,可以在 text-embedding-3 模型中使用更少的维度。 在 Azure OpenAI 上,text-embedding-3 模型在俄罗斯套娃表示法学习 (MRL) 技术上进行了重新训练,该技术可以在不同的压缩级别生成多个矢量表示形式。 此方法可以更快地进行搜索并降低存储成本,同时最大限度地减少语义信息丢失。
在 Azure AI 搜索中,MRL 支持补充标量和二进制量化。 使用任一量化方法时,还可以在矢量字段上指定 truncationDimension
属性以减少文本嵌入的维度。
MRL 多级压缩可节省矢量存储空间,并基于文本嵌入缩短矢量查询的查询响应时间。 在 Azure AI 搜索中,MRL 支持仅与另一种量化方法一起提供。 通过将二进制量化与 MRL 配合使用,可最大限度地缩减矢量索引大小。 若要最大限度地缩减存储空间,请将二进制量化与 MRL 配合使用,并将 stored
设置为 false。
此功能目前为预览版。 它在 2024-09-01-preview
和针对该 API 预览版的 beta SDK 包中可用。
先决条件
Text-embedding-3 模型,例如 Text-embedding-3-small 或 Text-embedding-3-large(仅限文本内容)。
Edm.Half
或Edm.Single
类型的新矢量字段(无法向现有字段添加 MRL 压缩)。分层可导航小世界 (HNSW) 算法(此预览版不支持详尽的 KNN)。
标量或二进制量化。 仅当配置标量或二进制量化时,才能设置截断维度。 建议对 MRL 压缩使用二进制量化。
支持的客户端
可以使用 REST API 或 Azure SDK beta 包来实现 MRL 压缩。
检查每个 Azure SDK beta 包的更改日志:Python、.NET、Java、JavaScript。
目前未提供 Azure 门户或 Azure AI Foundry 支持。
如何使用 MRL 扩展的文本嵌入
MRL 是内置于已使用的文本嵌入模型中的功能。 若要使用 Azure AI 搜索中的这些功能并从中受益,请执行以下步骤。
使用创建或更新索引(预览版)或等效 API 来指定索引架构。
向索引定义添加矢量字段。
在索引定义中指定
vectorSearch.compressions
对象。添加标量或二进制(建议)形式的量化方法。
添加设置为 512 的
truncationDimension
参数,如果使用的是 text-embedding-3-large 模型,则可低至 256。指定用于指定 HNSW 算法和矢量压缩对象的矢量配置文件。
将该矢量配置文件分配给字段集合中
Edm.Half
或Edm.Single
类型的矢量字段。
使用支持 MRL 的文本嵌入模型时,无需进行查询端修改。 集成矢量化、查询时的文本到查询转换、语义排名和其他相关性增强功能(如使用原始矢量重新排名和过度采样)不受 MRL 支持的影响。
索引编制速度会因额外的步骤而减慢,但查询速度会加快。
支持 MRL 的矢量搜索配置示例
以下示例演示了符合 MRL 的要求和建议的矢量搜索配置。
truncationDimension
是一个压缩属性。 它将指定结合标量或二进制压缩等压缩方法对内存中的矢量图的收缩程度。 对于采用二进制量化的 truncationDimension
,建议设为 1,024 或更高的数值。 使用 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
属性,用于指定评分和结果排名维度的数量。 其值应是所用模型的维度数量上限(如果是 text-embedding-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": []
}