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資源><
Microsoft Foundry 資源僅用於帳單用途。 內容處理發生在由 Azure AI 搜尋服務 管理與維護的獨立資源上。 你的資料會在資源部署的 地理 區域中處理。
支援的區域
支援的區域依模式及技能與 Azure Vision 多模態嵌入 API 的連結方式而異。
| 方法 | 需求 |
|---|---|
| 匯入資料 精靈 |
|
| 程式化,使用 基於金鑰的連線 來計費 |
|
| 程式化,使用 無鑰匙連接 來計費 | 沒有同區域限制。 在任何有每個服務可用的地區建立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 提供兩種模型:
|
技能輸入
技能定義輸入包括名稱、來源與輸入。 下表提供了輸入名稱的有效值。 你也可以指定遞迴輸入。 欲了解更多資訊,請參閱 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"
}
]
}
]
}