Azure Yapay Zeka Arama'de karma sorgu 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.

Important

(önizleme) olarak işaretlenen özellikler, özellikler veya özellikler hizmet düzeyi sözleşmesi kapsamında değildir, üretim iş yükleri için önerilmez ve genel kullanıma sunulmadan önce değişebilir veya kısıtlanabilir. Azure Yapay Zeka Arama önizleme terimleri, tek başına veya genel kullanıma sunulan bir özelliğin parçası olsun, tüm önizleme işlevleri için geçerlidir.

Karma arama , metin (anahtar sözcük) ve vektör sorgularını tek bir arama isteğinde birleştirir. Her iki sorgu da paralel olarak yürütülür. Sonuçlar birleştirilmiş bir sonuç kümesi döndürmek için Reciprocal Rank Fusion (RRF) kullanılarak yeni arama puanlarına göre birleştirilir ve yeniden sıralanır. Çoğu durumda karşılaştırma testlerine göre anlamsal derecelendirmeye sahip karma sorgular en uygun sonuçları döndürür.

Bu makalede şunların nasıl yapıldığını öğrenin:

  • Temel karma istek ayarlama
  • Parametre ve filtre ekleme
  • Anlamsal derecelendirme veya vektör ağırlıklarını kullanarak ilgi düzeyini geliştirme
  • Girişleri denetleyerek sorgu davranışlarını iyileştirme (maxTextRecallSize)

Bu makalenin sonunda anahtar sözcük ve vektör aramasını isteğe bağlı anlam sıralamasıyla birleştiren karma sorgular yürütebilirsiniz.

Önkoşullar

