Anlam derecelendirmesi çağıran ve anlam başlıkları döndüren bir sorgu oluşturma

Önemli

Anlamsal arama, ek kullanım koşullarıkapsamında genel önizlemededir. Azure portal, önizleme REST API ve Beta SDK 'Ları aracılığıyla kullanılabilir. Bu özellikler faturalandırılabilir. Hakkında daha fazla bilgi için bkz. kullanılabilirlik ve fiyatlandırma.

Anlamsal arama, bir sonuç kümesi üzerinde anlamsal derecelendirme algoritmasını çağıran ve anlamlı açıklamalı alt yazılar (ve isteğe bağlı olarak anlamsal yanıtlar) döndüren ve en ilgili hüküm ve tümceciklerin üzerine vurgularla birlikte, Azure bilişsel arama Premium bir özelliktir. "Anlam" sorgu türü kullanılarak formül oluşturulan sorgu isteklerinde hem açıklamalı alt yazılar hem de yanıtlar döndürülür.

Açıklamalı alt yazılar ve yanıtlar, arama belgesinde metinden yazılır. Anlamsal alt sistem, içeriğinizin bir başlık veya yanıtın özelliklerine sahip olduğunu belirler, ancak yeni tümceler veya ifadeler oluşturmaz. Bu nedenle, açıklamaları veya tanımları içeren içerik anlamsal arama için en iyi şekilde çalışır.

Önkoşullar

  • Şu bölgelerden birinde bulunan standart katmanda (S1, S2, S3) bir Bilişsel Arama hizmeti: Orta Kuzey ABD, Batı ABD, Batı ABD 2, Doğu ABD 2, Kuzey Avrupa, Batı Avrupa. Bu bölgelerden birinde mevcut bir S1 veya daha fazla hizmetiniz varsa, yeni bir hizmet oluşturmak zorunda kalmadan önizlemeye kaydolabilirsiniz.

  • Önizleme için kaydolun. Beklenen kapatma iki iş günü daha fazla.

  • Desteklenen bir dildeiçeriğe sahip mevcut bir arama dizini.

  • Sorgu göndermek için bir arama istemcisi.

    Arama istemcisinin, sorgu isteğinde önizleme REST API 'Leri desteklemesi gerekir. Önizleme API 'Lerine REST çağrıları yapan Postman, Visual Studio Codeveya kodu kullanabilirsiniz. Bir anlamsal sorgu göndermek için Azure portal Arama Gezgini 'ni de kullanabilirsiniz. Ayrıca, Azure.Search.Documları 11.3.0-Beta. 2' i de kullanabilirsiniz.

  • Bu makalede açıklanan bir sorgu isteği queryType=semantic ve diğer parametreleri içermelidir.

Anlam sorgu türü nedir?

Bilişsel Arama bir sorgu, sorgu işlemeyi ve yanıtın şeklini belirleyen parametreli bir istek olur. Bir anlam sorgusunda , eşleşen sonuçların kapsamını ve anlamını değerlendirebilen, daha fazla ilgili eşleştirmeyi en üst düzeye yükseltebilen ve anlam yanıtlarını ve açıklamalı alt yazıları döndüren anlam yeniden yönlendirme modelini çağıran Parametreler vardır .

Aşağıdaki istek, en az anlamsal bir sorgu (yanıt olmadan) temsilcisidir.

POST https://[service name].search.windows.net/indexes/[index name]/docs/search?api-version=2020-06-30-Preview      
{    
    "search": " Where was Alan Turing born?",    
    "queryType": "semantic",  
    "searchFields": "title,url,body",  
    "queryLanguage": "en-us"  
}

Bilişsel Arama tüm sorgularda olduğu gibi, istek tek bir dizinin belgeler koleksiyonunu hedefler. Ayrıca, anlamsal bir sorgu semantik olmayan bir sorgu olarak aynı ayrıştırma, analiz, tarama ve Puanlama dizisine sahiptir.

Fark, ilgi ve Puanlama ' de yer alır. Bu önizleme sürümünde tanımlandığı gibi anlamsal bir sorgu, sonuçları anlamsal dil modeli kullanılarak tekrar tekrar eden, varsayılan benzerlik derecelendirmesi algoritması tarafından atanan puanlar yerine anlam derecelendirmesiyle ilgili en iyi sonucu verilen eşleşmeleri sunmanın bir yolunu sağlayan bir anlam sorgusu olur.

