Azure Yapay Zeka Arama'da vektör sorgusu oluşturma

Not

Azure Yapay Zeka Arama Azure portalı, REST API'leri ve Azure SDK’ları aracılığıyla kullanılabilir. Ayrıca kuruluş içeriğini Microsoft Foundry portalındaki aracılar için yeniden kullanılabilir, izin kullanan bilgi bankalarına dönüştüren yönetilen bilgi katmanı Foundry IQ'yu temel alır.

Azure Yapay Zeka Arama'da vector dizininiz varsa, bu makalede şunların nasıl yapılacağını açıklanmaktadır:

Bu makalede çizim için REST kullanılır. Temel iş akışını anladıktan sonra, vektör sorguları içeren uçtan uca çözümler sağlayan azure-search-vector-samples deposundaki Azure SDK kod örnekleriyle devam edin.

Azure portalında Search Explorer da kullanabilirsiniz.

Önkoşullar

Sorgu dizesi girişini vektöre dönüştürme

Vektör alanını sorgulamak için sorgunun kendisi bir vektör olmalıdır.

Kullanıcının metin sorgu dizesini vektör gösterimine dönüştürmeye yönelik bir yaklaşım, uygulama kodunuzda bir ekleme kitaplığını veya API'yi çağırmaktır. En iyi yöntem olarak, her zaman kaynak belgelere ekleme oluşturmak için kullanılan aynı ekleme modellerini kullanın. Gömme oluşturmanın nasıl yapılacağını gösteren kod örneklerini azure-search-vector-samples deposunda bulabilirsiniz.

İkinci yaklaşım ise artık genel olarak kullanılabilir olan tümleşik vektörleştirmeyi kullanarak, Azure AI Arama'nın sorgu vektörleştirme girişlerinizi ve çıkışlarınızı işlemesine olanak tanımaktır.

Aşağıda, Azure OpenAI ekleme modelinin dağıtımına gönderilen sorgu dizesinin REST API örneği verilmiştir:

POST https://{{openai-service-name}}.openai.azure.com/openai/deployments/{{openai-deployment-name}}/embeddings?api-version={{openai-api-version}}
Content-Type: application/json
api-key: {{admin-api-key}}
{
    "input": "what azure services support generative AI'"
}

Dağıtılan modele başarılı bir çağrı için beklenen yanıt 202'dir.

Yanıtın embedding gövdesindeki alan, sorgu dizesinin inputvektör gösterimidir. Test amacıyla, sonraki birkaç bölümde gösterilen söz dizimini kullanarak dizinin embedding değerini bir sorgu isteğinde vectorQueries.vector içine kopyalayabilirsiniz.

Dağıtılan modele yapılan bu POST çağrısının gerçek yanıtı 1.536 ekleme içerir. Okunabilirlik için bu örnekte yalnızca ilk birkaç vektör gösterilir.

{
    "object": "list",
    "data": [
        {
            "object": "embedding",
            "index": 0,
            "embedding": [
                -0.009171937,
                0.018715322,
                ...
                -0.0016804502
            ]
        }
    ],
    "model": "ada",
    "usage": {
        "prompt_tokens": 7,
        "total_tokens": 7
    }
}

Bu yaklaşımda uygulama kodunuz bir modele bağlanmak, eklemeler oluşturmak ve yanıtı işlemekle sorumludur.

Vektör sorgu isteği

Bu bölümde vektör sorgusunun temel yapısı gösterilmektedir. Vektör sorgusunu formüle etmek için Azure portalını, REST API'lerini veya Azure SDK’ları kullanabilirsiniz.

2023-07-01-preview sürümünden geçiş yapıyorsanız, önemli değişiklikler vardır. Daha fazla bilgi için bkz. En son REST API'ye yükseltme.