API, araç ve uygulanabilir desen seçme

  • Azure portalındaki Arama Gezgini (hem kararlı hem de önizleme API'sinin arama söz dizimini destekler) karma bir isteği yapıştırmanıza olanak tanıyan bir JSON görünümüne sahiptir.

  • Azure SDK'lerinin daha yeni kararlı veya önizleme paketleri (SDK özellik desteği için değişiklik günlüklerine bakın).

  • Kararlı REST API’leri veya maxTextRecallSize ve countAndFacetMode (önizleme) gibi önizleme özelliklerini kullanıyorsanız en son önizleme API sürümü.

    Okunabilirlik için, API'lerin nasıl çalıştığını açıklamak için REST örneklerini kullanırız. Karma sorgular oluşturmak için REST uzantısıyla Visual Studio Code gibi bir REST istemcisi kullanabilirsiniz. Azure SDK’ları de kullanabilirsiniz. Daha fazla bilgi için bkz . Hızlı Başlangıç: Vektör araması.

Çalışılabilir hibrit desenler

Karma aramayı yeni kullanıyorsanız, bir desen seçin ve küçük adımlarda ayarlama yapın. Aynı istekte maksimum vektör geri getirme, büyük metin geri getirme ve anlamsal yeniden sıralama ile başlatma.

  • Dengeli karma (varsayılan): Çoğu iş yükü için önce bunu kullanın. k 30 ila 50 aralığında, top 10 ila 20 aralığından başlayın ve yalnızca ölçülen ilgi düzeyini iyileştirdiğinde anlam derecelendirmesini etkinleştirin.

  • Hibrit (geri çağırma öncelikli): Kapsamın hedeflendiği zor sorgular için bunu kullanın. Aşamalı olarak artırın maxTextRecallSize ve vektör ayarlarını orta düzeyde tutun. Daha yüksek birleştirme maliyeti bekleyebilirsiniz.

  • Hassasiyet öncelikli hibrit: Büyük ölçekte düşük gecikme süresi için kullanabilirsiniz. Kalın ve k mütevazı oluntop, seçmeli filtreler uygulayın ve değer eklemeyen anlamsal özelliklerden kaçının.

Aşırı yüklenmiş sorgular neden yavaşlatılır?

Karma sorgular metin ve vektör alma işlemini paralel olarak çalıştırır ve ardından sonuçları RRF ile birleştirir. Sözcük temelli katkıyı artırırsanız (örneğin, hibrit ağırlıkları BM25'i destekleyecek şekilde değiştirerek), vektör adaylarıyla birleştirilmesi gereken metin adaylarının sayısını artırırsınız. Bunu pahalı vektör ayarları ve anlamsal yeniden boyutlandırma ile birleştirirseniz CPU ve bellek baskısı hızla artar.

Daha küçük kapasite yapılandırmalarında bu ek birleştirme ve yenidenrank çalışması aşağıdakilere neden olabilir:

  • Daha yüksek gecikme süresi ve p95/p99 ani artışları
  • 429 sınırlama yanıtları
  • Yeniden deneme davranışı yapılandırılmadığında, istemci tarafından gözlemlenen istekler ya bırakılır ya da zaman aşımına uğrar.

Ölçeği genişletmeden önce ayarlama sırası

Çoğaltma eklemeden önce sorgu ve vektör ayarlarını düzenleyin.

  1. Önce pahalı vektör arama ayarlarını azaltın. Örneğin, efSearch ve maxConnections agresif bir şekilde ayarlanmışsa, ölçeği genişletmeden önce bunları azaltın (örneğin, efSearch değerini 800'den yaklaşık 128-192'ye düşürün ve maxConnections değerini 64'ten 32'ye düşürün).
  2. Anlamsal yeniden sıralama kapsamını yalnızca bundan yararlanan durumlarla sınırlayın.
  3. Temsili yük altında gecikme süresini ve 429 hızları yeniden test edin.
  4. Çoğaltmaları sadece sınırlamanın ayarlamadan sonra devam etmesi durumunda ölçeklendirin.

Ölçeklendirmeden önce kararlılığı artırmak ve maliyeti denetlemek için bu diziyi kullanın.

Karma sorgu ayarlama

Bu bölümde karma sorgunun temel yapısı ve Arama Gezgini'nde veya REST istemcisinde yürütülecek bir sorgunun nasıl ayarlanacağı açıklanmaktadır.

Sonuçlar, olarak işaretlenmiş alanlardaki vektörler de dahil olmak üzere düz metin olarak retrievabledöndürülür. Sayısal vektörler arama sonuçlarında kullanışlı olmadığından, vektör eşleşmesi için ara sunucu olarak dizindeki diğer alanları seçin. Örneğin, bir dizinde "descriptionVector" ve "descriptionText" alanları varsa, sorgu "descriptionVector" ile eşleşebilir, ancak arama sonucunda "descriptionText" gösterilebilir. Sonuçlarda select yalnızca insan tarafından okunabilir alanlar belirtmek için parametresini kullanın.

  1. Azure portalında arama hizmetinize gidin.

  2. Arama yönetimi>Dizinleri'nin altında vektörleri ve vektör olmayan içeriği olan bir dizin seçin. Arama Gezgini ilk sekmedir.

  3. Görünüm altında JSON görünümüne geçerek bir vektör sorgusu yapıştırabilirsiniz.

  4. Varsayılan sorgu şablonunu karma sorguyla değiştirin. Temel karma sorguda içinde searchbelirtilen bir metin sorgusu ve altında vectorQueries.vectorbelirtilen bir vektör sorgusu vardır. Metin sorgusu ve vektör sorgusu eşdeğer veya farklı olabilir, ancak aynı amacı paylaşmaları yaygındır.

    Bu örnek, vektör ve vektör olmayan içeriğe sahip vektör hızlı başlangıç ve çeşitli sorgu örneklerinden alınmıştır. Kısalık açısından, vektör bu makalede kısaltılır.

    {
        "search": "historic hotel walk to restaurants and shopping",
        "vectorQueries": [
            {
                "vector": [0.01944167, 0.0040178085, -0.007816401 ... <remaining values omitted> ], 
                "k": 7,
                "fields": "DescriptionVector",
                "kind": "vector",
                "exhaustive": true
            }
        ]
    }
    
  5. Arama seçeneğini seçin.

    Ipucu

    Vektörleri gizlerseniz arama sonuçlarını okumak daha kolaydır. Sorgu Seçenekleri'ndeArama sonuçlarında vektör değerlerini gizle'yi açın.

  6. Sorgunun başka bir sürümü aşağıdadır. Bu, bulunan eşleşme sayısı için bir count , belirli alanları seçmeye yönelik bir select parametre ve ilk yedi sonucu döndürmek için bir top parametre ekler.

     {
         "count": true,
         "search": "historic hotel walk to restaurants and shopping",
         "select": "HotelId, HotelName, Category, Tags, Description",
         "top": 7,
         "vectorQueries": [
             {
                 "vector": [0.01944167, 0.0040178085, -0.007816401 ... <remaining values omitted> ], 
                 "k": 7,
                 "fields": "DescriptionVector",
                 "kind": "vector",
                 "exhaustive": true
             }
         ]
     }
    

maxTextRecallSize ve countAndFacetMode değerlerini ayarla (önizleme)

Karma sorgu, her alt sorgunun birleştirilmiş sonuçlara ne kadar katkıda bulunabileceğini denetlemek için ayarlanabilir. parametresinin maxTextRecallSize (önizleme) ayarlanması, karma derecelendirme modeline kaç BM25 dereceli sonuç geçirildiğini belirtir.

İsteğiniz fasetler içeriyorsa, dizinde facetable olarak işaretlenmiş vektör olmayan alanları kullanın. Vektör alanları yüzeylere bölünemez.

Yön sayıları sorgu türüne bağlıdır:

  • Yalnızca metinli bir sorguda, fasetler metin sorgusuyla eşleşen belgeleri sayar.
  • Yalnızca vektör içeren bir sorguda, yönler vektör sorgusunun döndürdüğü k belgeleri sayar.
  • Karma bir sorguda, fasetler hem vektör hem de metin sonuçlarını dikkate alır. Vektör tarafı k en yakın belgeleri sağlar. Metin kısmı, BM25'e göre sıralanmış belgeleri sağlar. countAndFacetMode parametresi (önizleme), sayı ve model hesaplamalarının tüm metin eşleşmelerini mi yoksa yalnızca derecelendirme için alınan metin eşleşmelerini mi kullandığını belirler.

maxTextRecallSize kullanıyorsanız, muhtemelen countAndFacetMode ayarlamak da isteyeceksiniz. Bu parametre, count ve facets’in metin sorgusuyla eşleşen tüm belgeleri mi, yoksa yalnızca maxTextRecallSize penceresi içinde alınan belgeleri mi içerip içermeyeceğini belirler. countAllResults varsayılan değerdir.

Varsayılan countAllResults modunda, sayımlar ve fasetler, maxTextRecallSize penceresinin dışında kaldıkları için RRF sıralaması amacıyla alınmayan metin tarafındaki belgeleri içerebilir. maxTextRecallSize değerinin artırılması, sıralama için kullanılabilir BM25'e göre sıralanmış belge sayısını artırır, ancak vektör katkısını k değerinin ötesine artırmaz. Hibrit sıralama için alınan belgelerle sınırlandırılmış sayım ve faset hesaplamaları istiyorsanız countRetrievableResults kullanın.

Bu seçenekleri ayarlamak için en son önizleme REST API'sini öneririz.

Ipucu

Karma sorgu ayarlamaya yönelik bir diğer yaklaşım da, istekteki vektör sorgularının önemini artırmak için kullanılan vektör ağırlığıdır.

  1. Önizleme parametrelerini belirtmek için Arama - POST (önizleme) veya Arama - GET (önizleme) kullanın.

  2. Karma sorgunun hybridSearch BM25 dereceli sonuçları aracılığıyla geri çağrılmış en fazla belge sayısını ayarlamak için bir sorgu parametresi nesnesi ekleyin. İki özelliği vardır:

    • maxTextRecallSize karma sorgularda kullanılan Karşılıklı Rank Fusion (RRF) derecelendiricisine sağlanması gereken BM25 dereceli sonuçların sayısını belirtir. Varsayılan değer 1.000'dir. Maksimum değer 10.000'dir.

    • countAndFacetMode karma bir sorgunun sayısını ve faset kapsamını raporlar. Varsayılan olarak countAllResults, metin sorgusuyla eşleşen tüm belgeler de dahil olmak üzere tam hibrit sonuç kümesini kullanır; bu belgelerden metinle eşleşen bazıları, maxTextRecallSize penceresinin dışında kaldıkları için RRF sıralaması için alınmasa bile. Sayımı ve özellikleri, sıralama için getirilen belgelerle — buna countRetrievableResults BM25 ile sıralanmış belgeler ve maxTextRecallSize vektör eşleşmeleri dahildir — sınırlamak için k kullanın.

  3. Ayarla maxTextRecallSize:

    • Vektör benzerliği araması genellikle hibrit sorgunun metin kısmına göre daha iyi performans gösteriyorsa, maxTextRecallSize değerini azaltın.

    • Büyük bir dizininiz varsa ve varsayılan değer yeterli sayıda sonuç yakalamıyorsa artırın maxTextRecallSize . Daha büyük bir BM25 dereceli sonuç kümesiyle, bu sonuçların bölümlerini almak için top, skip ve next ayarlarını yapabilirsiniz.

Aşağıdaki REST örneklerde ayarı maxTextRecallSizeiçin iki kullanım örneği gösterilmektedir.

İlk örnek 100'e indirgenerek maxTextRecallSize karma sorgunun metin tarafını yalnızca 100 belgeyle sınırlandırıyor. Ayrıca countAndFacetMode öğesini, sayı ve yön hesaplamalarına yalnızca geri alınabilir belgeler dahil edilecek şekilde ayarlar.

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

    { 
      "vectorQueries": [ 
        { 
          "kind": "vector", 
          "vector": [1.0, 2.0, 3.0], 
          "fields": "my_vector_field", 
          "k": 10 
        } 
      ], 
      "search": "hello world", 
      "hybridSearch": { 
        "maxTextRecallSize": 100, 
        "countAndFacetMode": "countRetrievableResults" 
      } 
    } 

İkinci örnek 5.000'e yükseltir maxTextRecallSize . Ayrıca büyük sonuç kümelerinden veri çekmek için "top", "skip" ve "next" kullanılır. Bu durumda istek, RRF bileşik sonuç kümesine metin sorgusu katkısı olarak 1.500 ile 2.000 arasında bir konumdan başlayarak BM25 dereceli sonuçları çeker.

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

    { 
      "vectorQueries": [ 
        { 
          "kind": "vector", 
          "vector": [1.0, 2.0, 3.0], 
          "fields": "my_vector_field", 
          "k": 10 
        } 
      ], 
      "search": "hello world",
      "top": 500,
      "skip": 1500,
      "next": 500,
      "hybridSearch": { 
        "maxTextRecallSize": 5000, 
        "countAndFacetMode": "countRetrievableResults" 
      } 
    } 

Başvuru: hybridSearch | maxTextRecallSize | countAndFacetMode

Karma sorgu örnekleri

Bu bölümde karma sorgu desenlerini gösteren birden çok sorgu örneği vardır.

Örnek: Filtre ile karma arama

Bu örnek, arama dizininin filterable nonvector alanlarına uygulanan bir filtre ekler.

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}}
{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "k": 10
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "vectorFilterMode": "preFilter",
    "filter": "ParkingIncluded",
    "top": "10"
}

