共用方式為


在 Azure AI 搜尋中將窄數據類型指派給向量欄位

減少向量大小的簡單方法是以較小的資料格式儲存內嵌。 大部分的內嵌模型都會輸出 32 位元浮點數,但如果您量化向量,或內嵌模型原生支援,則輸出可能是 float16、int16 或 int8,這明顯小於 float32。 您可以將精簡資料類型指派給向量欄位,以容納這些較小的向量大小。 在向量索引中,精簡資料類型會耗用較少的儲存體。

數據類型會指派給索引定義中的欄位。 您可以使用 Azure 入口網站、搜尋 REST API 或提供此功能的 Azure SDK 套件。

必要條件

  • 輸出小型數據格式的內嵌模型,例如文字內嵌-3 或 Cohere V3 內嵌模型。

支援的窄型數據類型

  1. 檢閱用於向量欄位的資料類型,以取得建議的使用方式:

    • Collection(Edm.Single) 32 位元浮點數 (預設值)
    • Collection(Edm.Half) 16 位元浮點數 (精簡)
    • Collection(Edm.Int16) 16 位元帶正負號的整數 (精簡)
    • Collection(Edm.SByte) 8 位元帶正負號的整數 (精簡)
    • Collection(Edm.Byte) 8 位元不帶正負號的整數 (只允許搭配封裝的二進位資料類型)
  2. 從該清單中,判斷哪一個資料類型對內嵌模型的輸出有效,或用於進行自訂量化的向量。

    下表提供數個內嵌模型的連結,這些模型可以使用精簡資料類型 (Collection(Edm.Half)),而不需額外的量化。 您可以從 float32 轉換為 float16 (使用 Collection(Edm.Half)),而不需要額外的工作。

    內嵌模型 原生輸出 在 Azure AI 搜尋服務中指派此類型
    text-embedding-ada-002 Float32 Collection(Edm.Single)Collection(Edm.Half)
    text-embedding-3-small Float32 Collection(Edm.Single)Collection(Edm.Half)
    text-embedding-3-large Float32 Collection(Edm.Single)Collection(Edm.Half)
    Cohere V3 內嵌模型,搭配 int8 embedding_type Int8 Collection(Edm.SByte)

    如果您的模型以較小的資料格式發出內嵌,或者如果您有將向量轉換成較小格式的自訂量化,則可以使用其他精簡資料類型。

  3. 請務必了解使用窄資料類型的取捨。 Collection(Edm.Half) 資訊較少,會導致解析度較低。 如果您的資料是同質或密集資料,遺失額外的詳細資料或細微差別可能會導致查詢時間發生難以接受的結果,因為可用來區分附近向量的詳細資料較少。

指派數據類型

定義及建置索引。 您可以針對此步驟使用 Azure 入口網站、建立或更新索引 (REST API) 或 Azure SDK 套件。

此欄位定義使用窄數據類型 , Collection(Edm.Half)可接受儲存為 float16 值的 float32 內嵌。 與所有向量欄位一樣, dimensionsvectorSearchProfile 已設定 。 的 vectorSearchProfile 特寫與數據類型無關。

如果您想要以可視化方式檢查字段的值,建議您設定 retrievablestored 為 true。 在後續重建時,您可以將這些屬性變更為 false,以降低記憶體需求。

{
    "name": "nameEmbedding",
    "type": "Collection(Edm.Half)",
    "searchable": true,
    "filterable": false,
    "retrievable": true,
    "sortable": false,
    "facetable": false,
    "key": false,
    "indexAnalyzer": null,
    "searchAnalyzer": null,
    "analyzer": null,
    "synonymMaps": [],
    "dimensions": 1536,
    "vectorSearchProfile": "myHnswProfile"
}

回想一下,向量字段無法篩選、可排序或多面向。 它們不能當做索引鍵使用,也不會使用分析器或同義字對應。

使用生產索引

在建立新欄位時,數據類型會指派給它們。 您無法變更現有欄位的數據類型,而且您無法在不重建索引的情況下卸除字段。 對於已在生產環境中建立的已建立索引,透過建立具有所需修訂的新欄位,然後在計劃性索引重建期間移除過時的字段,來解決此問題很常見。

檢查結果

  1. 確認欄位內容符合數據類型。 假設向量欄位標示為 retrievable,請使用 [搜尋總管] 或 [搜尋 - POST] 傳回向量字段內容。

  2. 若要檢查向量索引大小,請參閱 Azure 入口網站 的 [搜尋管理>索引] 頁面上的向量索引大小數據行,或使用 GET Statistics (REST API) 或對等的 Azure SDK 方法來取得大小。

注意

欄位的資料類型可用來建立實體資料結構。 如果您想要稍後變更數據類型, 請卸除並重建索引,或使用新的定義建立第二個字段。