你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文介绍 Azure AI 搜索支持的数据类型。 筛选器表达式中使用的字段和值根据 实体数据模型 (EDM) 进行键入。 指定 EDM 数据类型是字段定义的一项要求。
注意
如果使用 索引器,请参阅 Azure AI 搜索中索引器的数据类型映射 ,详细了解如何将特定于源的数据类型映射到搜索索引中的 EDM 数据类型。
矢量字段的 EDM 数据类型
向量字段类型必须对嵌入模型的输出有效。 例如,如果使用 text-embedding-ada-002,则输出格式为 Float32 或 Collection(Edm.Single)。 在此方案中,无法分配Int8数据类型,因为禁止强制转换为floatint基元。 但是,您可以从 或 (Collection(Edm.Half))投射到 。Float16Float32
矢量字段是嵌入的数组。 在 EDM 中,数组是一个集合。
| 数据类型 | 矢量类型 | 描述 | 建议使用 |
|---|---|---|---|
Collection(Edm.Byte) |
二元的 | 1 位无符号二进制文件。 在 创建或更新索引中正式发布。 | 支持与发出二进制嵌入的模型集成,例如 Cohere 的 v3 二进制嵌入模型。 或发出 1 位无符号二进制输出的自定义量化逻辑。 对于类型 Collection(Edm.Byte)的字段,请参阅 索引二进制数据, 以获取有关指定二进制数据的字段定义和向量搜索算法的帮助。 |
Collection(Edm.Single) |
Float32 |
32 位浮点。 在 创建或更新索引中正式发布。 | 代表你创建矢量字段的Microsoft工具中的默认数据类型。 在精度和效率之间取得平衡。 大多数嵌入模型发出的向 Float32量为 . |
Collection(Edm.Half) |
Float16 |
精度和范围较低的 16 位浮点。 在 创建或更新索引中正式发布。 | 对于内存和计算效率至关重要以及牺牲某些精度是可接受的方案非常有用。 与 相比 Float32,通常会导致更快的查询时间并减少内存占用,尽管准确性略有降低。 您可以将类型 Float16 分配给索引 Float32 嵌入 Float16,作为 。 您还可以用于 Float16 嵌入本机发射 Float16 的模型或自定义量化过程。 |
Collection(Edm.Int16) |
Int16 |
16 位有符号整数。 在 创建或更新索引中正式发布。 | 与更高精度的量化方法相比 Float32 ,内存占用更少,并支持更高精度的量化方法,同时仍为许多应用保持足够的精度。 适用于内存效率非常重要的情况。 要求您具有自定义量化,将向量输出为 Int16。 |
Collection(Edm.SByte) |
Int8 |
8 位有符号整数。 在 创建或更新索引中正式发布。 | 与 或 Float16相比Float32,提供显着的内存和计算效率提升。 但是,它可能需要补充技术(如量化和过度采样),以适当地抵消精度和召回率的减少。 要求您具有自定义量化,将向量输出为 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 [起点]。