使用多模式內嵌進行影像擷取 (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);
}