Konfigurowanie semantycznego klasyfikowania i zwracania podpisów w wynikach wyszukiwania

Ważne

Wyszukiwanie semantyczne jest w publicznej wersji zapoznawczej w ramach dodatkowych warunków użytkowania. Jest ona dostępna za pośrednictwem Azure Portal, interfejsów API REST w wersji zapoznawczej i zestawów SDK w wersji beta. Ta funkcja jest rozliczana. Zobacz Dostępność i cennik.

W tym artykule dowiesz się, jak wywołać algorytm klasyfikacji semantycznej dla zestawu wyników, promując najbardziej semantycznie istotne wyniki na górze stosu. Możesz również uzyskać podpisy semantyczne z wyróżnieniami dotyczącymi najbardziej odpowiednich terminów i fraz oraz semantycznych odpowiedzi.

Istnieją dwa główne działania do wykonania:

  • Dodawanie konfiguracji semantycznej do indeksu
  • Dodawanie parametrów do żądania zapytania

Wymagania wstępne

  • Usługa wyszukiwania w warstwie Standardowa (S1, S2, S3) lub zoptymalizowana pod kątem magazynu (L1, L2), w następujących regionach: Australia Wschodnia, Wschodnie stany USA, Wschodnie stany USA 2, Północno-środkowe stany USA, Południowo-środkowe stany USA, Zachodnie stany USA, Zachodnie stany USA 2, Europa Północna, Południowe Zjednoczone Królestwo, Europa Zachodnia.

    Jeśli masz istniejącą usługę S1 lub większą w jednym z tych regionów, możesz włączyć wyszukiwanie semantyczne bez konieczności tworzenia nowej usługi.

  • Wyszukiwanie semantyczne jest włączone w usłudze wyszukiwania.

  • Istniejący indeks wyszukiwania z bogatą zawartością w obsługiwanym języku zapytań. Wyszukiwanie semantyczne najlepiej sprawdza się w przypadku zawartości, która jest informacyjna lub opisowa.

  • Jeśli potrzebujesz wprowadzenia do funkcji, zapoznaj się z omówieniem wyszukiwania semantycznego .

Uwaga

Transkrypty i odpowiedzi są wyodrębniane dosłownie z tekstu w dokumencie wyszukiwania. Podsystem semantyczny określa, która część zawartości ma cechy podpisu lub odpowiedzi, ale nie tworzy nowych zdań ani fraz. Z tego powodu zawartość zawierająca wyjaśnienia lub definicje najlepiej sprawdza się w przypadku wyszukiwania semantycznego.

1 — Wybieranie klienta

Będziesz potrzebować klienta wyszukiwania, który obsługuje interfejsy API w wersji zapoznawczej w żądaniu zapytania. Oto kilka opcji:

2 — Tworzenie konfiguracji semantycznej

Ważne

Konfiguracja semantyczna jest wymagana dla interfejsów API REST 2021-04-30-Preview, Eksploratora wyszukiwania i niektórych wersji zestawów SDK w wersji beta. Jeśli używasz interfejsu API REST 2020-06-30-preview, pomiń ten krok i użyj podejścia "searchFields" dla priorytetyzacji pól .

Konfiguracja semantyczna określa sposób użycia pól w klasyfikacji semantycznej. Udostępnia on podstawowe wskazówki dotyczące modeli, które pola indeksu są najważniejsze dla semantycznego rankingu, podpisów, wyróżnień i odpowiedzi.

Do definicji indeksu dodasz konfigurację semantyczną. Poniższe sekcje z kartami zawierają instrukcje dotyczące interfejsów API REST, Azure Portal i zestawu .NET SDK (wersja zapoznawcza).

