分享方式:


產生搜尋查詢和文件的內嵌

Azure AI 搜尋服務不會裝載向量化模型,因此您的其中一項挑戰是建立查詢輸入和輸出的內嵌。 您可以使用任何支援的內嵌模型,但本文假設您使用的是 Azure OpenAI 內嵌模型進行步驟。

我們建議整合向量化,以提供內建的資料區塊化和向量化。 整合向量化相依於索引子、技能集,以及指向從 Azure AI 搜尋服務外部執行之模型的內建或自訂技能。

如果您想要自行處理資料區塊化和向量化,我們會在範例存放庫中提供示範,示範如何與其他社群解決方案整合。

如何在向量查詢中使用內嵌模型

  • 查詢輸入是向量,或是在查詢處理期間轉換成向量的文字或影像。 Azure AI 搜尋服務中的內建解決方案是使用向量化工具。

    或者,您也可將查詢輸入傳遞至您選擇的內嵌模型,以便自行處理轉換。 若要避免速率限制 (部分機器翻譯),您可以在工作負載中實作重試邏輯。 針對 Python 示範,我們使用 tenacity (英文)。

  • 查詢輸出是在搜尋索引中找到的任何相符文件。 您的搜尋索引之前必須已載入具有一或多個具有內嵌之向量欄位的文件。 無論您用於編製索引的內嵌模型為何,請對查詢使用該相同模型。

在相同的區域中建立資源

整合向量化需要資源位於相同的區域:

  1. 檢查文字內嵌模型的區域

  2. 尋找 Azure AI 搜尋服務的相同區域

  3. 若要支援包括語意排名的混合式查詢,或如果您想要在 AI 擴充管線中使用自訂技能來嘗試機器學習模型整合,請選取可提供那些功能的 Azure AI 搜尋服務區域。

產生適用於即興查詢的內嵌

下列 Python 程式碼會產生內嵌,您可以貼上向量查詢的 "values" 屬性中。

!pip install openai

import openai

openai.api_type = "azure"
openai.api_key = "YOUR-API-KEY"
openai.api_base = "https://YOUR-OPENAI-RESOURCE.openai.azure.com"
openai.api_version = "2024-02-01"

response = openai.Embedding.create(
    input="How do I use Python in VSCode?",
    engine="text-embedding-ada-002"
)
embeddings = response['data'][0]['embedding']
print(embeddings)

輸出是 1,536 個維度的向量陣列。

內嵌模型整合的提示和建議

  • 識別使用案例:評估特定使用案例,其中針對向量搜尋功能內嵌模型整合可增加您搜尋解決方案的價值。 這可以包含多模型或比對影像內容與文字內容、多語系搜尋或類似搜尋。

  • 設計區塊化策略:內嵌模型對於可接受的語彙基元數目有所限制,這帶來了大型檔案的資料區塊化需求。 如需詳細資訊,請參閱針對向量搜尋解決方案將大型文件區塊化

  • 將成本和效能最佳化:向量搜尋可能會耗用大量資源,而且受限於最大限制,因此請只考慮對包含語意意義的欄位進行向量化。 縮減向量大小,讓您能以相同的價格儲存更多向量。

  • 選擇正確的內嵌模型:為特定使用案例選取適當的模型,例如針對文字型搜尋選取文字內嵌,或針對視覺物件搜尋選取影像內嵌。 考慮使用預先定型的模型,例如來自 OpenAI 的 text-embedding-ada-002,或是來自 Azure AI 電腦視覺 (部分機器翻譯) 的影像擷取 REST API。

  • 將向量長度正規化:確保在將向量儲存在搜尋索引之前將其長度正規化,以改善相似度搜尋的正確性和效能。 大部分預先定型的模型都已經正規化,但並非全部。

  • 微調模型:如有需要,請針對您特定領域的資料微調選取的模型,以改善其效能和與搜尋應用程式的相關性。

  • 測試並逐一查看:持續測試並精簡內嵌模型整合,以達到所需的搜尋效能和使用者滿意度。

下一步