使用多模式內嵌進行影像擷取 (4.0 版)
多模式內嵌 API 可讓您 向量化 影像和文字查詢。 其會將影像轉換成多維度向量空間中的座標。 然後,傳入的文字查詢也可以轉換成向量,且影像可以根據語意接近程度來比對文字。 這可讓使用者使用文字搜尋一組影像,而不需要使用影像標籤或其他中繼資料。 語意接近程度通常會在搜尋中產生更好的結果。
2024-02-01
API 包含多語種模型,可支援 102 種語言的文字搜尋。 原始的英文模型仍可供使用,但無法與相同搜尋索引中的新模型合併。 如果您使用僅限英文模型向量化文字和影像,則這些向量與多語系文字和影像向量不相容。
重要
這些 API 僅適用於下列地理區域:美國東部、法國中部、南韓中部、北歐、東南亞、西歐、美國西部。
必要條件
- Azure 訂用帳戶 - 建立免費帳戶
- 擁有 Azure 訂用帳戶之後,請在 Azure 入口網站 中建立 電腦視覺 資源,以取得您的密鑰和端點。 請務必在其中一個允許的地理區域中建立它:美國東部、法國中部、韓國中部、北歐、東南亞、西歐、美國西部。
- 在其部署後,選取 [前往資源]。 將金鑰和端點複製到暫存位置,以便稍後使用。
試用多模式內嵌
您可以使用 Vision Studio 快速且輕鬆地在瀏覽器中試用多模式內嵌功能。
重要
Vision Studio 體驗限制為 500 個影像。 若要使用較大的映像集,請使用本指南中的 API 建立您自己的搜尋應用程式。
呼叫向量化影像 API
retrieval:vectorizeImage
API 可讓您將影像的數據轉換成向量。 若要呼叫它,請對下列 cURL 命令進行下列變更:
- 使用您的 Azure AI 視覺端點取代
<endpoint>
。 - 使用您的 Azure AI 視覺金鑰取代
<subscription-key>
。 - 在要求本文中,將 設定
"url"
為您想要使用的遠端影像 URL。 - 或者,將
model-version
參數變更為舊版。2022-04-11
是僅支援英文文字的舊版模型。 使用特定模型向量化的影像和文字與其他模型不相容,因此請務必針對兩者使用相同的模型。
curl.exe -v -X POST "<endpoint>/computervision/retrieval:vectorizeImage?api-version=2024-02-01&model-version=2023-04-15" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: <subscription-key>" --data-ascii "
{
'url':'https://learn.microsoft.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png'
}"
若要向量化本機影像,您會將二進位數據放在 HTTP 要求本文中。
API 呼叫會 傳回向量 JSON 物件,此物件會定義高維度向量 空間中的影像座標。
{
"modelVersion": "2022-04-11",
"vector": [ -0.09442752, -0.00067171326, -0.010985051, ... ]
}
呼叫向量化文字 API
retrieval:vectorizeText
API 可讓您將文字字串轉換成向量。 若要呼叫它,請對下列 cURL 命令進行下列變更:
- 使用您的 Azure AI 視覺端點取代
<endpoint>
。 - 使用您的 Azure AI 視覺金鑰取代
<subscription-key>
。 - 在要求本文中,將 設定
"text"
為您想要使用的範例搜尋字詞。 - 或者,將
model-version
參數變更為舊版。2022-04-11
是僅支援英文文字的舊版模型。 使用特定模型向量化的影像和文字與其他模型不相容,因此請務必針對兩者使用相同的模型。
curl.exe -v -X POST "<endpoint>/computervision/retrieval:vectorizeText?api-version=2024-02-01&model-version=2023-04-15" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: <subscription-key>" --data-ascii "
{
'text':'cat jumping'
}"
API 呼叫會 傳回向量 JSON 物件,此物件會定義高維度向量 空間中的文字字串座標。
{
"modelVersion": "2022-04-11",
"vector": [ -0.09442752, -0.00067171326, -0.010985051, ... ]
}
計算向量相似度
餘弦相似性是測量兩個向量相似度的方法。 在影像擷取案例中,您將比較搜尋查詢向量與每個影像的向量。 然後,如果影像超過特定臨界值相似性,就可以以搜尋結果的形式傳回。
下列範例程式代碼會計算兩個向量之間的餘弦相似度。 您必須決定將影像傳回為搜尋結果的相似度閾值。
public static float GetCosineSimilarity(float[] vector1, float[] vector2)
{
float dotProduct = 0;
int length = Math.Min(vector1.Length, vector2.Length);
for (int i = 0; i < length; i++)
{
dotProduct += vector1[i] * vector2[i];
}
float magnitude1 = Math.Sqrt(vector1.Select(x => x * x).Sum());
float magnitude2 = Math.Sqrt(vector2.Select(x => x * x).Sum());
return dotProduct / (magnitude1 * magnitude2);
}