W dowolnym momencie można dodać lub zaktualizować konfigurację semantyczną bez ponownego kompilowania indeksu. W przypadku wystawiania zapytania dodasz konfigurację semantyczną (jedną na zapytanie), która określa, która konfiguracja semantyczna ma być używana dla zapytania.

  1. Przejrzyj właściwości, które należy określić. Konfiguracja semantyczna ma nazwę i co najmniej jedną z następujących właściwości:

    • Pole tytułu — pole tytułu powinno być zwięzłym opisem dokumentu, w idealnym przypadku ciągiem poniżej 25 wyrazów. To pole może być tytułem dokumentu, nazwą produktu lub elementem w indeksie wyszukiwania. Jeśli nie masz tytułu w indeksie wyszukiwania, pozostaw to pole puste.
    • Pola zawartości — pola zawartości powinny zawierać tekst w formularzu języka naturalnego. Typowe przykłady zawartości to treść dokumentu, opis produktu lub inny dowolny tekst.
    • Pola słów kluczowych — pola słowa kluczowego powinny być listą słów kluczowych, takich jak tagi w dokumencie lub termin opisowy, taki jak kategoria elementu.

    Można określić tylko jedno pole tytułu, ale można określić dowolną liczbę pól zawartości i słów kluczowych. W przypadku pól zawartości i słów kluczowych wyświetl listę pól w kolejności priorytetów, ponieważ pola o niższym priorytecie mogą zostać obcięte.

  2. Dla powyższych właściwości określ, które pola mają zostać przypisane.

    Pole musi być obsługiwanym typem danych i powinno zawierać ciągi. Jeśli dołączysz nieprawidłowe pole, nie wystąpi błąd, ale te pola nie będą używane w klasyfikacji semantycznej.

    Typ danych Przykład z pliku hotels-sample-index
    Edm.String HotelName, Category, Description
    Edm.ComplexType Address.StreetNumber, Address.City, Address.StateProvince, Address.PostalCode
    Collection(Edm.String) Tagi (rozdzielana przecinkami lista ciągów)

    Uwaga

    Pola podrzędne pól Collection(Edm.ComplexType) nie są obecnie obsługiwane przez wyszukiwanie semantyczne i nie będą używane do semantycznego klasyfikowania, podpisów ani odpowiedzi.

  1. Zaloguj się do Azure Portal i przejdź do usługi wyszukiwania, która ma włączone wyszukiwanie semantyczne.

  2. Otwórz indeks.

  3. Wybierz pozycję Konfiguracje semantyczne , a następnie wybierz pozycję Dodaj konfigurację semantyczną.

    Zostanie otwarta strona Nowa konfiguracja semantyczna z opcjami wybierania pola tytułu, pól zawartości i pól słów kluczowych. Pamiętaj, aby wyświetlić listę pól zawartości i pól słów kluczowych w kolejności priorytetów.

    Wybierz przycisk OK , aby zapisać zmiany.

    Zrzut ekranu przedstawiający sposób tworzenia konfiguracji semantycznej w Azure Portal.

Porada

Aby zapoznać się z przykładem tworzenia konfiguracji semantycznej i używania jej do wystawiania zapytania semantycznego, zapoznaj się z przykładem semantycznego wyszukiwania Postman.

2b — użyj pól wyszukiwania na potrzeby priorytetyzacji pól

Ten krok dotyczy tylko rozwiązań korzystających z interfejsu API REST 2020-06-30-Preview lub zestawu SDK beta, który nie obsługuje konfiguracji semantycznych. Zamiast ustawiać priorytetyzację pól w indeksie za pomocą konfiguracji semantycznej, należy ustawić priorytet w czasie zapytania przy użyciu parametru "searchFields" zapytania.

Priorytetyzacja pól przy użyciu opcji "searchFields" była szczegółem wczesnej implementacji, który nie będzie obsługiwany po zakończeniu semantycznego wyszukiwania w publicznej wersji zapoznawczej. Zachęcamy do korzystania z konfiguracji semantycznych, jeśli zezwalają na to wymagania aplikacji.

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"  
}

Kolejność pól jest krytyczna, ponieważ semantyczny ranga ogranicza ilość zawartości, którą może przetworzyć, jednocześnie zapewniając rozsądny czas odpowiedzi. Zawartość z pól na początku listy jest bardziej prawdopodobna; zawartość z końca może zostać obcięta w przypadku osiągnięcia maksymalnego limitu. Aby uzyskać więcej informacji, zobacz Wstępne przetwarzanie podczas klasyfikacji semantycznej.

  • Jeśli określasz tylko jedno pole, wybierz pole opisowe, w którym można znaleźć odpowiedź na zapytania semantyczne, takie jak główna zawartość dokumentu.

  • W przypadku co najmniej dwóch pól w polach wyszukiwania:

    • Pierwsze pole zawsze powinno być zwięzłe (na przykład tytuł lub nazwa), najlepiej ciąg, który znajduje się poniżej 25 wyrazów.

    • Jeśli indeks ma pole adresu URL, które jest czytelne dla człowieka, takie jak www.domain.com/name-of-the-document-and-other-details (zamiast fokusu komputera, na przykład www.domain.com/?id=23463&param=eis), umieść go na drugim miejscu na liście (lub najpierw, jeśli nie ma zwięzłego pola tytułu).

    • Postępuj zgodnie z powyższymi polami z innymi polami opisowymi, w których można znaleźć odpowiedź na zapytania semantyczne, takie jak główna zawartość dokumentu.

Podczas ustawiania opcji "searchFields" wybierz tylko pola następujących obsługiwanych typów danych:

Typ danych Przykład z pliku hotels-sample-index
Edm.String HotelName, Category, Description
Edm.ComplexType Address.StreetNumber, Address.City, Address.StateProvince, Address.PostalCode
Collection(Edm.String) Tagi (rozdzielana przecinkami lista ciągów)