Önemli noktalar:

  • Filtreler filtrelenebilir alanların içeriğine uygulanır. Bu örnekte ParkingIncluded alanı bir boole değeridir ve dizin şemasında olarak filterable işaretlenmiştir.

  • Karma sorgularda, sorgu yüzeyini azaltmak için sorgu yürütmeden önce veya sonuçları kırpmak için sorgu yürütmeden sonra filtreler uygulanabilir. "preFilter" varsayılan değerdir. postFilter veya strictPostFilter (önizleme) kullanmak için, filtre işleme modunu bu örnekte gösterildiği gibi ayarlayın.

  • Sorgu sonuçlarını filtreledikten sonra, sonuç sayısı en yüksek n'den az olabilir.

Başvuru: filtre | vektörFilterMode

Örnek: Vektör alt sorgularını hedefleyen filtrelerle karma arama (önizleme)

En son önizleme REST API'sini kullanarak, karma istekteki yalnızca vektör alt sorgularını hedefleyen ikincil bir filtre uygulayarak arama isteğindeki genel filtreyi geçersiz kılabilirsiniz.

Bu özellik, filtrelerin yalnızca vektör arama sonuçlarını etkileyerek anahtar sözcük tabanlı arama sonuçlarını etkilenmemesini sağlayarak ayrıntılı denetim sağlar.

