你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure AI 搜索) (支持的数据类型

本文介绍 Azure AI 搜索支持的数据类型。 字段和筛选器表达式中使用的值根据 实体数据模型 (EDM) 类型化。 指定 EDM 数据类型是字段定义的一项要求。

注意

如果使用索引器,请参阅 Azure AI 搜索中索引器的数据类型映射,详细了解索引器如何将特定于源的数据类型映射到搜索索引中的 EDM 数据类型。

矢量字段的 EDM 数据类型

矢量字段类型对于嵌入模型的输出必须有效。 例如,如果使用 text-embedding-ada-002,则输出格式为 Float32Collection(Edm.Single)。 在此方案中,无法分配数据类型, Int8 因为禁止从 float 强制 int 转换为基元。 但是,可以从 强制转换为 Float32Float16(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.fffZyyyy-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 [起始点]。

另请参阅