Kararlı sürüm aşağıdakileri destekler:

  • vectorQueries , vektör araması için yapıdır.
  • vectorQueries.kind vector bir vektör dizisi için veya text girişin bir dize olup olmadığını ve vektörleştiriciniz olup olmadığını olarak ayarlayın.
  • vectorQueries.vector sorgudur (metin veya görüntünün vektör gösterimi).
  • vectorQueries.exhaustive (isteğe bağlı) alan HNSW için dizinlenmiş olsa bile sorgu zamanında kapsamlı KNN'yi çağırır.
  • vectorQueries.fields (isteğe bağlı) sorgu yürütme için belirli alanları hedefler (sorgu başına en fazla 10).
  • vectorQueries.weight (isteğe bağlı) arama işlemlerine dahil edilen her vektör sorgusunun göreli ağırlığını belirtir. Daha fazla bilgi için bkz . Vektör ağırlığı.
  • vectorQueries.k döndürülecek eşleşme sayısıdır.

Aşağıdaki örnekte vektör şu dizenin bir gösterimidir: "what Azure services support full text search". Sorgu contentVector alanını hedefler ve k sonuçlar döndürür. Gerçek vektör, okunabilirlik için bu örnekte kırpılan 1.536 eklemeye sahiptir.

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-04-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
    "count": true,
    "select": "title, content, category",
    "vectorQueries": [
        {
            "kind": "vector",
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "exhaustive": true,
            "fields": "contentVector",
            "weight": 0.5,
            "k": 5
        }
    ]
}

Vektör sorgusu yanıtı

Azure Yapay Zeka Arama sorgu yanıtları varsayılan olarak tüm retrievable alanlarından oluşur. Ancak, arama sonuçlarını bir deyimde listeleyerek alanların bir alt kümesiyle retrievable sınırlamak yaygın bir select durumdır.

Vektör sorgusunda, yanıttaki alanları vektöre almanız gerekip gerekmediğini dikkatle göz önünde bulundurun. Vektör alanları insan tarafından okunamaz, bu nedenle bir web sayfasına yanıt gönderirken sonucu temsil eden seçici olmayan alanları seçmeniz gerekir. Örneğin, sorgu contentVector üzerinde yürütülürse, yerine content döndürebilirsiniz.

Sonuçta vektör alanlarının olmasını istiyorsanız, yanıt yapısına bir örnek aşağıda verilmiştır. contentVector , bu örnekte okunabilirlik için kırpılan bir ekleme dizesi dizisidir. Arama puanı ilgi düzeyini gösterir. Bağlam için diğer nonvector alanları dahil edilir.

{
    "@odata.count": 3,
    "value": [
        {
            "@search.score": 0.80025613,
            "title": "Azure Search",
            "category": "AI + Machine Learning",
            "contentVector": [
                -0.0018343845,
                0.017952163,
                0.0025753193,
                ...
            ]
        },
        {
            "@search.score": 0.78856903,
            "title": "Azure Application Insights",
            "category": "Management + Governance",
            "contentVector": [
                -0.016821077,
                0.0037742127,
                0.016136652,
                ...
            ]
        },
        {
            "@search.score": 0.78650564,
            "title": "Azure Media Services",
            "category": "Media",
            "contentVector": [
                -0.025449317,
                0.0038463024,
                -0.02488436,
                ...
            ]
        }
    ]
}

Önemli noktalar:

  • k en yakın kaç komşu sonucunun döndürüleceğini (bu örnekte üç) belirler. Vektör sorguları, bazı belgelerin benzerliği düşük olsa bile en azından k belgelerin mevcut olduğunu varsayarak her zaman sonuç döndürürk. Bunun nedeni, algoritmanın k sorgu vektörüne en yakın komşuları bulmasıdır.

  • Vektör arama algoritması öğesini @search.scorebelirler.

  • Arama sonuçlarındaki alanlar, ya retrievable alanlarının tümü ya da bir select tümcesindeki alanlardır. Vektör sorgu yürütmesi sırasında, yalnızca vektör verilerinde eşleştirme yapılır. Ancak, yanıt bir dizindeki herhangi retrievable bir alanı içerebilir. Vektör alanı sonucunun kodunu çözme olanağı olmadığından, nonvector metin alanlarının eklenmesi, insan tarafından okunabilen değerleri için yararlıdır.