Başlangıçtaki sonuçlardan yalnızca ilk 50 eşleşme anlam olarak derecelendirilir ve tüm sonuçlar yanıttaki açıklamalı alt yazı içerebilir. İsteğe bağlı olarak, olası bir answer yanıtı ayıklamak için istekte bir parametre belirtebilirsiniz. Daha fazla bilgi için bkz. anlam yanıtları.

Azure portal sorgu

Arama Gezgini anlam sorgularının seçeneklerini içerecek şekilde güncelleştirilmiştir. Bu seçenekler, aşağıdaki adımları tamamladıktan sonra portalda görünür hale gelir:

  1. Bu söz dizimi ile portalı açın: https://portal.azure.com/?feature.semanticSearch=true , önizlemenin etkin olduğu bir arama hizmeti.

  2. Genel Bakış sayfasının en üstündeki Arama Gezgini ' ne tıklayın.

  3. Desteklenen bir dildeiçerik olan bir dizin seçin.

  4. Arama Gezgini ' nde, anlam sorguları, searchFields ve yazım düzeltmesini etkinleştiren sorgu seçeneklerini ayarlayın. Gerekli sorgu parametrelerini sorgu dizesine de yapıştırabilirsiniz.

Arama Gezgininde sorgu seçenekleri

REST kullanarak sorgulama

İsteği programlı bir şekilde oluşturmak için arama belgelerini (REST Önizleme) kullanın. Yanıt, otomatik olarak açıklamalı alt yazılar ve vurgulama içerir. Yanıtta yazım denetimi düzeltmesini veya yanıtlarını istiyorsanız, speller answers isteği ekleyin.

Aşağıdaki örnek, yazım denetimi, anlam yanıtları ve açıklamalı alt yazılar ile anlamsal bir sorgu isteği oluşturmak için oteller-Sample-Index ' i kullanır:

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2020-06-30-Preview      
{
    "search": "newer hotel near the water with a great restaurant",
    "queryType": "semantic",
    "queryLanguage": "en-us",
    "searchFields": "HotelName,Category,Description",
    "speller": "lexicon",
    "answers": "extractive|count-3",
    "highlightPreTag": "<strong>",
    "highlightPostTag": "</strong>",
    "select": "HotelId,HotelName,Description,Category",
    "count": true
}

Aşağıdaki tabloda bir anlam sorgusunda kullanılan parametreler özetlenmektedir. Bir istekteki tüm parametrelerin listesi için bkz. arama belgeleri (REST önizlemesi)

Parametre Tür Açıklama
queryType Dize Geçerli değerler basit, tam ve anlam içerir. Anlam sorguları için "anlam" değeri gereklidir.
Sorgu dili Dize Anlam sorguları için gereklidir. Belirttiğiniz sözlük anlam derecelendirmesi, açıklamalı alt yazılar, yanıtlar ve yazım denetimi için eşit olarak geçerlidir. Daha fazla bilgi için bkz. desteklenen diller (REST API Başvurusu).
searchFields Dize Aranabilir alanların virgülle ayrılmış listesi. Açıklamalı alt yazıların ve yanıtların ayıklandığı anlam derecelendirmenin gerçekleştiği alanları belirtir.

Basit ve tam sorgu türlerinin aksine, alanların listelenme sırası öncelik belirler. Daha fazla kullanım yönergeleri için bkz. 2. Adım: searchFields ayarlama.
güncelleştirin Dize Anlam sorgularına özgü olmayan isteğe bağlı parametre, arama altyapısına ulaşmadan önce yanlış yazılmış koşulları düzeltir. Daha fazla bilgi için bkz. sorgulara yazım denetimi ekleme.
yanıtlar Dize Anlam yanıtlarının sonuca dahil edilip edilmeyeceğini belirten isteğe bağlı parametreler. Şu anda yalnızca "extractive" uygulandı. Yanıtlar en fazla beş olacak şekilde yapılandırılabilir. Varsayılan değer bir. Bu örnek, üç yanıt sayısını gösterir: "extractive | count3" '. Daha fazla bilgi için bkz. anlam yanıtları döndürme.

İsteği formül altına yaz

Bu bölümde sorgu formülleme adımları sağlanır.

1. Adım: queryType ve queryLanguage ayarlama

Rest 'e aşağıdaki parametreleri ekleyin. Her iki parametre de gereklidir.

"queryType": "semantic",
"queryLanguage": "en-us",

