支援的資料類型 (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 [起點]。