Birden çok vektör alanı

özelliğini birden çok vektör alanına ayarlayabilirsiniz vectorQueries.fields . Vektör sorgusu, listede sağladığınız fields her vektör alanında yürütülür. En fazla 10 alan belirtebilirsiniz.

Birden çok vektör alanını sorgularken, her birinin aynı ekleme modelinden eklemeler içerdiğinden emin olun. Sorgu aynı ekleme modelinden de oluşturulmalıdır.

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-04-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
    "count": true,
    "select": "title, content, category",
    "vectorQueries": [
        {
            "kind": "vector",
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "exhaustive": true,
            "fields": "contentVector, titleVector",
            "k": 5
        }
    ]
}

Birden çok vektör sorgusu

Çok sorgulu vektör araması, arama dizininizdeki birden çok vektör alanında birden çok sorgu gönderir. Bu sorgu türü, aynı modelin hem metni hem de resimleri vektörleştirebildiği çok modüllü arama için CLIP gibi modellerde yaygın olarak kullanılır.

Aşağıdaki sorgu örneği, hem myImageVector hem de myTextVector'de benzerlik ararken, her biri paralel olarak çalışan iki ilgili sorgu gömme işlemi gönderir. Bu sorgunun sonucu karşılıklı rank fusion (RRF) kullanılarak puanlanır.

  • vectorQueries bir dizi vektör sorgusu sağlar.
  • vector arama dizinindeki görüntü vektörlerini ve metin vektörlerini içerir. Her örnek ayrı bir sorgudur.
  • fields hedeflenen vektör alanını belirtir.
  • k sonuçlara dahil etmek için en yakın komşu eşleşmelerinin sayısıdır.
{
    "count": true,
    "select": "title, content, category",
    "vectorQueries": [
        {
            "kind": "vector",
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "myimagevector",
            "k": 5
        },
        {
            "kind": "vector"
            "vector": [
                -0.002222222,
                0.018708462,
                -0.013770515,
            . . .
            ],
            "fields": "mytextvector",
            "k": 5
        }
    ]
}

Arama dizinleri görüntüleri depolayamaz. Dizininizin görüntü dosyası için bir alan içerdiği varsayıldığında, arama sonuçları metin ve görüntülerin bir bileşimini içerir.

Tümleşik vektörleştirme ile sorgulama

Bu bölümde, bir metin veya görüntü sorgusunu vektöre dönüştürmek için tümleşik vektörleştirmeyi çağıran bir vektör sorgusu gösterilir. Bu özellik için kararlı 2026-04-01 REST API, Arama Gezgini veya daha yeni Azure SDK paketleri öneririz.

Önkoşul, vektörleştirici yapılandırılmış ve bir vektör alanına atanmış bir arama dizinidir. Vektörleştirici, sorgu zamanında kullanılan bir ekleme modeline bağlantı bilgileri sağlar.

Arama Gezgini, sorgu zamanında tümleşik vektörleştirmeyi destekler. Dizininiz vektör alanları içeriyorsa ve vektörleştiricisi varsa, yerleşik metinden vektöre dönüştürmeyi kullanabilirsiniz.

  1. Azure portalında arama hizmetinize gidin.

  2. Sol menüden Arama yönetimi>Dizinleri'ni ve ardından dizininizi seçin.

  3. Vektörleştiriciniz olduğunu onaylamak için Vektör profilleri sekmesini seçin.

    Arama dizinindeki vektörleştirici ayarının ekran görüntüsü.

  4. Arama gezgini sekmesini seçin. Varsayılan sorgu görünümünü kullanarak arama çubuğuna bir metin dizesi girebilirsiniz. Yerleşik vektörleştiricisi dizenizi bir vektöre dönüştürür, aramayı gerçekleştirir ve sonuçları döndürür.

    Alternatif olarak, sorguyu görüntülemek veya değiştirmek içinJSON görünümünü> seçebilirsiniz. Vektörler varsa, Arama Gezgini otomatik olarak bir vektör sorgusu ayarlar. Arama ve yanıtta kullanılacak alanları seçmek, filtreler eklemek ve karma sorgular gibi daha gelişmiş sorgular oluşturmak için JSON görünümünü kullanabilirsiniz. JSON örneğini görmek için bu bölümdeki REST API sekmesini seçin.

