Delen via


Afbeelding ophalen met behulp van multimodale insluitingen (versie 4.0)

De multimodale insluitings-API's maken de vectorisatie van afbeeldingen en tekstquery's mogelijk. Ze converteren afbeeldingen naar coördinaten in een multidimensionale vectorruimte. Vervolgens kunnen binnenkomende tekstquery's ook worden geconverteerd naar vectoren en kunnen afbeeldingen worden vergeleken met de tekst op basis van semantische nabijheid. Hierdoor kan de gebruiker in een set afbeeldingen zoeken met behulp van tekst, zonder dat ze afbeeldingstags of andere metagegevens hoeven te gebruiken. Semantische closeness produceert vaak betere resultaten in de zoekopdracht.

De 2024-02-01 API bevat een multi-lingual model dat ondersteuning biedt voor zoeken in tekst in 102 talen. Het oorspronkelijke engelse model is nog steeds beschikbaar, maar kan niet worden gecombineerd met het nieuwe model in dezelfde zoekindex. Als u tekst en afbeeldingen met het model alleen-Engels vectoren gebruikt, zijn deze vectoren niet compatibel met meertalige tekst- en afbeeldingsvectoren.

Belangrijk

Deze API's zijn alleen beschikbaar in bepaalde geografische regio's. Zie beschikbaarheid van regio's.

Vereisten

  • Azure-abonnement: Krijg een gratis abonnement
  • Zodra u uw Azure-abonnement hebt, maakt u een Computer Vision-resource in Azure Portal om uw sleutel en eindpunt op te halen. Zorg ervoor dat u deze maakt in een van de ondersteunde geografische regio's: zie Beschikbaarheid van regio's.
    • Nadat de app is geïmplementeerd, selecteert u Ga naar resource. Kopieer de sleutel en het eindpunt naar een tijdelijke locatie om later te gebruiken.

Multimodale insluitingen uitproberen

U kunt de functie Multimodal embeddings snel en eenvoudig uitproberen in uw browser met behulp van Vision Studio.

Belangrijk

De Vision Studio-ervaring is beperkt tot 500 afbeeldingen. Als u een grotere installatiekopieënset wilt gebruiken, maakt u uw eigen zoektoepassing met behulp van de API's in deze handleiding.

De Vectorize Image-API aanroepen

Met de retrieval:vectorizeImage API kunt u de gegevens van een afbeelding converteren naar een vector. Als u deze wilt aanroepen, moet u de volgende wijzigingen aanbrengen in de cURL-opdracht hieronder:

  1. Vervang <endpoint> door uw Azure AI Vision-eindpunt.
  2. Vervang door <subscription-key> uw Azure AI Vision-sleutel.
  3. Stel "url" in de hoofdtekst van de aanvraag in op de URL van een externe afbeelding die u wilt gebruiken.
  4. U kunt de model-version parameter desgewenst wijzigen in een oudere versie. 2022-04-11 is het verouderde model dat alleen Ondersteuning biedt voor Engelse tekst. Afbeeldingen en tekst die met een bepaald model zijn gevectoriseerd, zijn niet compatibel met andere modellen, dus zorg ervoor dat u hetzelfde model voor beide gebruikt.
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'
}"

Als u een lokale afbeelding wilt vectoriseren, plaatst u de binaire gegevens in de hoofdtekst van de HTTP-aanvraag.

De API-aanroep retourneert een vector JSON-object, waarmee de coördinaten van de afbeelding in de hoogdimensionale vectorruimte worden gedefinieerd.

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

De Vectorize Text-API aanroepen

Met de retrieval:vectorizeText API kunt u een tekenreeks converteren naar een vector. Als u deze wilt aanroepen, moet u de volgende wijzigingen aanbrengen in de cURL-opdracht hieronder:

  1. Vervang <endpoint> door uw Azure AI Vision-eindpunt.
  2. Vervang door <subscription-key> uw Azure AI Vision-sleutel.
  3. Stel "text" in de hoofdtekst van de aanvraag in op de voorbeeldzoekterm die u wilt gebruiken.
  4. U kunt de model-version parameter desgewenst wijzigen in een oudere versie. 2022-04-11 is het verouderde model dat alleen Ondersteuning biedt voor Engelse tekst. Afbeeldingen en tekst die met een bepaald model zijn gevectoriseerd, zijn niet compatibel met andere modellen, dus zorg ervoor dat u hetzelfde model voor beide gebruikt.
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'
}"

De API-aanroep retourneert een vector-JSON-object , waarmee de coördinaten van de tekenreeks in de hoogdimensionale vectorruimte worden gedefinieerd.

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

Vector-gelijkenis berekenen

Cosinus-gelijkenis is een methode voor het meten van de gelijkenis van twee vectoren. In een scenario voor het ophalen van afbeeldingen vergelijkt u de zoekqueryvector met de vector van elke afbeelding. Afbeeldingen die boven een bepaalde drempelwaarde van gelijkenis liggen, kunnen vervolgens worden geretourneerd als zoekresultaten.

Met de volgende voorbeeldcode wordt de cosinus-gelijkenis tussen twee vectoren berekend. Het is aan u om te bepalen welke gelijkenisdrempel moet worden gebruikt voor het retourneren van afbeeldingen als zoekresultaten.

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

Volgende stap