使用多模式內嵌進行影像擷取 (4.0 版)

多模式內嵌 API 可讓您 向量化 影像和文字查詢。 其會將影像轉換成多維度向量空間中的座標。 然後,傳入的文字查詢也可以轉換成向量,且影像可以根據語意接近程度來比對文字。 這可讓使用者使用文字搜尋一組影像,而不需要使用影像標籤或其他中繼資料。 語意接近程度通常會在搜尋中產生更好的結果。

2024-02-01 API 包含多語種模型,可支援 102 種語言的文字搜尋。 原始的英文模型仍可供使用,但無法與相同搜尋索引中的新模型合併。 如果您使用僅限英文模型向量化文字和影像,則這些向量與多語系文字和影像向量不相容。

重要

這些 API 僅適用於下列地理區域:美國東部、法國中部、南韓中部、北歐、東南亞、西歐、美國西部。

必要條件

  • Azure 訂用帳戶 - 建立免費帳戶
  • 擁有 Azure 訂用帳戶之後,請在 Azure 入口網站 中建立 電腦視覺 資源,以取得您的密鑰和端點。 請務必在其中一個允許的地理區域中建立它:美國東部、法國中部、韓國中部、北歐、東南亞、西歐、美國西部。
    • 在其部署後,選取 [前往資源]。 將金鑰和端點複製到暫存位置,以便稍後使用。

試用多模式內嵌

您可以使用 Vision Studio 快速且輕鬆地在瀏覽器中試用多模式內嵌功能。

重要

Vision Studio 體驗限制為 500 個影像。 若要使用較大的映像集,請使用本指南中的 API 建立您自己的搜尋應用程式。

呼叫向量化影像 API

retrieval:vectorizeImage API 可讓您將影像的數據轉換成向量。 若要呼叫它,請對下列 cURL 命令進行下列變更:

  1. 使用您的 Azure AI 視覺端點取代 <endpoint>
  2. 使用您的 Azure AI 視覺金鑰取代 <subscription-key>
  3. 在要求本文中,將 設定 "url" 為您想要使用的遠端影像 URL。
  4. 或者,將 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 命令進行下列變更:

  1. 使用您的 Azure AI 視覺端點取代 <endpoint>
  2. 使用您的 Azure AI 視覺金鑰取代 <subscription-key>
  3. 在要求本文中,將 設定 "text" 為您想要使用的範例搜尋字詞。
  4. 或者,將 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);
}

下一步

影像擷取概念