Azure AI 搜尋服務 中的向量搜尋

註

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

向量搜尋是一種資訊檢索方法,支援對內容的數字表示進行索引與查詢。 由於內容為數值而非純文字,匹配基於與查詢向量最相似的向量。 此方法使得以下地區的匹配成為可能:

  • 語意或概念上的相似性。 例如,「dog」和「canine」在概念上相似,但在語言上卻是不同的。
  • 多語系內容,例如英文的「Dog」和德文的「Hund」。
  • 多種內容類型,例如純文字中的「dog」和狗的圖片。

本文概述 Azure AI 搜尋服務 中的向量搜尋,包括支援的情境、可用性,以及與其他 Azure 服務的整合。

提示

想馬上開始嗎? 請遵循以下步驟:

  1. 為你的索引提供嵌入向量,或在索引器管道中產生嵌入向量。
  2. 建立向量索引。
  3. 執行向量查詢。

向量搜尋能支援哪些情境?

向量搜尋支援以下情境:

  • 相似性搜尋。 使用嵌入模型或開源模型(如 OpenAI 嵌入或 SBERT)來編碼文字。 接著你用同樣被編碼為向量的查詢來檢索文件。

  • 混合式搜尋。 Azure AI 搜尋服務將混合搜尋定義為在同一請求中執行向量搜尋與關鍵字搜尋。 向量支援是在現場層級實作。 如果索引包含向量場和非向量場,你可以寫一個查詢同時針對兩者。 查詢會平行執行,結果會合併成單一回應並依序排序。

  • 多模態搜尋。 使用多模態嵌入在 Azure OpenAI 平台上編碼文字與圖片,例如 OpenAI CLIP 或 GPT-4 Turbo with Vision,然後查詢由這兩種類型的內容向量組成的嵌入空間。

  • 多語言搜尋。 Azure AI 搜尋服務 是設計以擴充性為主。 如果你有用多種語言訓練的嵌入模型和聊天模型,可以透過自訂或內建的索引技能,或查詢端的向量器來呼叫它們。 若要更好地控制文字翻譯,可使用 Azure AI 搜尋服務 支援的 多語言功能用於混合搜尋情境下的非向量內容。

  • 過濾向量搜尋。 查詢請求可以包含向量查詢和 過濾表達式。 篩選器適用於文字和數字欄位。 它們對於元資料篩選以及根據篩選條件來包含或排除搜尋結果非常有用。 雖然向量欄位無法過濾,但你可以設定可篩選的文字或數字欄位。 搜尋引擎可以在執行向量查詢前或之後處理篩選器。

  • 向量資料庫。 Azure AI 搜尋服務 會儲存你查詢的資料。 當你需要長期記憶、知識庫、為檢索增強生成(RAG)架構提供基礎資料,或是使用向量的應用程式時,可以直接用它作為純向量索引。

向量搜尋是怎麼運作的?

Azure AI 搜尋服務 支援從搜尋索引中索引、儲存及查詢向量嵌入。 下圖展示了向量搜尋的索引與查詢工作流程。

向量搜尋工作流程架構。

在索引方面,Azure AI 搜尋服務 使用 最近鄰演算法將相似向量靠近於索引中。 內部則為每個向量場建立 向量索引 。

您如何將來源內容中的嵌入放入 Azure AI 搜尋服務,取決於您的處理方法:

  • 在內部處理方面,Azure AI 搜尋服務 提供索引器管線中的整合資料分塊與向量化。 你提供必要的資源,例如端點和 Azure OpenAI 的連線資訊。 接著 Azure AI 搜尋服務 會進行呼叫並處理轉換。 這種方法需要索引器、支援的資料來源,以及推動分塊與嵌入的技能組合。

  • 外部處理時,你可以在Azure AI 搜尋服務外產生嵌入,並將預先向量化的內容直接推入搜尋索引中的向量場。

在查詢端,你的客戶端應用程式會收集使用者輸入,通常是透過提示。 你可以加入編碼步驟來向量化輸入,然後將向量查詢送回 Azure AI 搜尋服務 索引進行相似度搜尋。 和索引一樣,你可以使用 整合向量化 來編碼查詢。 對於任一方法,Azure AI 搜尋服務都會在結果中傳回具有所要求 k 個最近鄰 (kNN) 的文件。

Azure AI 搜尋服務 支援 混合情境,這些情境可同時執行向量與關鍵字搜尋,並回傳統一的結果集,通常比單純的向量或關鍵字搜尋提供更好的結果。 在混合搜尋中,向量與非向量內容會被匯入同一個索引,以進行同時執行的查詢。

可用性與價格

向量搜尋在 所有地區 及 所有層級 均免費提供。 然而,產生內嵌或使用 AI 擴充進行向量化可能會產生來自模型提供者的費用。

若要透過入口網站及程式化存取向量搜尋,您可以使用:

註

  • 部分在 2019 年 1 月 1 日之前建立的搜尋服務不支援向量工作負載。 如果你嘗試在結構中加入向量場卻出現錯誤,那是服務過時造成的。 在這種情況下,你必須建立一個新的搜尋服務來嘗試向量功能。

  • 2024 年 4 月 3 日之後建立的搜尋服務,對 向量索引的配額更高。 如果你使用的是較舊的服務,或許可以 升級 服務以獲得更高的向量配額。

Azure AI 搜尋服務 深度整合於 Azure AI 平台。 下表列出在向量工作負載中有用的產品。

產品 整合
Azure OpenAI Azure OpenAI 提供嵌入模型與聊天模型。 示範與範例針對 文字嵌入 ada-002 模型。 我們推薦使用 Azure OpenAI 來產生文字嵌入。
鑄造工具 影像檢索向量化影像 API 支援影像內容向量化。 我們推薦此 API 用於產生影像嵌入。
鑄造代理服務 在 Azure AI 搜尋服務 中,你可以建立一個 已索引的 知識來源,它指向一個包含向量欄位和向量化器的搜尋索引。 接著你可以將知識來源作為一個 知識庫 的子層,並將 知識庫連接到 Foundry Agent Service,為你的代理人提供向量搜尋結果,以提升知識檢索能力。
Azure data platforms: Azure Blob 儲存體, Azure Cosmos DB, Azure SQL, Microsoft OneLake 你可以用 索引器 自動化資料擷取,然後用 整合向量化 來產生嵌入。 Azure AI 搜尋服務可以從 Azure Blob 索引子、Azure Cosmos DB for NoSQL 索引子、Azure Data Lake Storage Gen2、Azure 資料表儲存體 和 Microsoft OneLake 自動為向量資料建立索引。 欲了解更多資訊,請參見 「向量場加入搜尋索引」。

Azure AI 搜尋服務 也常用於像 LangChain 這樣的開源框架中。