Belirli filtre, güvenlik kısıtlaması veya jeo-uzamsal arama için kullanılan filtreler de dahil olmak üzere genel filtreyi tamamen devre dışı bırakır. Güvenlik kırpması gibi genel filtrelerin gerekli olduğu durumlarda, güvenliğin ve diğer kısıtlamaların tutarlı bir şekilde uygulandığından emin olmak için bu filtreleri hem üst düzey filtreye hem de her vektör düzeyi filtreye açıkça eklemeniz gerekir.

Hedeflenen vektör filtrelerini uygulamak için:

Aşağıda, filtre değiştirme ekleyen bir hibrit sorgu örneği verilmiştir. Global "Derecelendirme > 3" filtresi, çalışma zamanında filterOverride tarafından değiştirilir.

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-08-01-preview

{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "exhaustive": true,
            "filterOverride": "Address/City eq 'Seattle'",
            "k": 10
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "select": "HotelName, Description, Address/City, Rating",
    "filter": "Rating gt 3",
    "debug": "vector",
    "top": 10
}

Dizin tanımınızın anlamsal bir yapılandırma içerdiğini varsayarsak, vektör araması ve anahtar sözcük araması içeren bir sorguyu, birleştirilmiş sonuç kümesi üzerinde anlamsal derecelendirmeyle formüle edebilirsiniz. İsteğe bağlı olarak resim yazıları ve yanıtlar ekleyebilirsiniz.

