Azure Vision multimodal embeddings skill (preview)

Note

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

Important

標記(預覽)的功能、能力或屬性不受服務等級協議涵蓋,也不建議用於生產工作負載,且在正式上架前可能會有所變動或受限。 Azure AI 搜尋服務 預覽詞適用於所有預覽功能,無論是獨立功能還是一般可用功能的一部分。

Azure Vision 多模態嵌入技能(預覽版)在 Foundry Tools 中使用 Azure Vision 的多模態嵌入 API,來產生文字或影像輸入的嵌入。

對於每位索引員每日超過20份文件的交易,這項技能要求你將可計費的Microsoft Foundry資源><附加到你的技能組中。 內建技能的執行依現有 的 Foundry Tools 標準價格收費。 影像擷取也可計費,按Azure AI 搜尋服務計費。

Microsoft Foundry 資源僅用於帳單用途。 內容處理發生在由 Azure AI 搜尋服務 管理與維護的獨立資源上。 你的資料會在資源部署的 地理 區域中處理。

支援的區域

支援的區域依模式及技能與 Azure Vision 多模態嵌入 API 的連結方式而異。

方法 需求
匯入資料 精靈
  1. 在 Azure Vision 中找到支援多模態嵌入的 區域。
  2. 確認區域在Azure AI 搜尋服務中支援 AI 豐富化。
  3. 在同一區域建立一個Azure AI 搜尋服務服務和 Azure AI 多服務帳號。
程式化,使用 基於金鑰的連線 來計費
  1. 在 Azure Vision 中找到支援多模態嵌入的 區域。
  2. 確認區域在Azure AI 搜尋服務中支援 AI 豐富化。
  3. 在同一區域建立 Azure AI 搜尋服務 服務和 Microsoft Foundry 資源。
程式化,使用 無鑰匙連接 來計費 沒有同區域限制。 在任何有每個服務可用的地區建立Azure AI 搜尋服務服務並Microsoft Foundry 資源。

@odata.type

Microsoft.Skills.Vision.VectorizeSkill

資料限制

該技能的輸入限制可在 Azure視覺文件中找到圖片與文字。 如果你需要資料分塊來輸入文字,可以考慮使用 Text Split 技能 。

適用的輸入包括:

  • 影像輸入檔案大小必須小於 20 MB(MB)。 影像尺寸必須大於10 x 10像素,且小於16,000 x 16,000像素。
  • 文字輸入字串必須介於(包含)一個字到70個字之間。

技能參數

參數依大小寫區分。

輸入 Description
modelVersion (必修)模型版本(2023-04-15)將傳遞給 Azure Vision 多模態嵌入 API,用於產生嵌入。 向量嵌入只有在相同模型類型中才能比較和匹配。 一個模型向量化的影像,在另一個模型中無法搜尋。 最新的影像分析 API 提供兩種模型:
  • 該 2023-04-15 版本支援多種語言的文字搜尋。 Azure AI 搜尋服務 使用此版本。
  • 舊 2022-04-11 版,僅支援英文。

技能輸入

技能定義輸入包括名稱、來源與輸入。 下表提供了輸入名稱的有效值。 你也可以指定遞迴輸入。 欲了解更多資訊,請參閱 REST API 參考文獻 及 建立技能組。

輸入 Description
text 輸入文字要向量化。 如果你使用資料分塊,來源可能是 /document/pages/*。
image 複雜類型。 目前只能用「/document/normalized_images」欄位,該欄位由 Azure blob 索引器產生,當 imageAction 設定為非 none 時。
url 下載圖片的網址,需向量化。
queryString 下載圖片向量所需的 URL 查詢字串。 如果你把 URL 和 SAS 令牌分別存放在不同路徑,這很有用。

技能的單一實例只能設定一個 text,image或url/queryString。 如果你想在同一技能組內同時將圖片和文字向量化,可以在技能組定義中包含兩個這個技能的實例,分別對應你想使用的每種輸入類型。

技能產出

Output Description
vector 輸出輸入文字或圖像的浮點數嵌入陣列。

範例定義

對於文字輸入,考慮一個包含以下內容的 blob:

{
    "content": "Forests, grasslands, deserts, and mountains are all part of the Patagonian landscape that spans more than a million square  kilometers of South America."
}

對於文字輸入,你的技能定義可能如下:

{ 
    "@odata.type": "#Microsoft.Skills.Vision.VectorizeSkill", 
    "context": "/document", 
    "modelVersion": "2023-04-15", 
    "inputs": [ 
        { 
            "name": "text", 
            "source": "/document/content" 
        } 
    ], 
    "outputs": [ 
        { 
            "name": "vector",
            "targetName": "text_vector"
        } 
    ] 
} 

針對圖片輸入,同一技能組的第二個技能定義可能如下:

{
    "@odata.type": "#Microsoft.Skills.Vision.VectorizeSkill",
    "context": "/document/normalized_images/*",
    "modelVersion": "2023-04-15", 
    "inputs": [
        {
            "name": "image",
            "source": "/document/normalized_images/*"
        }
    ],
    "outputs": [
        {
            "name": "vector",
            "targetName": "image_vector"
        }
    ]
}

如果你想直接從 blob 儲存資料來源向量化圖片,而不是在索引時擷取圖片,技能定義應該指定一個網址,或許還會根據儲存安全性指定一個 SAS 令牌。 在這種情況下,你的技能定義可能如下:

{
    "@odata.type": "#Microsoft.Skills.Vision.VectorizeSkill",
    "context": "/document",
    "modelVersion": "2023-04-15", 
    "inputs": [
        {
            "name": "url",
            "source": "/document/metadata_storage_path"
        },
        {
            "name": "queryString",
            "source": "/document/metadata_storage_sas_token"
        }
    ],
    "outputs": [
        {
            "name": "vector",
            "targetName": "image_vector"
        }
    ]
}

範例輸出

對於給定的輸入,會產生一個向量化的嵌入輸出。 輸出為 1,024 維度,這是 Azure Vision 多模態 API 所支援的維度數。

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

輸出存在於記憶體中。 要將這個輸出傳送到搜尋索引中的欄位,你必須定義一個 outputFieldMapping ,將向量化嵌入的輸出(即陣列)映射到 向量場。 假設技能輸出位於文件的 向量 節點,且 content_vector 是搜尋索引中的欄位,索引器中的 outputFieldMapping 應該是:

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

將影像嵌入映射到索引時,你會使用 索引投影。 的 indexProjections 有效載荷可能像以下範例。 image_content_vector 是索引中的一個欄位,裡面填充的是 normalized_images 陣列向量中的內容。

"indexProjections": {
    "selectors": [
        {
            "targetIndexName": "myTargetIndex",
            "parentKeyFieldName": "ParentKey",
            "sourceContext": "/document/normalized_images/*",
            "mappings": [
                {
                    "name": "image_content_vector",
                    "source": "/document/normalized_images/*/vector"
                }
            ]
        }
    ]
}

另請參閱