分享方式:


Azure OpenAI 內嵌技能

Azure OpenAI 內嵌技能連線到 Azure OpenAI 資源上已部署的內嵌模型,以在技能執行期間產生內嵌。 您的資料會在模型部署所在的地理位置中處理。

必要條件

您的 Azure OpenAI 服務必須有相關聯的 自定義子域。 如果服務是透過 Azure 入口網站 建立的,此子域會自動產生為服務設定的一部分。 請確定您的服務包含自定義子域,再搭配 Azure AI 搜尋整合使用。

不支援在 AI Studio 中建立的 Azure OpenAI 服務資源(可存取內嵌模型)。 只有 Azure 入口網站 中建立的 Azure OpenAI 服務資源與 Azure OpenAI 內嵌技能整合相容。

Azure 入口網站中的匯入和向量化資料精靈會使用 Azure OpenAI 內嵌技能將內容向量化。 您可以執行精靈並檢閱產生的技能集,以查看精靈如何建置內嵌模型的技能。

注意

此技能會繫結至 Azure OpenAI,並以現有的 Azure OpenAI 隨用隨付價格計費。

@odata.type

Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill

資料限制

文字輸入的大小上限應為 8,000 個權杖。 如果輸入超過允許的最大值,則模型會擲回無效的要求錯誤。 如需詳細資訊,請參閱 Azure OpenAI 文件中的權杖金鑰概念。 如果您需要資料區塊處理,請考慮使用文字分割技能

技能參數

這些參數會區分大小寫。

輸入 描述
resourceUri 在此案例中,模型提供者的URI是 Azure OpenAI 資源。 此參數僅支援具有網域 openai.azure.com的網址,例如 https://<resourcename>.openai.azure.com。 如果 Azure OpenAI 端點具有具有網域cognitiveservices.azure.com的 URL,例如 https://<resourcename>.cognitiveservices.azure.com則必須先為 Azure OpenAI 資源建立自定義子域openai.azure.com,並改用 https://<resourcename>.openai.azure.com
apiKey 用於存取模型的祕密金鑰。 如果您提供金鑰,請將 authIdentity 保留空白。 如果您同時設定 apiKeyauthIdentity,則會在連線上使用 apiKey
deploymentId 已部署的 Azure OpenAI 內嵌模型名稱。 此模型應該是內嵌模型,例如 text-embedding-ada-002。 如需支援的模型,請參閱 OpenAI 模型清單
authIdentity 搜尋服務用來連線到 Azure OpenAI 的使用者受控識別。 您可以使用系統或使用者受控的識別。 若要使用系統管理的身分識別,請將 apiKeyauthIdentity 保留空白。 自動使用系統管理的身分識別。 受控識別必須具有認知服務 OpenAI 使用者權限,才能將文字傳送至 Azure OpenAI。
modelName 如果您的技能集是使用 2024-05-01-preview 或 2024-07-01 REST API 建立,則需要此屬性。 將此屬性設定為 Azure OpenAI 內嵌模型部署在透過 resourceUri 指定的提供者上、並透過 deploymentId 識別的部署名稱。 目前支援的值為 text-embedding-ada-002text-embedding-3-largetext-embedding-3-small
dimensions (選擇性,於 2024-05-01-preview REST API 中引進)。 您要產生的內嵌維度 (如果模型支援減少內嵌維度)。 支援的範圍如下所列。 如果未指定,則預設為每個模型的最大維度。 針對使用 2023-10-01-preview 建立的技能,維度會固定在 1536。

modelName 支援的維度

Azure OpenAI 內嵌技能的支援維度取決於所設定的 modelName

modelName 最小維度 最大維度
text-embedding-ada-002 1536 1536
text-embedding-3-large 1 3072
text-embedding-3-small 1 1536

技能輸入

輸入 描述
text 要向量化的輸入文字。 如果您使用資料區塊處理,來源可能是 /document/pages/*

技能輸出

輸出 描述
embedding 輸入文字的向量化內嵌。

範例定義

請考慮具有下列欄位的記錄:

{
    "content": "Microsoft released Windows 10."
}

然後您的技能定義看起來可能會像這樣:

{
  "@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
  "description": "Connects a deployed embedding model.",
  "resourceUri": "https://my-demo-openai-eastus.openai.azure.com/",
  "deploymentId": "my-text-embedding-ada-002-model",
  "modelName": "text-embedding-ada-002",
  "dimensions": 1536,
  "inputs": [
    {
      "name": "text",
      "source": "/document/content"
    }
  ],
  "outputs": [
    {
      "name": "embedding"
    }
  ]
}

範例輸出

針對指定的輸入文字,會產生向量化內嵌輸出。

{
  "embedding": [
        0.018990106880664825,
        -0.0073809814639389515,
        .... 
        0.021276434883475304,
      ]
}

輸出位於記憶體中。 若要將此輸出傳送至搜尋索引中的欄位,您必須定義 outputFieldMapping,將向量化內嵌輸出 (這是陣列) 對應至向量欄位。 假設技能輸出位於文件的內嵌節點,且 content_vector 是搜尋索引中的欄位,索引子中的 outputFieldMapping 看起來應該會像這樣:

  "outputFieldMappings": [
    {
      "sourceFieldName": "/document/embedding/*",
      "targetFieldName": "content_vector"
    }
  ]

最佳作法

以下是使用此技能時所需考量的一些最佳做法:

  • 如果您達到 Azure OpenAI TPM (每分鐘權杖數) 限制,請考慮配額限制諮詢,以便據以處理。 如需 Azure OpenAI 執行個體效能的詳細資訊,請參閱 Azure OpenAI 監視文件。

  • 您用於此技能的 Azure OpenAI 內嵌模型部署應與用於其他使用案例的部署分開,包括查詢向量化工具。 這可協助每個部署針對其特定使用案例量身打造,進而使效能最佳化,並輕鬆地識別來自索引子和索引內嵌呼叫的流量。

  • 您的 Azure OpenAI 執行個體應該位於相同區域,或至少在地理上與 AI 搜尋服務裝載所在的區域相近。 這可減少延遲,並改善服務之間的資料傳輸速率。

  • 如果您的預設 Azure OpenAI TPM (每分鐘權杖數) 限制 (如配額與限制文件中所發佈) 大於預設,請向 Azure AI 搜尋服務小組開啟支援案例,因此可據以調整。 這可協助您的編製索引程序不會因記載的預設 TPM 限制而不必要地變慢 (如果您的限制較高)。

  • 如需使用此技能的範例和運作程式碼範例,請參閱下列連結:

錯誤和警告

Condition 結果
Null 或無效的 URI 錯誤
Null 或無效的 deploymentID 錯誤
文字是空的 警告
文字大於 8,000 個權杖 錯誤

另請參閱