Vektör sorgusu yanıtında dereceli sonuç sayısı

Vektör sorgusu, sonuçlarda k kaç eşleşme döndürüleceğini belirleyen parametresini belirtir. Arama motoru her zaman k eşleşme sayısını döndürür. Dizindeki belge sayısından büyükse k , belge sayısı döndürülebileceklerin üst sınırını belirler.

Tam metin araması hakkında bilginiz varsa, dizinde terim veya tümcecik yoksa sıfır sonuç beklemeniz gerekir. Ancak vektör aramasında, arama işlemi en yakın komşuları tanımlar ve en yakın komşular bu kadar benzer olmasa bile her zaman sonuç döndürür k . Özellikle sınırları ayarlamak için istem kullanmıyorsanız, önemli olmayan veya konu dışı sorgular için sonuçlar alabilirsiniz. Daha az ilgili sonuçlar daha kötü bir benzerlik puanına sahiptir, ancak daha yakın bir şey yoksa yine de "en yakın" vektörlerdir. Bu nedenle, anlamlı sonuç içermeyen bir yanıt yine de sonuç döndürebilir k , ancak her sonucun benzerlik puanı düşük olacaktır.

Tam metin araması içeren karma bir yaklaşım bu sorunu hafifletebilir. Bir diğer çözüm de, yalnızca sorgu tek bir vektör sorgusuysa arama puanında en düşük eşiği ayarlamaktır. Karma sorgular en düşük eşiklere uygun değildir çünkü RRF aralıkları çok daha küçük ve daha geçicidir.

Sonuç sayısını etkileyen sorgu parametreleri şunlardır:

  • "k": n yalnızca vektör sorguları için sonuçlar.
  • "top": n bir parametre içeren search karma sorgular için sonuçlar.

Hem k hem de top isteğe bağlıdır. Belirtilmediğinde, yanıttaki varsayılan sonuç sayısı 50'dir. top ve skip daha fazla sonuç arasında sayfalamak veya varsayılanı değiştirmek için ayarlayabilirsiniz.

Vektör sorgusunda kullanılan derecelendirme algoritmaları

Sonuçların derecelendirmesi aşağıdakilerden biri tarafından hesaplanır:

  • Benzerlik ölçümü.
  • Birden çok arama sonucu kümesi varsa RRF.

Benzerlik ölçümü

Yalnızca vektör sorgusu için dizin vectorSearch bölümünde belirtilen benzerlik ölçümü. Geçerli değerler : cosine, euclideanve dotProduct.

Azure OpenAI ekleme modellerinde kosinüs benzerliği kullanılır, bu nedenle Azure OpenAI ekleme modelleri kullanıyorsanız önerilen ölçüm cosine'dir. Desteklenen diğer derecelendirme ölçümleri şunlardır euclidean : ve dotProduct.

RRF

Sorgu birden çok vektör alanını hedeflediyse, birden çok vektör sorgusunu paralel olarak çalıştırıyorsa veya anlamsal derecelendirmeyle veya sıralama olmadan vektör ve tam metin aramasının karmasıysa birden çok küme oluşturulur.

