重要
此技能在補充使用規定下處於公開預覽狀態。 2024-05-01-Preview REST API 和較新的預覽 API 支援此功能。
Azure AI 視覺多模式內嵌技能會使用 Azure AI 視覺的多模式內嵌 API 來產生影像或文字輸入的內嵌。
對於每天超過 20 份檔的交易,此技能必須 附加至可計費的 Azure AI 多服務資源 。 內建技能的執行會以現有的 Azure AI 服務標準價格收費。
此外,影像擷取是由 Azure AI 搜尋服務計費。
資源的位置是重要的考慮。 由於您使用預覽 API 版本來建立包含預覽技能的技能集,因此您可以選擇 無索引鍵連線,以放寬區域需求。 不過,如果您要使用 API 金鑰進行連線,則 Azure AI 搜尋服務和 Azure AI 多服務必須位於相同的區域中。
首先,尋找 多模式內嵌的支持區域。
其次,確認 區域提供 AI 擴充。
Azure AI 多服務資源僅供計費之用。 內容處理發生在相同地理位置內由 Azure AI 搜尋所管理和維護的不同資源上。 您的數據會在部署資源的 地理位置 中處理。
@odata.type
Microsoft.Skills.Vision.VectorizeSkill
資料限制
您可以在適用於影像和文字的 Azure AI 視覺檔 中找到技能的輸入限制。 如果您需要文字輸入的資料區塊處理,請考慮使用文字分割技能。
適用的輸入包括:
- 影像輸入檔案大小必須小於 20 MB(MB)。 影像大小必須大於 10 x 10 像素,且小於 16,000 x 16,000 像素。
- 文字輸入字串必須介於一個單字和 70 個單字之間。
技能參數
這些參數會區分大小寫。
輸入 | 描述 |
---|---|
modelVersion |
(必要)要傳遞至 Azure AI 視覺多模式內嵌 API 以產生內嵌的模型版本 (2023-04-15 )。 如果向量內嵌來自相同的模型類型,則只能進行比較和比對。 由一個模型向量化的影像無法透過不同的模型進行搜尋。 最新的影像分析 API 提供兩種模型:支援多種語言的文字搜尋版本 2023-04-15 ,以及僅支援英文的舊版 2022-04-11 模型。 Azure AI 搜尋服務會使用較新版本。 |
技能輸入
技能定義輸入包括名稱、來源和輸入。 下表提供輸入名稱的有效值。 您也可以指定遞歸輸入。 如需詳細資訊,請參閱 REST API 參考 和 建立技能集。
輸入 | 描述 |
---|---|
text |
要向量化的輸入文字。 如果您使用資料區塊處理,來源可能是 /document/pages/* 。 |
image |
複雜類型。 目前僅可搭配 "/document/normalized_images" 欄位使用,該欄位是由 Azure Blob 索引子在 imageAction 被設定為 none 以外的其他值時產生。 |
url |
下載要向量化之影像的 URL。 |
queryString |
下載要向量化之影像的 URL 查詢字串。 如果您將 URL 和 SAS 權杖儲存在個別路徑中,則很有用。 |
針對技能的單一執行個體,只能設定 text
、image
或 url
/queryString
其中之一。 如果您想要在相同技能集內同時向量化影像和文字,請在技能集定義中包含此技能的兩個執行個體,分別用於您想要使用的輸入類型。
技能輸出
輸出 | 描述 |
---|---|
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 記憶體數據源向量影像,而不是在編製索引期間擷取映射,您的技能定義應該指定 URL,而且根據記憶體安全性,或許是 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 AI 視覺多模式 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"
}
]
}
]
}