Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
通过运用该方案,可以在 text-embedding-3 模型中使用更少的维度。 在 Azure OpenAI 上,文本嵌入-3 模型在 Matryoshka 表示形式学习(MRL)技术上重新训练,可在不同压缩级别生成多个矢量表示形式。 此方法可以更快地进行搜索,并降低存储成本,同时语义信息丢失最少。
在Azure AI Search中,MRL 支持补充标量和二进制量化。 使用任一量化方法时,可以在向量字段上指定属性 truncationDimension 以减少文本嵌入的维数。
MRL 多级压缩可以优化基于文本嵌入的矢量查询,通过节省存储空间和提升查询响应时间。 在Azure AI Search中,MRL 支持仅与另一种量化方法一起提供。 通过将二进制量化与 MRL 配合使用,可最大限度地缩减矢量索引大小。 为了实现最大程度的存储减少,请将二进制量化与 MRL 配合使用,并将 stored 设置为 false。
警告
如果设置为 storedfalse,则矢量数据会在部分文档更新期间丢失,除非在每个更新中提供整个向量。 将stored设置为true以避免此问题。 有关更多信息,请参阅从存储中消除可选向量实例。
先决条件
text-embedding-3 模型,例如 text-embedding-3-small 或 text-embedding-3-large。
新向量字段 类型
Edm.Half或Edm.Single。 无法将 MRL 压缩添加到现有字段。标量或二进制量化。 仅当配置标量或二进制量化时,才能设置截断维度。 建议对 MRL 压缩使用二进制量化。
支持的客户端
可以使用 REST API 或 Azure SDK 包来实现 MRL 压缩。 目前,没有Azure portal或Microsoft Foundry 支持。
- 检查每个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 或更高的数值。 使用 MRL 和二进制压缩时,小于 1,000 的维度会降低搜索结果的质量。
{
"vectorSearch": {
"profiles": [
{
"name": "use-bq-with-mrl",
"compression": "use-bq-with-truncation",
"algorithm": "use-hnsw"
}
],
"algorithms": [
{
"name": "use-hnsw",
"kind": "hnsw",
"hnswParameters": {
"m": 4,
"efConstruction": 400,
"efSearch": 500,
"metric": "cosine"
}
}
],
"compressions": [
{
"name": "use-bq-with-truncation",
"kind": "binaryQuantization",
"rescoringOptions": {
"enableRescoring": true,
"defaultOversampling": 10,
"rescoreStorageMethod": "preserveOriginals"
},
"truncationDimension": 1024
}
]
}
}
以下 JSON 显示使用此配置的向量字段定义:
数据类型为
Collection(Edm.Half)或Collection(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": []
}