QueryLanguage desteklenen bir dil olmalıdır ve dizin şemasında alan tanımlarına atanan dil Çözümleyicileri ile tutarlı olmalıdır. Örneğin, Fransızca dil Çözümleyicisi ("fr. Microsoft" veya "fr. Lucene" gibi) için Fransızca dizeleri dizinlenmiş olursunuz, ardından queryLanguage Ayrıca Fransızca dil varyantı olmalıdır.

Sorgu isteğinde, Yazımdenetimi kullanıyorsanız, ayarladığınız QueryLanguage, yazım denetleyicisi, yanıtlar ve açıklamalı alt yazılar için de geçerlidir. Ayrı parçalar için geçersiz kılma yoktur. Yazım denetimi daha az dilidestekler, bu nedenle bu özelliği kullanıyorsanız, QueryLanguage öğesini bu listeden bir tane olarak ayarlamanız gerekir.

Bir arama dizinindeki içerik birden çok dilde birleştirileken, sorgu girişi büyük olasılıkla birdir. Arama altyapısı, queryLanguage, Language Analyzer ve içeriğin oluştuğu dilin uyumluluğunu kontrol etmez, bu nedenle yanlış sonuçlar üretmemek için sorguları uygun şekilde kapsamdığınızdan emin olun.

2. Adım: searchFields ayarlama

İsteğe searchFields ekleyin. İsteğe bağlıdır, ancak önerilir.

"searchFields": "HotelName,Category,Description",

Searchfields parametresi, sorguya "anlamsal benzerlik" için değerlendirilecek olan metinlerin belirlemek için kullanılır. Önizleme için, modelin işlemek için en önemli olan alanlar için bir ipucu gerektirdiğinden, searchFields 'in boş bırakılması önerilmez.

Diğer parametrelerin aksine, searchFields yeni değildir. Zaten basit veya tam Lucene sorguları için mevcut kodda searchFields kullanıyor olabilirsiniz. Bu durumda, bir anlamsal sorgu türüne geçiş yaparken alan sırasını kontrol edebilmeniz için parametresinin nasıl kullanıldığını tekrar inceleyin.

İzin verilen veri türleri

SearchFields ayarlarken yalnızca aşağıdaki desteklenen veri türlerininalanlarını seçin. Geçersiz bir alan bulundurdıysanız, bir hata yoktur, ancak bu alanlar semantik derecelendirmeden kullanılmaz.

Veri türü Oteller 'ten örnek-örnek-Dizin
Edm.String Hoteladı, kategori, açıklama
EDM. ComplexType Adres. StreetNumber, adres. City, adres. Statecity, Address. PostaKodu
Collection(Edm.String) Etiketler (dizelerin virgülle ayrılmış listesi)
SearchFields içindeki alanların sırası

Anlamsal bir yanıt süresi sunarken anlam derecelendirme işleminin işleyemediği içerik miktarını sınırladığından, alan sırası kritik öneme sahiptir. Listenin başlangıcında bulunan alanların içeriğinin dahil olma olasılığı yüksektir; en fazla sınıra ulaşıldığında uçtan içerik kesilebilir. Daha fazla bilgi için bkz. anlam derecelendirmesi sırasında ön işleme.

  • Yalnızca bir alanı belirtiyorsanız, anlam sorgularının yanıtının bir belgenin ana içeriği gibi bulunabileceği açıklayıcı bir alan seçin.

  • SearchFields içindeki iki veya daha fazla alan için:

    • İlk alan her zaman kısa (örneğin, bir başlık veya ad) olmalıdır ve ideal olarak 25 sözcük altında bir dizedir.

    • Dizinde, gibi insan tarafından okunabilen bir URL alanı varsa (örneğin, www.domain.com/name-of-the-document-and-other-details makine odaklı olduğu gibi www.domain.com/?id=23463&param=eis ), bu dosyayı listeye koyun (ya da kısa başlık alanı yoksa önce).

    • Yukarıdaki alanları, bir belgenin ana içeriği gibi anlam sorgularının yanıtının bulunabileceği diğer açıklayıcı alanlarla izleyin.

3. Adım: orderBy yan tümcelerini kaldırma

Mevcut sorgu kodundan herhangi bir orderBy yan tümcesini kaldırın. Anlamsal puan sonuçları sıralamak için kullanılır ve açık sıralama mantığı eklerseniz bir HTTP 400 hatası döndürülür.

