向量搜尋的指標二元向量

Note

Azure AI 搜尋服務 可透過 Azure 入口網站、REST API 及 Azure SDK 取得。 它同時也是 Foundry IQ 的基礎,這是一個管理式知識層,能將企業內容轉化為可重複使用、權限感知的知識庫,供 Microsoft Foundry 入口網站中的代理使用。

Azure AI 搜尋服務 支援 Collection(Edm.Byte) 打包二進位型態,以進一步減少向量資料的儲存與記憶體佔用。 你可以用這個資料型態輸出模型,例如 Cohere 的 Embed v3 二進位嵌入模型 ,或任何其他以二進位位元組形式輸出向量的嵌入模型或流程。

配置二元向量索引有三個步驟:

  • 新增一個向量搜尋演算法,指定用於二元向量比較的漢明距離
  • 加入一個指向演算法的向量剖面
  • 加入一個型態 Collection(Edm.Byte) 為的向量場,並指派漢明距離

本文以 REST API 作為說明,但你也可以使用 Azure SDK 或 Azure 入口網站,將二進位欄位加入索引。 你可以透過使用 Indexes - Create 或 Indexes - Create 或 Update REST API 來指派二進位資料類型給欄位。

提示

如果你正在研究二進位向量的支援,因為它體積較小,也可以考慮 Azure AI 搜尋服務 中的向量量化和儲存減少功能。 輸入為 float32 或 float16 型別的內嵌。 輸出會以更小的格式儲存資料。 欲了解更多資訊,請參閱 使用二進位或純量量化壓縮 及 指派狹義資料型別。

先決條件

  • 熟悉 建立索引 和 加入向量場。

  • 二元向量,每個維度為一位元,以uint8值包裝,每個值為八位元。 你可以使用直接產生 打包式二進位 向量的模型,或在客戶端應用程式中將向量量化成二進位向量來取得這些向量。

限制

  • Import data 精靈不支援 Azure 入口網站。

  • AML 技能 不支援二進位欄位,該技能用於整合向量化 Microsoft Foundry 模型目錄中的模型。

新增向量搜尋演算法與向量剖面

向量搜尋演算法在索引過程中建立查詢導覽結構。 對於二元向量場,系統使用漢明距離度量來進行向量比較。

要設定二元向量的向量搜尋:

  1. 設定 Indexes – Create or Update (REST API) 要求。

  2. 在索引結構中,新增 vectorSearch 一個指定設定檔與演算法的區塊。

  3. 加入一個或多個使用相似度指標的hamming。 分層可導航小世界 (Hierarchical Navigable Small Worlds,HNSW) 演算法相當常見,但您也可以搭配窮舉式 K 最近鄰 (KNN) 使用漢明距離。

  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 設定為您在前一步驟中定義的設定檔。

  6. 設定 searchable 為 true。

以下欄位定義是索引模式中二元向量場的範例。

  "fields": [ 
    . . . 
    { 
      "name": "my-binary-vector-field", 
      "type": "Collection(Edm.Byte)", 
      "vectorEncoding": "packedBit", 
      "dimensions": 1024, 
      "vectorSearchProfile": "myHnswProfile",
      "searchable": true
    },
   . . . 
  ]
  • 請參閱 azure-search-vector-samples 資料庫,了解端到端工作流程,包括結構定義、向量化、索引及查詢。

  • 請檢視向量搜尋示範程式碼,分別是 C#、Python 以及 JavaScript。