共用方式為


向量搜尋的索引二進位向量

重要

根據補充使用規定,二進位資料類型為公開預覽版。 2024-05-01-preview REST API 和更新版本的預覽 API 會提供新的資料類型。

從 2024-05-01-preview REST API 開始,Azure AI 搜尋服務支援已封裝的二進位類型 Collection(Edm.Byte),以進一步減少向量資料的儲存體和磁碟使用量。 您可以將此資料類型用於從模型 (例如 Cohere 的 Embed v3 二進位內嵌模型 (英文)) 輸出。

為二進位向量設定索引的步驟有三個:

  • 新增向量搜尋演算法,該演算法會指定二進位向量比較的漢明距離
  • 新增會指向該演算法的向量設定檔
  • 將向量設定檔新增至二進位欄位定義

本文假設您對於在 Azure AI 搜尋服務中建立索引的作業並不陌生。 它會使用 REST API 來說明每個步驟,但您也可以將二進位欄位新增至 Azure 入口網站中的索引。

必要條件

  • 二進位向量,每個維度有 1 位元,以 uint8 值封裝,每個值 8 位元。 您可以使用直接產生「封裝二進位」向量的模型,或在編製索引和搜尋期間,將向量量化為二進位向量用戶端,以取得這些項目。

限制

  • 不支援純量壓縮或整合向量化支援。
  • 匯入和向量化資料精靈中沒有 Azure 入口網站支援。
  • 不支援用於 Azure AI Studio 模型目錄中模型整合向量化之 AML 技能中的二進位欄位。

新增向量搜尋演算法和向量設定檔

向量搜尋演算法可用來在索引編製期間建立查詢瀏覽結構。 針對二進位向量欄位,會使用漢明距離 (Hamming distance) 計量來執行向量比較。

  1. 若要將二進位欄位新增至索引,請使用 2024-05-01-preview REST API 或 Azure 入口網站,以設定 Create or Update Index 要求。

  2. 在索引結構描述中,新增會指定設定檔和演算法的 vectorSearch 區段。

  3. 新增一或多個具有相似度計量 hamming向量搜尋演算法。 通常會使用階層式導覽小型世界 (HNSW),但您也可以使用漢明距離搭配完整的 K 最近鄰項目。

  4. 新增一或多個會指此定演算法的向量設定檔。 您無法在此預覽版中指定純量壓縮或向量化工具。

下列範例顯示基本 vectorSearch 設定:

  "vectorSearch": { 
    "profiles": [ 
      { 
        "name": "myHnswProfile", 
        "algorithm": "myHnsw", 
        "compression": null, 
        "vectorizer": null 
      } 
    ], 
    "algorithms": [ 
      { 
        "name": "myHnsw", 
        "kind": "hnsw", 
        "hnswParameters": { 
          "metric": "hamming" 
        } 
      }, 
      { 
        "name": "myExhaustiveKnn", 
        "kind": "exhaustiveKnn", 
        "exhaustiveKnnParameters": { 
          "metric": "hamming" 
        } 
      } 
    ] 
  }

將二進位欄位新增至索引

索引欄位集合必須包含文件索引鍵的欄位、向量欄位,以及混合式搜尋案例所需的任何其他欄位。

二進位欄位的類型為 Collection(Edm.Byte),且包含封裝形式的內嵌。 例如,如果原始內嵌維度為 1024,則封裝的二進位向量長度為 ceiling(1024 / 8) = 128。 您可以在欄位上設定 vectorEncoding 屬性,以取得封裝形式。

  1. 將欄位新增至欄位集合,並為其命名。
  2. 將資料類型設定為 Collection(Edm.Byte)
  3. vectorEncoding 設為 packedBit 以進行二進位編碼。
  4. dimensions 設定為 1024。 指定原始的 (未封裝) 向量維度。
  5. vectorSearchProfile 設為您在上一步中定義的設定檔。

欄位集合的最基本定義看起來應該類似下列範例:

  "fields": [ 
    { 
      "name": "Id", 
      "type": "Edm.String", 
      "key": true, 
      "searchable": true 
    }, 
    { 
      "name": "my-binary-vector-field", 
      "type": "Collection(Edm.Byte)", 
      "vectorEncoding": "packedBit", 
      "dimensions": 1024, 
      "vectorSearchProfile": "myHnswProfile" 
    } 
  ]

另請參閱

azure-search-vector-samples 存放庫中的程式碼範例示範端對端工作流程,其中包含結構描述定義、向量化、編製索引和查詢。

PythonC#JavaScript 的程式碼示範。