Abrufen von Bildern mithilfe von multimodalen Einbettungen (Version 4.0)
Die APIs für multimodale Einbettungen ermöglichen die Vektorisierung von Bild- und Textabfragen. Sie konvertieren Bilder in Koordinaten in einem mehrdimensionalen Vektorraum. Dann können eingehende Textabfragen auch in Vektoren konvertiert werden, und Bilder können basierend auf semantischer Nähe mit dem Text abgeglichen werden. Dadurch kann der Benutzer eine Reihe von Bildern mithilfe von Text durchsuchen, ohne dass Bildtags oder andere Metadaten verwendet werden müssen. Die semantische Nähe führt häufig zu besseren Ergebnissen in der Suche.
Die 2024-02-01
-API enthält ein mehrsprachiges Modell, das die Textsuche in 102 Sprachen unterstützt. Das ursprüngliche englischsprachige Modell ist weiterhin verfügbar, kann aber nicht mit dem neuen Modell im selben Suchindex kombiniert werden. Wenn Sie Text und Bilder mit dem rein englischsprachigen Modell vektorisiert haben, sind diese Vektoren nicht mit mehrsprachigen Text- und Bildvektoren kompatibel.
Wichtig
Diese APIs sind nur in bestimmten geografischen Regionen verfügbar. Weitere Informationen finden Sie unter Regionale Verfügbarkeit.
Voraussetzungen
- Azure-Abonnement – Erstellen eines kostenlosen Kontos
- Sobald Sie über Ihr Azure-Abonnement verfügen, können Sie im Azure-Portal eine Ressource für maschinelles Sehen erstellen , um Ihren Schlüssel und Endpunkt zu erhalten. Achten Sie darauf, sie in einer der unterstützten geografischen Regionen zu erstellen: Siehe Regionsverfügbarkeit.
- Wählen Sie nach Abschluss der Bereitstellung Zu Ressource wechseln aus. Kopieren Sie Schlüssel und Endpunkt für die spätere Verwendung an einen temporären Speicherort.
Testen multimodaler Einbettungen
Sie können das Feature für multimodale Einbettungen mithilfe von Vision Studio schnell und einfach in Ihrem Browser ausprobieren.
Wichtig
Die Vision Studio-Umgebung ist auf 500 Bilder beschränkt. Wenn Sie einen größeren Satz Bilder verwenden möchten, erstellen Sie Ihre eigene Suchanwendung mithilfe der in diesem Handbuch behandelten APIs.
Aufruf der API „Bild vektorisieren“
Mit der retrieval:vectorizeImage
-API können Sie die Daten eines Bilds in einen Vektor konvertieren. Nehmen Sie zum Aufrufen die folgenden Änderungen am cURL-Befehl unten vor:
- Ersetzen Sie
<endpoint>
durch Ihren Azure KI Vision-Endpunkt. - Ersetzen Sie
<subscription-key>
durch Ihren Azure KI Vision-Schlüssel. - Legen Sie im Anforderungstext
"url"
auf die URL eines Remote-Bilds fest, das Sie verwenden wollen. - Ändern Sie optional den
model-version
-Parameter in eine ältere Version.2022-04-11
ist das Legacymodell, das nur englischen Text unterstützt. Bilder und Text, die mit einem bestimmten Modell vektorisiert werden, sind nicht mit anderen Modellen kompatibel. Verwenden Sie daher unbedingt dasselbe Modell für beides.
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'
}"
Zum Vektorisieren eines lokalen Bilds platzieren Sie die binären Daten im HTTP-Anforderungstext.
Der API-Aufruf gibt ein Vektor-JSON-Objekt zurück, das die Koordinaten des Bilds im hochdimensionalen Vektorraum definiert.
{
"modelVersion": "2022-04-11",
"vector": [ -0.09442752, -0.00067171326, -0.010985051, ... ]
}
Aufruf der API „Text vektorisieren“
Mit der retrieval:vectorizeText
-API können Sie eine Textzeichenfolge in einen Vektor konvertieren. Nehmen Sie zum Aufrufen die folgenden Änderungen am cURL-Befehl unten vor:
- Ersetzen Sie
<endpoint>
durch Ihren Azure KI Vision-Endpunkt. - Ersetzen Sie
<subscription-key>
durch Ihren Azure KI Vision-Schlüssel. - Legen Sie im Anforderungstext
"text"
auf den Beispielsuchbegriff fest, den Sie verwenden möchten. - Ändern Sie optional den
model-version
-Parameter in eine ältere Version.2022-04-11
ist das Legacymodell, das nur englischen Text unterstützt. Bilder und Text, die mit einem bestimmten Modell vektorisiert werden, sind nicht mit anderen Modellen kompatibel. Verwenden Sie daher unbedingt dasselbe Modell für beides.
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'
}"
Der API-Aufruf gibt ein Vektor-JSON-Objekt zurück, das die Koordinaten der Textzeichenfolge im hochdimensionalen Vektorraum definiert.
{
"modelVersion": "2022-04-11",
"vector": [ -0.09442752, -0.00067171326, -0.010985051, ... ]
}
Berechnen der Vektorähnlichkeit
Die Kosinusähnlichkeit ist eine Methode zum Messen der Ähnlichkeit von zwei Vektoren. In einem Bildabrufszenario vergleichen Sie den Suchabfragevektor mit dem Vektor jedes Bilds. Bilder, die über einem bestimmten Schwellenwert der Ähnlichkeit liegen, können dann als Suchergebnisse zurückgegeben werden.
Im folgenden Beispielcode wird die Kosinusähnlichkeit zwischen zwei Vektoren berechnet. Es liegt an Ihnen, zu entscheiden, welcher Ähnlichkeitsschwellenwert für die Rückgabe von Bildern als Suchergebnisse verwendet werden soll.
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);
}