Vektörlerle semantik derecelendirme kullandığınızda 50 olarak ayarlandığından emin olun k . Anlam dereceleyicisi giriş olarak en fazla 50 eşleşme kullanır. 50'den azını belirtmek, gerekli girişlerden semantik derecelendirme modellerini mahrum bırakı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}}
{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "k": 50
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "select": "HotelName, Description, Tags",
    "queryType": "semantic",
    "semanticConfiguration": "my-semantic-config",
    "captions": "extractive",
    "answers": "extractive",
    "top": "50"
}

Önemli noktalar:

  • Anlam dereceleyici, birleştirilmiş yanıttan en fazla 50 sonuç kabul eder.

  • "queryType" ve "semanticConfiguration" gereklidir.

  • "açıklamalı alt yazılar" ve "yanıtlar" isteğe bağlıdır. Sonuçlardaki tam metinden değerler ayıklanır. Yanıt yalnızca sonuçlarda sorgu yanıtının özelliklerine sahip içerik varsa döndürülür.

Başvuru: queryType | semanticConfiguration | altyazılar | yanıtlar

Örnek: Filtre ile anlamsal karma arama

Bu örnek, anlamsal karma sorguya filtre ekler ParkingIncluded .

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}}
{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "k": 50
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "select": "HotelName, Description, Tags",
    "queryType": "semantic",
    "semanticConfiguration": "my-semantic-config",
    "captions": "extractive",
    "answers": "extractive",
    "filter": "ParkingIncluded",
    "vectorFilterMode": "preFilter",
    "top": "50"
}

