你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure AI 搜索) (支持的数据类型
本文介绍 Azure AI 搜索支持的数据类型。 字段和筛选器表达式中使用的值根据 实体数据模型 (EDM) 类型化。 指定 EDM 数据类型是字段定义的一项要求。
注意
如果使用索引器,请参阅 Azure AI 搜索中索引器的数据类型映射,详细了解索引器如何将特定于源的数据类型映射到搜索索引中的 EDM 数据类型。
矢量字段的 EDM 数据类型
矢量字段类型对于嵌入模型的输出必须有效。 例如,如果使用 text-embedding-ada-002,则输出格式为 Float32
或 Collection(Edm.Single)
。 在此方案中,无法分配数据类型, Int8
因为禁止从 float
强制 int
转换为基元。 但是,可以从 强制转换为 Float32
Float16
或 (Collection(Edm.Half))
。
矢量字段是嵌入的数组。 在 EDM 中,数组是集合。
数据类型 | 矢量类型 | 说明 | 建议用途 |
---|---|---|---|
Collection(Edm.Single) |
Float32 |
32 位浮点。 从 创建或更新索引 (2023-07-01-Preview) 开始可用。 较新的预览版和稳定版 2023-11-01 也支持此数据类型。 |
Microsoft 工具中代表你创建矢量字段的默认数据类型。 在精度和效率之间取得平衡。 大多数嵌入模型以 的形式 Float32 发出矢量。 |
Collection(Edm.Half) |
Float16 |
精度和范围较低的 16 位浮点。 从 创建或更新索引 (2024-03-01-preview) 开始可用。 | 适用于内存和计算效率至关重要且可接受牺牲一定精度的方案。 与 相比 Float32 ,通常可加快查询时间和减少内存占用,但准确性略有降低。 可以将类型 Float16 分配给索引 Float32 嵌入作为 Float16 。 还可以使用 Float16 嵌入模型或本机发出的 Float16 自定义量化过程。 |
Collection(Edm.Int16) |
Int16 |
16 位带符号整数。 从 创建或更新索引 (2024-03-01-preview) 开始可用。 | 与更高精度的量化方法相比 Float32 ,提供更低的内存占用和支持,同时仍为许多应用程序保留足够的精度。 适用于内存效率非常重要的情况。 要求具有将矢量输出为 Int16 的自定义量化。 |
Collection(Edm.SByte) |
Int8 |
8 位带符号整数。 从 创建或更新索引 (2024-03-01-preview) 开始可用。 | 与 或 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 [起始点]。