Tworzenie semantycznego zapytania w usłudze Azure AI Search

W tym artykule dowiesz się, jak wywołać semantyczny ranking w zestawie wyników, promując najbardziej semantycznie istotne wyniki na górze stosu. Można również uzyskać semantyczne podpis z wyróżnionymi terminami i frazami oraz semantycznymi odpowiedziami.

Wymagania wstępne

Uwaga

Transkrypty i odpowiedzi są wyodrębniane z tekstu w dokumencie wyszukiwania. Podsystem semantyczny używa zrozumienia maszynowego do rozpoznawania zawartości o cechach podpis lub odpowiedzi, ale nie komponuje nowych zdań ani fraz. Z tego powodu zawartość zawierająca wyjaśnienia lub definicje najlepiej sprawdza się w przypadku klasyfikacji semantycznej. Jeśli chcesz użyć interakcji w stylu czatu z wygenerowanymi odpowiedziami, zobacz Pobieranie rozszerzonej generacji (RAG).

Wybieranie klienta

Wybierz klienta wyszukiwania, który obsługuje klasyfikację semantyczną. Oto kilka opcji:

Unikaj funkcji pomijających ocenianie istotności

Kilka funkcji zapytań w usłudze Azure AI Search pomija ocenianie istotności lub jest w inny sposób niezgodnych z klasyfikacją semantyczną. Jeśli logika zapytań zawiera następujące funkcje, nie można semantycznie sklasyfikować wyników:

  • Zapytanie z search=* pustym ciągiem wyszukiwania, takim jak czyste zapytanie tylko do filtrowania, nie będzie działać, ponieważ nie ma nic do mierzenia istotności semantycznej. Zapytanie musi podać terminy lub frazy, które można ocenić podczas przetwarzania.

  • Zapytanie złożone w pełnej składni Lucene (queryType=full) jest niezgodne z semantycznym rankingiem (queryType=semantic). Model semantyczny nie obsługuje pełnej składni Lucene.

  • Sortowanie (klauzule orderBy) dla określonych pól zastępuje wyniki wyszukiwania i wynik semantyczny. Biorąc pod uwagę, że semantyczny wynik ma dostarczyć klasyfikację, dodanie klauzuli orderby powoduje błąd HTTP 400, jeśli zastosujesz semantyczny ranking dla uporządkowanych wyników.

Konfigurowanie zapytania

W tym kroku dodaj parametry do żądania zapytania. Aby zapytanie zakończyło się pomyślnie, powinno to być wyszukiwanie pełnotekstowe (przy użyciu parametru search do przekazania ciągu), a indeks powinien zawierać pola tekstowe z zawartością semantyczną sformatowaną i konfiguracją semantyczną.

Eksplorator wyszukiwania zawiera opcje klasyfikacji semantycznej.

  1. Zaloguj się w witrynie Azure Portal.

  2. Otwórz indeks wyszukiwania i wybierz pozycję Eksplorator wyszukiwania.

  3. Wybierz pozycję Opcje zapytania. Jeśli konfiguracja semantyczna została już zdefiniowana, jest ona domyślnie wybrana. Jeśli go nie masz, utwórz konfigurację semantyczną dla indeksu.

    Screenshot showing query options in Search explorer.

  4. Wprowadź zapytanie, takie jak "zabytkowy hotel z dobrym jedzeniem", a następnie wybierz pozycję Wyszukaj.

  5. Alternatywnie wybierz widok JSON i wklej definicje do edytora zapytań:

    Screenshot showing JSON query syntax in the Azure portal.

    Oto tekst JSON, który można wkleić do widoku:

     {
         "queryType": "semantic",
         "search": "historic hotel with good food",
         "semanticConfiguration": "my-semantic-config",
         "answers": "extractive|count-3",
         "captions": "extractive|highlight-true",
         "highlightPreTag": "<strong>",
         "highlightPostTag": "</strong>",
         "select": "HotelId,HotelName,Description,Category",
         "count": true
     }
    

Ocenianie 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ę ze wszystkich pól oznaczonych jako możliwe do pobrania lub tylko tych pól wymienionych w parametrze select. Odpowiedź zawiera oryginalny wynik istotności i może również zawierać liczbę lub wyniki wsadowe, w zależności od sposobu sformułowania żądania.

W klasyfikacji semantycznej odpowiedź zawiera więcej elementów: nowy semantycznie sklasyfikowany wynik istotności, opcjonalny podpis w postaci zwykłego tekstu i z wyróżnieniami oraz opcjonalną odpowiedzią. 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ą podpisy, ponieważ właściwość "podpis s" jest ustawiona z tekstem zwykłym i wyróżnionymi wersjami. Odpowiedzi zostały pominięte w przykładzie, ponieważ nie można określić ich dla 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

Klasyfikacja semantyczna może być używana w zapytaniach hybrydowych, które łączą wyszukiwanie słów kluczowych i wyszukiwanie wektorów w jednym żądaniu i ujednoliconą odpowiedź.