Önemli noktalar:

  • Filtre modu, semantik dereceleyici için kullanılabilir sonuç sayısını etkileyebilir. En iyi uygulama olarak, semantik dereceye belge sayısı üst sınırını (50) verin. Ön filtreler veya son filtreler çok seçiciyse, anlamsal sıralayıcıya işleyebileceği 50'den az belge sağlayarak onu yeterince beslemeyebilirsiniz.

  • preFilter sorgu yürütmeden önce uygulanır. Ön filtre arama alanını 100 belgeye düşürürse, vektör sorgusu bu 100 belge için alan üzerinde DescriptionVector yürütülür ve k=50 en iyi eşleşme döndürülür. Bu 50 eşleşen belge, birleştirilmiş sonuçlar için RRF'ye ve ardından anlamsal sıralayıcıya aktarılır.

  • postFilter sorgu yürütmeden sonra uygulanır. Eğer k=50 vektör sorgusu tarafında 50 eşleşme döndürürse ve sonra, bu 50 eşleşmeye bir filtre uygulandığında, sonuçlarınız filtre ölçütlerini karşılayan belgelerin sayısı kadar azalır. Bu, semantik sıralayıcıya geçirmeniz için 50'den az belge bırakır. Anlam derecelendirmesi kullanıyorsanız bunu aklınızda bulundurun. Giriş olarak 50 belge varsa anlam dereceleyicisi en iyi şekilde çalışır.

  • strictPostFilter (önizleme) sorgu yürütmeden sonra filtrelenmemiş en üsttekik sonuçlara uygulanır. Her zaman belgelere k eşit veya daha küçük değerler döndürür. Filtrelenmemiş k=50 filtresiz 50 sonuç döndürüyorsa ve filtre 30 belgeyle eşleşiyorsa, dizinde filtreyle eşleşen 30'dan fazla belge olsa bile sonuç kümesinde yalnızca 30 belge döndürülür. Bu mod, hatırlama oranında en büyük düşüş yaşandığı için bunu anlamsal sıralayıcı ile kullanmanızı önermiyoruz.

Sorgu yanıtı yapılandırma

Karma sorguyu ayarlarken yanıt yapısını düşünün. Arama altyapısı eşleşen belgeleri sıralar ve en uygun sonuçları döndürür. Yanıt düzleştirilmiş bir satır kümesidir. Sorgudaki parametreler, her satırda hangi alanların olduğunu ve yanıtta kaç satır olduğunu belirler.

Yanıttaki alanlar

Arama sonuçları, arama dizininizdeki alanlardan retrievable oluşur. Sonuç aşağıdakilerden biri:

  • Tüm retrievable alanlar (bir REST API varsayılanı).
  • Sorgudaki bir select parametrede açıkça listelenen alanlar.

Bu makaledeki örneklerde yanıttaki metin (nonvector) alanlarını belirtmek için bir select deyim kullanılmıştır.

Not

Vektörler insan tarafından okunabilen metinlere ters mühendislik uygulamaz, bu nedenle bunları yanıtta döndürmekten kaçının. Bunun yerine, arama belgesini temsil eden seçici olmayan alanları seçin. Örneğin, sorgu bir "DescriptionVector" alanını hedeflerse, yanıtta bir ("Açıklama") varsa eşdeğer bir metin alanı döndürür.

Sonuç sayısı

Bir sorgu, arama kriterleri zayıfsa (örneğin, null sorgu için "search=*"), tüm belgeler de dahil olmak üzere herhangi bir sayıda belgelerle eşleşebilir. İlişkisiz sonuçları döndürmek nadiren pratik olduğundan, genel yanıt için bir üst sınır belirtmeniz gerekir:

  • "top": n yalnızca anahtar sözcük sorguları için sonuçlar (vektör yok)
  • "k": n yalnızca vektör sorguları için sonuçlar
  • "top": n "search" parametresi içeren karma sorguların sonuçları (semantik ile veya semantik olmadan)

Hem k hem de top isteğe bağlıdır. Belirtilmemişse, 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.

Not

2024-05-01-preview API'sinde karma arama kullanıyorsanız maxTextRecallSize kullanarak anahtar sözcük sorgusundaki sonuç sayısını denetleyebilirsiniz. k ayarıyla her arama alt sisteminden (anahtar kelime ve vektör) temsili kontrol etmek için bunu birleştirin.

Anlamsal sıralayıcı sonuçları

Not

Semantik dereceleyici 50'ye kadar sonuç alabilir.

