Çok modüllü eklemeleri kullanarak görüntü alma işlemi yapma (sürüm 4.0)

Multimodal embeddings API'leri, görüntülerin ve metin sorgularının vektörleştirilmesini sağlar. Görüntüleri çok boyutlu vektör uzayında koordinatlara dönüştürürler. Ardından, gelen metin sorguları vektörlere dönüştürülebilir ve görüntüler semantik yakınlık temelinde metinle eşleştirilebilir. Bu, kullanıcının resim etiketlerini veya diğer meta verileri kullanmaya gerek kalmadan metin kullanarak bir görüntü kümesinde arama yapmasına olanak tanır. Anlamsal yakınlık genellikle aramada daha iyi sonuçlar üretir.

API, 2024-02-01 102 dilde metin aramayı destekleyen çok dilli bir model içerir. Özgün yalnızca İngilizce modeli hala kullanılabilir, ancak aynı arama dizinindeki yeni modelle birleştirilemez. Yalnızca İngilizce modeli kullanarak metin ve görüntüleri vektörleştirdiyseniz, bu vektörler çok dilli metin ve görüntü vektörleriyle uyumlu olmayacaktır.

Önemli

Bu API'ler yalnızca belirli coğrafi bölgelerde kullanılabilir. Bkz. Bölge kullanılabilirliği.

Önkoşullar

Çok modüllü eklemeleri deneyin

Multimodal embeddings özelliğini Vision Studio'yu kullanarak tarayıcınızda hızlı ve kolay bir şekilde deneyebilirsiniz.

Önemli

Vision Studio deneyimi 500 resimle sınırlıdır. Daha büyük bir görüntü kümesi kullanmak için bu kılavuzdaki API'leri kullanarak kendi arama uygulamanızı oluşturun.

Vectorize Image API'sini çağırma

API, retrieval:vectorizeImage görüntünün verilerini vektöre dönüştürmenizi sağlar. Bunu çağırmak için aşağıdaki cURL komutunda aşağıdaki değişiklikleri yapın:

  1. değerini Azure AI Vision uç noktanızla değiştirin <endpoint> .
  2. değerini Azure AI Vision anahtarınız ile değiştirin <subscription-key> .
  3. İstek gövdesinde, kullanmak istediğiniz uzak görüntünün URL'sine ayarlayın "url" .
  4. İsteğe bağlı olarak, parametresini model-version eski bir sürümle değiştirin. 2022-04-11 yalnızca İngilizce metni destekleyen eski modeldir. Belirli bir modelle vektörleştirilen resimler ve metinler diğer modellerle uyumlu olmadığından her ikisi için de aynı modeli kullandığınızdan emin olun.
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://video2.skills-academy.com/azure/ai-services/computer-vision/media/quickstarts/presentation.png'
}"

Yerel görüntüyü vektörleştirmek için ikili verileri HTTP isteği gövdesine koyarsınız.

API çağrısı, görüntünün koordinatlarını yüksek boyutlu vektör alanında tanımlayan bir vektör JSON nesnesi döndürür.

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

Vectorize Metin API'sini çağırma

API, retrieval:vectorizeText bir metin dizesini vektöre dönüştürmenizi sağlar. Bunu çağırmak için aşağıdaki cURL komutunda aşağıdaki değişiklikleri yapın:

  1. değerini Azure AI Vision uç noktanızla değiştirin <endpoint> .
  2. değerini Azure AI Vision anahtarınız ile değiştirin <subscription-key> .
  3. İstek gövdesinde, kullanmak istediğiniz örnek arama terimine ayarlayın "text" .
  4. İsteğe bağlı olarak, parametresini model-version eski bir sürümle değiştirin. 2022-04-11 yalnızca İngilizce metni destekleyen eski modeldir. Belirli bir modelle vektörleştirilen resimler ve metinler diğer modellerle uyumlu olmadığından her ikisi için de aynı modeli kullandığınızdan emin olun.
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 çağrısı, metin dizesinin koordinatlarını yüksek boyutlu vektör alanında tanımlayan bir vektör JSON nesnesi döndürür.

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

Vektör benzerliğini hesaplama

Kosinüs benzerliği, iki vektör benzerliğini ölçmek için kullanılan bir yöntemdir. Görüntü alma senaryosunda, arama sorgusu vektörlerini her görüntünün vektörleriyle karşılaştıracaksınız. Belirli bir benzerlik eşiğinin üzerinde olan görüntüler arama sonuçları olarak döndürülebilir.

Aşağıdaki örnek kod, iki vektör arasındaki kosinüs benzerliğini hesaplar. Görüntüleri arama sonuçları olarak döndürmek için hangi benzerlik eşiğinin kullanılacağına karar vermek size kalmış.

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

Sonraki adım