Aracılığıyla paylaş


Azure AI Search'te vektörleri ve tam metni kullanarak karma arama

Karma arama, hem aranabilir düz metin içeriği hem de oluşturulan eklemeler içeren bir arama dizininde yürütülen tam metin ve vektör sorgularının birleşimidir. Sorgu amacıyla karma arama şu şekildedir:

  • Hem hem de search vectors sorgu parametrelerini içeren tek bir sorgu isteği
  • Paralel yürütme
  • Sorgu yanıtında birleştirilmiş sonuçlarla, Karşılıklı Rank Fusion (RRF) kullanılarak puanlandı

Bu makalede karma aramanın kavramları, avantajları ve sınırlamaları açıklanmaktadır. Karma alımın yüksek kaliteli sohbet stiline ve copilot uygulamalarına nasıl katkıda bulunup bulunmayışının açıklaması ve kısa tanıtımları için bu ekli videoyu izleyin.

Karma arama nasıl çalışır?

Azure AI Search'te, eklemeler içeren vektör alanları metinsel ve sayısal alanların yanında yer alabilir ve paralel olarak yürütülen karma sorguları formüle edebilirsiniz. Karma sorgular, tek bir arama isteğinde filtreleme, model oluşturma, sıralama, puanlama profilleri ve anlam sıralama gibi mevcut işlevlerden yararlanabilir.

Karma arama, BM25, HNSW ve EKNN gibi farklı derecelendirme işlevlerini kullanan hem tam metin hem de vektör sorgularının sonuçlarını birleştirir. Karşılıklı Rank Fusion (RRF) algoritması sonuçları birleştirir. Sorgu yanıtı, birleşik sonuçları sıralamak için RRF kullanarak yalnızca bir sonuç kümesi sağlar.

Karma sorgunun yapısı

Karma arama, düz metin ve sayılar, jeo-uzamsal arama istiyorsanız coğrafi koordinatlar ve metin öbeklerinin matematiksel gösterimi için vektörler gibi çeşitli veri türlerinde alanlar içeren bir arama dizinine sahip olmak için önceden belirlenmiştir. Otomatik tamamlama ve öneriler gibi saf metin istemci tarafı etkileşimleri dışında, Azure AI Search'teki neredeyse tüm sorgu özelliklerini vektör sorgusuyla kullanabilirsiniz.

Temsili karma sorgu aşağıdaki gibi olabilir (vektör sorgularında kısalık için yer tutucu değerleri olduğuna dikkat edin):

POST https://{{searchServiceName}}.search.windows.net/indexes/hotels-vector-quickstart/docs/search?api-version=2024-07-01
  content-type: application/JSON
{
    "count": true,
    "search": "historic hotel walk to restaurants and shopping",
    "select": "HotelId, HotelName, Category, Description, Address/City, Address/StateProvince",
    "filter": "geo.distance(Location, geography'POINT(-77.03241 38.90166)') le 300",
    "facets": [ "Address/StateProvince"], 
    "vectors": [
        {
            "value": [ <array of embeddings> ]
            "k": 7,
            "fields": "DescriptionVector"
        },
        {
            "value": [ <array of embeddings> ]
            "k": 7,
            "fields": "Description_frVector"
        }
    ],
    "queryType": "semantic",
    "queryLanguage": "en-us",
    "semanticConfiguration": "my-semantic-config"
}

Önemli noktalar şunlardır:

  • search tek bir tam metin arama sorgusu belirtir.
  • vectors birden çok vektör alanını hedefleyen, birden çok olabilir vektör sorguları için. Ekleme alanı çok dilli içerik içeriyorsa vektör sorguları, dil çözümleyicileri veya çeviri gerektirmeden eşleşmeyi bulabilir.
  • select sonuçlarda döndürülecek alanları belirtir. Bu alanlar, okunabilir metin alanları olmalıdır.
  • filters , park etme dahil olup olmadığı gibi jeo-uzamsal arama veya diğer dahil etme ve hariç tutma ölçütlerini belirtebilir. Bu örnekteki jeo-uzamsal sorgu, Washington D.C.'nin 300 kilometre yarıçapındaki otelleri bulur.
  • facets karma sorgulardan döndürülen sonuçlar üzerinde model demetlerini hesaplamak için kullanılabilir.
  • queryType=semantic daha ilgili arama sonuçlarını ortaya çıkarabilmek için makine okuma kavraması uygulayarak anlam derecesini çağırır. Anlamsal derecelendirme isteğe bağlıdır. Bu özelliği kullanmıyorsanız karma sorgunun son üç satırını kaldırın.

Filtreler ve modeller, dizin içinde tam metin araması için kullanılan ters dizinlerden ve vektör araması için kullanılan vektör dizinlerinden ayrı veri yapılarını hedefler. Bu nedenle, filtreler ve modellenmiş işlemler yürütürken, arama altyapısı işlem sonucunu yanıttaki karma arama sonuçlarına uygulayabilir.

Sorguda hiçbir şey olmadığına orderby dikkat edin. Açık sıralama düzenleri, ilgili dereceli sonuçları geçersiz kılar, bu nedenle benzerlik ve BM25 ilgisi istiyorsanız sorgunuzda sıralamayı atlayın.

Yukarıdaki sorgudan gelen bir yanıt aşağıdaki gibi görünebilir:

{
    "@odata.count": 3,
    "@search.facets": {
        "Address/StateProvince": [
            {
                "count": 1,
                "value": "NY"
            },
            {
                "count": 1,
                "value": "VA"
            }
        ]
    },
    "value": [
        {
            "@search.score": 0.03333333507180214,
            "@search.rerankerScore": 2.5229012966156006,
            "HotelId": "49",
            "HotelName": "Old Carrabelle 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",
                "StateProvince": "VA"
            }
        },
        {
            "@search.score": 0.032522473484277725,
            "@search.rerankerScore": 2.111117362976074,
            "HotelId": "48",
            "HotelName": "Nordick's Motel",
            "Description": "Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer.  Hiking? Wine Tasting? Exploring the caverns?  It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.",
            "Category": "Boutique",
            "Address": {
                "City": "Washington D.C.",
                "StateProvince": null
            }
        }
    ]
}

Karma arama, vektör aramasının güçlü yanlarını ve anahtar sözcük aramasını birleştirir. Vektör aramasının avantajı, ters dizinde anahtar sözcük eşleşmeleri olmasa bile arama sorgunuza kavramsal olarak benzer bilgileri bulmaktır. Anahtar sözcüğün veya tam metin aramanın avantajı, ilk sonuçların kalitesini artıran isteğe bağlı semantik derecelendirme uygulayabilme özelliğiyle duyarlıktır. Ürün kodları, son derece özelleştirilmiş jargon, tarihler ve kişilerin adları üzerinden sorgulama gibi bazı senaryolar, tam eşleşmeleri tanımlayabildiği için anahtar sözcük araması ile daha iyi performans sergileyebilir.

Gerçek dünya ve karşılaştırma veri kümelerinde karşılaştırma testi, anlam dereceli karma alma özelliğinin arama ilgisinde önemli avantajlar sağladığını gösterir.

Aşağıdaki videoda karma alma işleminin yararlı yapay zeka yanıtları oluşturmak için size en uygun topraklama verilerini nasıl sağladığı açıklanmaktadır.

Ayrıca bkz.

Karma alma ve derecelendirme ile daha iyi vektör araması (Teknik blog)