2024-05-01-preview veya daha sonraki bir sürümde semantik sıralayıcı kullanıyorsanız, k ve maxTextRecallSize'in toplamının en az 50 olmasını sağlamak en iyi uygulamadır. Ardından, kullanıcıya döndürülen sonuçları parametresiyle top kısıtlayabilirsiniz.

Semantik sıralayıcıyı 2024-05-01-preview'den önceki bir API sürümünde kullanıyorsanız şu adımları izleyin:

  • Yalnızca anahtar sözcük araması (vektör yok) için 50 olarak ayarlanmış top
  • Karma arama için k değerini 50 olarak ayarlayın, böylece anlam dereceleyici en az 50 sonuç alır.

Sıralama

İsteğe bağlı semantik yeniden sıralama ile veya olmadan karma sorgular için birden çok grup oluşturulur. Sonuçların derecelendirmesi Reciprocal Rank Fusion (RRF) tarafından hesaplanır.

Bu bölümde, en yüksek sonuç için tek vektör araması ile basit karma arama arasındaki yanıtları karşılaştırın. Farklı derecelendirme algoritmaları, HNSW'nin benzerlik ölçümü ve RRF bu durumdur ve farklı büyüklüklere sahip puanlar üretir. Bu davranış tasarım gereğidir. RRF puanları, yüksek benzerlik eşleşmesi olsa bile oldukça düşük görünebilir. Düşük puanlar, RRF algoritmasının bir özelliğidir. RRF içeren melez sorgularda, saf vektör aramaya kıyasla RRF tarafından derecelendirilmiş belgelerin puanı nispeten daha düşük olduğundan, dereceli belgelerin daha fazla karşılıklı sonuçları sonuçlara dahil edilir.

Tek Vektör Arama: @search.score kosinüs benzerliğine göre sıralanmış sonuçlar için (varsayılan vektör benzerliği uzaklık işlevi).

{
    "@search.score": 0.8399121,
    "HotelId": "49",
    "HotelName": "Swirling Currents Hotel",
    "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.",
    "Category": "Luxury",
    "Address": {
    "City": "Arlington"
    }
}

Karma Arama: @search.score Karşılıklı Rank Fusion kullanılarak sıralanan karma sonuçlar için.

{
    "@search.score": 0.032786883413791656,
    "HotelId": "49",
    "HotelName": "Swirling Currents Hotel",
    "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.",
    "Category": "Luxury",
    "Address": {
    "City": "Arlington"
    }
}

Karma sorgu sorunlarını giderme

Karma sorgularla ilgili yaygın sorunları tanılamak için aşağıdaki tabloyu kullanın.

Sorunu Olası neden Çözünürlük
Boş sonuçlar Vektör alanı adı uyuşmazlığı veya eksik dizin verileri İçinde fieldsvectorQueries öğesinin indeks şemanızdaki bir vektör alanıyla eşleştiğini doğrulayın. Belgelerin vektör verileri içerdiğini denetleyin.
Düşük RRF puanları Normal RRF davranışı RRF puanları, benzerlik puanlarından doğal olarak daha düşüktür. 0,03 puanı yine de güçlü bir eşleşme olduğunu gösterebilir.
Vektör sonuçları baskın Metin sorgusu bekleneni karşılamıyor maxTextRecallSize parametresini artırarak daha fazla BM25 sonucu ekleyin veya vektör ağırlıklandırmalarını ayarlayın.
Metin sonuçları ağırlıklı Vektör benzerliği çok düşük Ekleme kalitesini denetleyin. Sorgu vektörlerinin belge vektörleriyle aynı modeli kullandığından emin olun.
Anlam dereceleyicisi daha az sonuç verir Yetersiz giriş belgeleri Anlam derecelendirmesi kullanılırken en az 50 olarak ayarlayın k . Filtrelerin çok kısıtlayıcı olup olmadığını denetleyin.
Filtre vektörlere uygulanmadı Yalnızca genel filtre kullanma Vektöre özgü filtreleme için vektör sorgusunda (önizleme) kullanın filterOverride .
Sonuçlarda beklenmeyen alan select parametre eksik select ekleyin ve hangi alanların döndürüleceğini belirtin. Okunabilirlik için vektör alanlarını hariç tutun.