4. Adım: Yanıt ekleme

İsteğe bağlı olarak, yanıt sağlayan ek işlemleri eklemek istiyorsanız "yanıtlar" ı ekleyin. Bu parametre hakkında daha fazla bilgi için bkz. anlam yanıtlarını belirtme.

"answers": "extractive|count-3",

Yanıtlar (ve açıklamalı alt yazılar), searchfields bölümünde listelenen alanlarda bulunan metinlerin 'lerden ayıklanır. Bu nedenle, bir yanıtta en iyi yanıtları alabilmeniz için searchFields 'e içerik açısından zengin alanları eklemek istemezsiniz. Her istekte yanıt garanti edilmez. Sorgu bir soru gibi görünmelidir ve içerik bir yanıt gibi görünen metni içermelidir.

5. Adım: başka parametreler ekleme

İstekte istediğiniz diğer parametreleri ayarlayın. Yazım denetleyicisi, seçmeve sayı gibi parametreler, yanıtın kalitesini ve okunabilirliğini artırır.

"speller": "lexicon",
"select": "HotelId,HotelName,Description,Category",
"count": true,
"highlightPreTag": "<mark>",
"highlightPostTag": "</mark>",

Vurgu stili, yanıttaki açıklamalı alt yazıların uygulanmış. Varsayılan stili kullanabilir ya da isteğe bağlı olarak, açıklamalı alt yazıların uygulanan vurgu stilini özelleştirebilirsiniz. Açıklamalı alt yazılar, yanıtı özetleyen belgedeki anahtar paslar üzerinde vurgu biçimlendirme uygular. Varsayılan değer: <em>. Biçimlendirme türünü (örneğin, sarı arka plan) belirtmek istiyorsanız, highlightPreTag ve highlightPostTag ' i ayarlayabilirsiniz.

Yanıtı değerlendirme

Tüm sorgularda olduğu gibi, yanıt alınabilir olarak işaretlenmiş tüm alanlardan veya yalnızca select parametresinde listelenen alanlarla oluşur. Özgün ilgi Puanını içerir ve ayrıca, isteği nasıl formüllerinize bağlı olarak bir sayı veya toplu sonuçlar içerebilir.

Bir anlam sorgusunda, yanıtın ek öğeleri vardır: yeni bir anlamsal olarak sıralanmış bir ilgi puanı, düz metin ve Vurgulamalar ve isteğe bağlı olarak bir yanıt.

Bir istemci uygulamasında, belirli bir alanın tüm içeriği yerine, eşleştirme açıklaması olarak bir resim yazısı eklemek için arama sayfasını yapılandırabilirsiniz. Bu, tek tek alanlar arama sonuçları sayfası için çok yoğun olduğunda faydalıdır.

Yukarıdaki örnek sorgusunun yanıtı, en üstteki seçim olarak aşağıdaki eşleşmeyi döndürür. Açıklamalı alt yazılar, düz metin ve vurgulanmış sürümlerle otomatik olarak döndürülür. Bu belirli sorgu ve Corpus için bir tane belirlenemediği için, örnekte yanıt çıkarılır.

"@odata.count": 35,
"@search.answers": [],
"value": [
    {
        "@search.score": 1.8810667,
        "@search.rerankerScore": 1.1446577133610845,
        "@search.captions": [
            {
                "text": "Oceanside Resort. Luxury. New Luxury Hotel. Be the first to stay. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
                "highlights": "<strong>Oceanside Resort.</strong> Luxury. New Luxury Hotel. Be the first to stay.<strong> Bay</strong> views from every room, location near the pier, rooftop pool, waterfront dining & more."
            }
        ],
        "HotelName": "Oceanside Resort",
        "Description": "New Luxury Hotel. Be the first to stay. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
        "Category": "Luxury"
    },

Sonraki adımlar

Anlam derecelendirmenin ve yanıtlarının bir ilk sonuç kümesi üzerinden oluşturulup oluşturulabileceğini hatırlayın. İlk sonuçların kalitesini artıran herhangi bir mantık, anlam aramasına ileri doğru ilerlecektir. Sonraki adım olarak, dizelerin nasıl simgeleştirilmiş olduğunu etkileyen çözümleyiciler, sonuçları ayarlayabilen Puanlama profilleri ve varsayılan ilgi algoritması gibi ilk sonuçlara katkıda bulunan özellikleri gözden geçirin.