Dela via


Gör bildhämtning med multimodala inbäddningar (version 4.0)

API:er för multimodala inbäddningar möjliggör vektorisering av bilder och textfrågor. De konverterar bilder till koordinater i ett flerdimensionellt vektorutrymme. Sedan kan inkommande textfrågor också konverteras till vektorer och bilder kan matchas med texten baserat på semantisk närhet. Detta gör att användaren kan söka i en uppsättning bilder med hjälp av text, utan att behöva använda bildtaggar eller andra metadata. Semantisk närhet ger ofta bättre resultat i sökningen.

API:et 2024-02-01 innehåller en flerspråkig modell som stöder textsökning på 102 språk. Den ursprungliga modellen endast på engelska är fortfarande tillgänglig, men den kan inte kombineras med den nya modellen i samma sökindex. Om du har vektoriserat text och bilder med modellen endast på engelska är dessa vektorer inte kompatibla med flerspråkiga text- och bildvektorer.

Viktigt!

Dessa API:er är endast tillgängliga i vissa geografiska regioner. Se Regiontillgänglighet.

Förutsättningar

  • Azure-prenumeration – Skapa en kostnadsfritt
  • När du har din Azure-prenumeration skapar du en visuellt innehåll-resurs i Azure-portalen för att hämta din nyckel och slutpunkt. Se till att skapa den i en av de geografiska regioner som stöds: se Regiontillgänglighet.
    • När den har distribuerats väljer du Gå till resurs. Kopiera nyckeln och slutpunkten till en tillfällig plats som ska användas senare.

Prova multimodala inbäddningar

Du kan prova funktionen multimodala inbäddningar snabbt och enkelt i webbläsaren med hjälp av Vision Studio.

Viktigt!

Vision Studio-upplevelsen är begränsad till 500 bilder. Om du vill använda en större avbildningsuppsättning skapar du ett eget sökprogram med hjälp av API:erna i den här guiden.

Anropa API:et Vectorize Image

Med API:et retrieval:vectorizeImage kan du konvertera en bilds data till en vektor. Anropa det genom att göra följande ändringar i cURL-kommandot nedan:

  1. Ersätt <endpoint> med din Azure AI Vision-slutpunkt.
  2. Ersätt <subscription-key> med din Azure AI Vision-nyckel.
  3. I begärandetexten anger du "url" till URL:en för en fjärrbild som du vill använda.
  4. Du kan också ändra parametern model-version till en äldre version. 2022-04-11 är den äldre modellen som endast stöder engelsk text. Bilder och text som är vektoriserade med en viss modell är inte kompatibla med andra modeller, så se till att använda samma modell för båda.
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'
}"

Om du vill vektorisera en lokal bild placerar du binära data i HTTP-begärandetexten.

API-anropet returnerar ett JSON-vektorobjekt som definierar bildens koordinater i det högdimensionella vektorutrymmet.

{ 
  "modelVersion": "2022-04-11", 
  "vector": [ -0.09442752, -0.00067171326, -0.010985051, ... ] 
}

Anropa API för vektorisera text

Med API:et retrieval:vectorizeText kan du konvertera en textsträng till en vektor. Anropa det genom att göra följande ändringar i cURL-kommandot nedan:

  1. Ersätt <endpoint> med din Azure AI Vision-slutpunkt.
  2. Ersätt <subscription-key> med din Azure AI Vision-nyckel.
  3. I begärandetexten anger du "text" till den exempelsökterm som du vill använda.
  4. Du kan också ändra parametern model-version till en äldre version. 2022-04-11 är den äldre modellen som endast stöder engelsk text. Bilder och text som är vektoriserade med en viss modell är inte kompatibla med andra modeller, så se till att använda samma modell för båda.
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-anropet returnerar ett JSON-vektorobjekt som definierar textsträngens koordinater i det högdimensionella vektorutrymmet.

{ 
  "modelVersion": "2022-04-11", 
  "vector": [ -0.09442752, -0.00067171326, -0.010985051, ... ] 
}

Beräkna vektorlikhet

Cosininlikitet är en metod för att mäta likheten mellan två vektorer. I ett bildhämtningsscenario jämför du sökfrågevektorn med varje bilds vektor. Bilder som ligger över ett visst tröskelvärde för likhet kan sedan returneras som sökresultat.

I följande exempelkod beräknas cosinélikheten mellan två vektorer. Det är upp till dig att bestämma vilken likhetströskel som ska användas för att returnera bilder som sökresultat.

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);
}

Nästa steg

Begrepp för bildhämtning