W przypadku uwzględnienia nieprawidłowego pola nie ma błędu, ale te pola nie będą używane w klasyfikacji semantycznej.

3 — Unikaj funkcji pomijających ocenianie istotności

Kilka funkcji zapytań w usłudze Cognitive Search nie przechodzi oceniania istotności, a niektóre całkowicie pomijają aparat wyszukiwania pełnotekstowego. Jeśli logika zapytań zawiera następujące funkcje, nie uzyskasz wyników istotności ani klasyfikacji semantycznej na wynikach:

  • Filtry, rozmyte zapytania wyszukiwania i wyrażenia regularne iterują nieuwzwolony tekst, skanując pod kątem dopasowań dosłownych w zawartości. Wyniki wyszukiwania dla wszystkich powyższych formularzy zapytań są jednolite 1.0 i nie zapewniają znaczących danych wejściowych dla klasyfikacji semantycznej.

  • Sortowanie (klauzule orderBy) w określonych polach spowoduje również zastąpienie wyników wyszukiwania i wyniku semantycznego. Biorąc pod uwagę, że wynik semantyczny jest używany do zamawiania wyników, w tym jawna logika sortowania spowoduje zwrócenie błędu HTTP 400.

4 — Konfigurowanie zapytania

Następnym krokiem jest dodanie parametrów do żądania zapytania. Aby pomyślnie wykonać zapytanie, powinno być wyszukiwanie pełnotekstowe (używając parametru "search" do przekazania ciągu), a indeks powinien zawierać pola tekstowe z zawartością semantyczną sformatowaną.

Eksplorator wyszukiwania został zaktualizowany, aby uwzględnić opcje zapytań semantycznych. Aby skonfigurować klasyfikację semantyczną w portalu, wykonaj poniższe kroki:

  1. Otwórz Azure Portal i przejdź do usługi wyszukiwania z włączonym semantycznym wyszukiwaniem.

  2. Wybierz pozycję Eksplorator wyszukiwania w górnej części strony przeglądu.

  3. Wybierz indeks zawierający zawartość w obsługiwanym języku.

  4. W Eksploratorze wyszukiwania ustaw opcje zapytania, które umożliwiają semantyczne zapytania, konfiguracje semantyczne i korektę pisowni. Możesz również wkleić wymagane parametry zapytania do ciągu zapytania.

Zrzut ekranu przedstawiający opcje zapytania w Eksploratorze wyszukiwania.

5 — Ocena odpowiedzi

Tylko 50 pierwszych dopasowań z początkowych wyników może być semantycznie sklasyfikowanych. Podobnie jak w przypadku wszystkich zapytań, odpowiedź składa się z wszystkich pól oznaczonych jako możliwe do pobrania lub tylko tych pól wymienionych w parametrze select. Odpowiedź zawiera oryginalny wynik istotności, a także może zawierać liczbę lub wyniki wsadowe w zależności od sposobu sformułowania żądania.

W wyszukiwaniu semantycznym odpowiedź ma więcej elementów: nowy semantycznie sklasyfikowany wynik istotności, opcjonalny podpis w postaci zwykłego tekstu i wyróżnionych oraz opcjonalna odpowiedź. Jeśli wyniki nie zawierają tych dodatkowych elementów, zapytanie może zostać nieprawidłowo skonfigurowane. W pierwszym kroku rozwiązywania problemu sprawdź konfigurację semantyczną, aby upewnić się, że jest ona określona zarówno w definicji indeksu, jak i zapytaniu.

W aplikacji klienckiej można utworzyć strukturę strony wyszukiwania, aby uwzględnić podpis jako opis dopasowania, a nie całą zawartość określonego pola. Takie podejście jest przydatne, gdy poszczególne pola są zbyt gęste dla strony wyników wyszukiwania.

Odpowiedź dla powyższego przykładowego zapytania zwraca następujące dopasowanie jako najlepsze. Zwracane są napisy, ponieważ właściwość "captions" jest ustawiona z tekstem zwykłym i wyróżnionymi wersjami. Odpowiedzi są pomijane z przykładu, ponieważ nie można określić tego konkretnego zapytania i korpusu.

"@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"
    },

Następne kroki

Pamiętaj, że semantyczne klasyfikacje i odpowiedzi są tworzone na podstawie początkowego zestawu wyników. Każda logika, która poprawia jakość początkowych wyników, będzie przenoszona do wyszukiwania semantycznego. W następnym kroku przejrzyj funkcje, które przyczyniają się do początkowych wyników, w tym analizatory wpływające na sposób tokenizacji ciągów, profile oceniania, które mogą dostrajać wyniki i domyślny algorytm istotności.