Sorgu yürütme sırasında vektör sorgusu yalnızca bir iç vektör dizinini hedefleyebilir. Birden çok vektör alanı ve birden çok vektör sorgusu için, arama altyapısı her alanın ilgili vektör dizinlerini hedefleyen birden çok sorgu oluşturur. Çıkış, her sorgu için RRF kullanılarak birleştirilmiş dereceli sonuçlar kümesidir. Daha fazla bilgi için bkz Reciprocal Rank Fusion kullanarak ilgi puanlama.

Vektör ağırlıklama

Arama işlemlerine dahil edilen her vektör sorgusunun göreli kalınlığını belirtmek için bir weight sorgu parametresi ekleyin. Bu değer, aynı istekte veya karma sorgunun vektör bölümünden iki veya daha fazla vektör sorgusu tarafından oluşturulan birden çok derecelendirme listesinin sonuçları birleştirildiğinde kullanılır.

Varsayılan değer 1,0'dır ve değer sıfırdan büyük pozitif bir sayı olmalıdır.

Ağırlıklar, her belgenin RRF puanları hesaplanırken kullanılır. Hesaplama, ilgili sonuç kümesindeki belgenin weight derecelendirme puanıyla değerin çarpanıdır.

Aşağıdaki örnek, iki vektör sorgu dizesi ve bir metin dizesi içeren karma sorgudur. Ağırlıklar vektör sorgularına atanır. İlk sorgu, 0,5 veya ağırlığın yarısı kadar olduğundan, istekteki önemini azaltır. İkinci vektör sorgusu iki kat daha önemlidir.

POST https://[service-name].search.windows.net/indexes/[index-name]/docs/search?api-version=2026-04-01

    { 
      "vectorQueries": [ 
        { 
          "kind": "vector", 
          "vector": [1.0, 2.0, 3.0], 
          "fields": "my_first_vector_field", 
          "k": 10, 
          "weight": 0.5 
        },
        { 
          "kind": "vector", 
          "vector": [4.0, 5.0, 6.0], 
          "fields": "my_second_vector_field", 
          "k": 10, 
          "weight": 2.0
        } 
      ], 
      "search": "hello world" 
    } 

Vektör ağırlıklama yalnızca vektörler için geçerlidir. Bu örnekteki "hello world"metin sorgusunun örtük nötr ağırlığı 1,0'dır. Ancak, karma sorguda maxTextRecallSize ayarını yaparak metin alanlarının önemini artırabilir veya azaltabilirsiniz.

Düşük puanlama sonuçlarını dışlamak için eşikleri ayarlama (önizleme)

En yakın komşu araması her zaman istenen k komşuları döndürdüğünden, arama sonuçlarındaki k sayı gereksinimini karşılamak için birden çok düşük puanlı eşleşme elde edilebilir. Düşük puanlı arama sonuçlarını dışlamak için, sonuçları en düşük puana göre filtreleyen bir threshold sorgu parametresi ekleyebilirsiniz. Filtreleme, farklı geri çağırma kümelerinden sonuçların birleştirilmesinden önce gerçekleşir.

Bu parametre önizleme aşamasındadır. Belgeler - Arama Gönderisi'nin (REST API) en son önizleme sürümünü öneririz.

Bu örnekte, 0,8'in altındaki tüm eşleşmeler, sonuç sayısı altına kdüşse bile vektör arama sonuçlarından dışlanır.

POST https://[service-name].search.windows.net/indexes/[index-name]/docs/search?api-version=2026-08-01-preview
    Content-Type: application/json 
    api-key: [admin key] 

    { 
      "vectorQueries": [ 
        { 
          "kind": "vector", 
          "vector": [1.0, 2.0, 3.0], 
          "fields": "my-cosine-field", 
          "threshold": { 
            "kind": "vectorSimilarity", 
            "value": 0.8 
          } 
        }
      ]
    }

Sonraki adımlar

Sonraki adım olarak Python, C# veya JavaScript içindeki vektör sorgu kodu örneklerini gözden geçirin.