你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
支持的数据类型(Azure AI 搜索)
本文介绍 Azure AI 搜索支持的数据类型。 根据 实体数据模型(EDM)键入筛选器表达式中使用的字段和值。 指定 EDM 数据类型是字段定义的一项要求。
矢量字段的 EDM 数据类型
矢量字段 类型必须对嵌入模型的输出有效。 例如,如果使用 text-embedding-ada-002,则输出格式 Float32
或 Collection(Edm.Single)
。 在此方案中,无法分配 Int8
数据类型,因为禁止从 float
转换为 int
基元。 但是,可以从 Float32
转换为 Float16
或 (Collection(Edm.Half))
。
矢量字段是嵌入的数组。 在 EDM 中,数组是一个集合。
数据类型 | 矢量类型 | 描述 | 建议使用 |
---|---|---|---|
Collection(Edm.Byte) |
二元的 | 1 位无符号二进制文件。 创建或更新索引(2024-07-01)中正式发布。 | 支持与发出二进制嵌入的模型集成,例如 Cohere 的 v3 二进制嵌入模型。发出 1 位无符号二进制输出的 或自定义量化逻辑。 有关 Collection(Edm.Byte) 类型的字段,请参阅 索引二进制数据 以获取有关指定二进制数据的字段定义和矢量搜索算法的帮助。 |
Collection(Edm.Single) |
Float32 |
32 位浮点。
创建或更新索引(2024-07-01)中正式发布。 此数据类型在较新的预览版本和稳定版本 2023-11-01 中也受支持。 |
代表你创建矢量字段的Microsoft工具中的默认数据类型。 在精度和效率之间取得平衡。 大多数嵌入模型以 Float32 的形式发出矢量。 |
Collection(Edm.Half) |
Float16 |
精度和范围较低的 16 位浮点。 创建或更新索引(2024-07-01)中正式发布。 | 对于内存和计算效率至关重要以及牺牲某些精度是可接受的方案非常有用。 与 Float32 相比,查询时间通常更快,内存占用减少,尽管准确性略有降低。 可以将 Float16 类型分配给索引 Float32 嵌入 Float16 。 还可以使用 Float16 来嵌入本机发出 Float16 的模型或自定义量化进程。 |
Collection(Edm.Int16) |
Int16 |
16 位有符号整数。 创建或更新索引(2024-07-01)中正式发布。 | 相比于 Float32 并支持更精确的量化方法,同时仍为许多应用程序保留足够的精度,可提供更低的内存占用量。 适用于内存效率非常重要的情况。 要求你具有将向量输出为 Int16 的自定义量化。 |
Collection(Edm.SByte) |
Int8 |
8 位有符号整数。 创建或更新索引(2024-07-01)中正式发布。 | 与 Float32 或 Float16 相比,可提供显著的内存和计算效率提升。 但是,它可能需要补充技术(如量化和过度采样),以适当地抵消精度和召回率的减少。 要求你具有将向量输出为 Int8 的自定义量化。 |
非函数字段的 EDM 数据类型
数据类型 | 描述 |
---|---|
Edm.String |
文本数据。 |
Edm.Boolean |
包含 true/false 值。 |
Edm.Int32 |
32 位整数值。 |
Edm.Int64 |
64 位整数值。 |
Edm.Double |
双精度 IEEE 754 浮点值。 |
Edm.DateTimeOffset |
以 OData V4 格式表示的日期和时间值:yyyy-MM-ddTHH:mm:ss.fffZ 或 yyyy-MM-ddTHH:mm:ss.fff[+|-]HH:mm 。
DateTimeOffset 字段的精度限制为毫秒。 如果上传 DateTimeOffset 精度为子百万精度的值,则返回的值将向上舍入为毫秒(例如,2024-04-15T10:30:09.7552052Z 作为 2024-04-15T10:30:09.7550000Z 返回)。 将具有时区信息的 DateTimeOffset 值上传到索引时,Azure AI 搜索将这些值规范化为 UTC。 例如,2024-01-13T14:03:00-08:00 存储为 2024-01-13T22:03:00Z 。 如果需要存储时区信息,请将额外的字段添加到索引中。 |
Edm.GeographyPoint |
表示全球地理位置的点。 对于请求和响应正文,此类型的值的表示形式遵循 GeoJSON“Point”类型格式。 对于 URL,OData 使用基于 WKT 标准的文本形式。 点文本构造为 geography'POINT(lon lat)'。 |
Edm.ComplexType |
其属性映射到可以是任何其他受支持的数据类型的子字段的对象。 此类型允许对结构化分层数据(如 JSON)编制索引。
Edm.ComplexType 类型的对象可以包含嵌套对象,但嵌套级别有限。
服务限制中介绍了这些限制。 |
Collection(Edm.String) |
字符串列表。 |
Collection(Edm.Boolean) |
布尔值的列表。 |
Collection(Edm.Int32) |
32 位整数值的列表。 |
Collection(Edm.Int64) |
64 位整数值的列表。 |
Collection(Edm.Double) |
双精度数值的列表。 |
Collection(Edm.DateTimeOffset) |
日期时间值的列表。 |
Collection(Edm.GeographyPoint) |
表示地理位置的点列表。 |
Collection(Edm.ComplexType) |
Edm.ComplexType 类型的对象列表。 文档中所有类型 Edm.ComplexType 中元素的最大数量有限制。 有关详细信息,请参阅 服务限制。 |
上述所有类型都是可为 null 的,但基元和复杂类型的集合除外,例如 Collection(Edm.String)
。 可以为 null 的字段可以显式设置为 null。 从上传到 Azure AI 搜索索引的文档中省略它们时,它们会自动设置为 null。 从文档中省略集合字段时,集合字段会自动设置为空(JSON 中的[]
)。 此外,无法将 null 值存储在集合字段中。
与复杂集合不同,对基元类型集合中的项数没有上限,但有效负载大小的 16 MB 上限 适用于文档的所有部分,包括集合。
筛选器表达式中使用的地理空间数据类型
在 Azure AI 搜索中,地理空间搜索表示为筛选器。
Edm.GeographyPolygon 是表示全球地理区域的多边形。 虽然此类型不能用于文档字段,但它可用作 geo.intersects
函数的参数。 OData 中 URL 的文本形式基于 WKT(已知文本)和 OGC 的简单功能访问标准。 多边形文本构造为 geography'POLYGON(lon lat,lon lat, ...)'。
重要
多边形 中的点必须按逆时针顺序。 多边形中的点按逆时针顺序解释,相对于多边形内部。 例如,伦敦周围的 4 点封闭多边形将为 -0.3°W 51.6°N [左上] , -0.3°W 51.4°N [左下], 0.1°E 51.4°N [右下], 0.1°E 51.6°N [右上], -0.3°W 51.6°N [起点]。