Dodawanie semantycznego rankingu do zapytań w usłudze Azure AI Search
Klasyfikację semantyczną można zastosować do zapytań tekstowych, zapytań hybrydowych i zapytań wektorowych, jeśli dokumenty wyszukiwania zawierają pola ciągów, a zapytanie wektorowe zawiera reprezentację tekstową w dokumencie wyszukiwania.
W tym artykule wyjaśniono, jak wywołać semantyczny rangator zapytań. Założono, że używasz najnowszych stabilnych lub zapoznawczych interfejsów API. Aby uzyskać pomoc dotyczącą starszych wersji, zobacz Migrowanie semantycznego kodu klasyfikacji.
Wymagania wstępne
Usługa wyszukiwania, warstwa Podstawowa lub nowsza z włączonym semantycznym rankerem.
Istniejący indeks wyszukiwania z konfiguracją semantyczną i zawartością tekstu sformatowanego.
Przejrzyj klasyfikację semantyczną, jeśli potrzebujesz wprowadzenia do funkcji.
Uwaga
Transkrypty i odpowiedzi są wyodrębniane z tekstu w dokumencie wyszukiwania. Podsystem semantyczny używa zrozumienia odczytu maszynowego do rozpoznawania zawartości o cechach podpisu 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
Aby utworzyć zapytanie korzystające z klasyfikacji semantycznej, można użyć dowolnego z następujących narzędzi i zestawów SDK:
- Witryna Azure Portal, korzystając z projektanta indeksów, aby dodać konfigurację semantyczną.
- Program Visual Studio Code z klientem REST
- Zestaw Azure SDK dla platformy .NET
- Zestaw Azure SDK dla środowiska Python
- Zestaw Azure SDK dla języka Java
- Zestaw Azure SDK dla języka JavaScript
Unikaj funkcji pomijających ocenianie istotności
Kilka możliwości zapytań pomija ocenianie istotności, co sprawia, że są one niezgodne 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 względem i dlatego wyniki wyszukiwania są zerowe. Zapytanie musi podać terminy lub frazy, które można ocenić podczas przetwarzania.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
Domyślnie zapytania nie używają klasyfikacji semantycznej. Aby użyć klasyfikacji semantycznej, można użyć dwóch różnych parametrów. Każdy parametr obsługuje inny zestaw scenariuszy.
Zapytania semantyczne, niezależnie od tego, czy są określone za pomocą search
znaku plus queryType
, czy za pośrednictwem semanticQuery
, muszą mieć zwykły tekst i nie mogą być puste. Puste zapytania nie powodują zastosowania klasyfikacji semantycznej do wyników.
Parametr semantycznego rangatora | Wyszukiwanie zwykłego tekstu | Prosta składnia wyszukiwania tekstu | Składnia wyszukiwania pełnotekstowego | Wyszukiwanie wektorowe | Wyszukiwanie hybrydowe | Semantyczne odpowiedzi i podpisy |
---|---|---|---|---|---|---|
queryType-semantic 1 |
✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
semanticQuery="<your plain text query>" 2 |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
1 queryType=semantic
nie może obsługiwać jawnych simple
lub full
wartości, ponieważ queryType
parametr jest używany dla elementu semantic
. Skuteczne zachowania zapytań są wartościami domyślnymi prostego analizatora.
2 Parametr semanticQuery
może być używany dla wszystkich typów zapytań. Jednak nie jest on obsługiwany w Eksploratorze wyszukiwania w witrynie Azure Portal.
Niezależnie od wybranego parametru indeks powinien zawierać pola tekstowe z zawartością semantyczną sformatowaną i konfiguracją semantyczną.
Eksplorator wyszukiwania zawiera opcje klasyfikacji semantycznej. Pamiętaj, że nie można ustawić parametru semanticQuery
w witrynie Azure Portal.
Zaloguj się w witrynie Azure Portal.
Otwórz indeks wyszukiwania i wybierz pozycję Eksplorator wyszukiwania.
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.
Wprowadź zapytanie, takie jak "zabytkowy hotel z dobrym jedzeniem", a następnie wybierz pozycję Wyszukaj.
Alternatywnie wybierz widok JSON i wklej definicje do edytora zapytań. Witryna Azure Portal nie obsługuje używania polecenia
semanticQuery
, dlatego wymagane jest ustawieniequeryType
"semantic"
:Przykładowy kod JSON służący do ustawiania typu zapytania na semantyczny, który można wkleić do widoku:
{ "search": "funky or interesting hotel with good food on site", "count": true, "queryType": "semantic", "semanticConfiguration": "my-semantic-config", "captions": "extractive|highlight-true", "answers": "extractive|count-3", "highlightPreTag": "<strong>", "highlightPostTag": "</strong>", "select": "HotelId,HotelName,Description,Category" }
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ź ma więcej elementów: nowy semantycznie sklasyfikowany wynik istotności, opcjonalny podpis w postaci zwykłego tekstu i z wyróżnieniami 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 dołączyć 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ź na powyższe przykładowe zapytanie ("ciekawy hotel z restauracją na miejscu i przytulny lobby lub wspólny obszar") zwraca trzy odpowiedzi ("answers": "extractive|count-e"
). Zwracane są podpisy, ponieważ właściwość "captions" jest ustawiona z tekstem zwykłym i wyróżnionymi wersjami. Jeśli nie można określić odpowiedzi, zostanie pominięta w odpowiedzi. W przypadku zwięzłości w tym przykładzie przedstawiono tylko trzy odpowiedzi i trzy najwyższe wyniki oceniania z zapytania.
{
"@odata.count": 29,
"@search.answers": [
{
"key": "24",
"text": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.",
"highlights": "Chic hotel near the city. <strong>High-rise hotel in downtown, </strong>within<strong> walking distance to </strong>theaters, art<strong> galleries, restaurants and shops.</strong> Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.",
"score": 0.9340000152587891
},
{
"key": "40",
"text": "Only 8 miles from Downtown. On-site bar/restaurant, Free hot breakfast buffet, Free wireless internet, All non-smoking hotel. Only 15 miles from airport.",
"highlights": "Only 8 miles from Downtown. <strong>On-site bar/restaurant, Free hot breakfast buffet, Free wireless internet, </strong>All non-smoking<strong> hotel.</strong> Only 15 miles from airport.",
"score": 0.9210000038146973
},
{
"key": "38",
"text": "Nature is Home on the beach. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the library by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply.",
"highlights": "Nature is Home on the beach. Explore the shore by day, and then come home to our<strong> shared living space </strong>to relax around a stone fireplace, sip something warm, and explore the library by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply.",
"score": 0.9200000166893005
}
],
"value": [
{
"@search.score": 3.2328331,
"@search.rerankerScore": 2.575303316116333,
"@search.captions": [
{
"text": "The best of old town hospitality combined with views of the river and cool breezes off the prairie. Our penthouse suites offer views for miles and the rooftop plaza is open to all guests from sunset to 10 p.m. Enjoy a complimentary continental breakfast in the lobby, and free Wi-Fi throughout the hotel.",
"highlights": "The best of old town hospitality combined with views of the river and cool breezes off the prairie. Our<strong> penthouse </strong>suites offer views for miles and the rooftop<strong> plaza </strong>is open to all guests from sunset to 10 p.m. Enjoy a<strong> complimentary continental breakfast in the lobby, </strong>and free Wi-Fi<strong> throughout </strong>the hotel."
}
],
"HotelId": "50",
"HotelName": "Head Wind Resort",
"Description": "The best of old town hospitality combined with views of the river and cool breezes off the prairie. Our penthouse suites offer views for miles and the rooftop plaza is open to all guests from sunset to 10 p.m. Enjoy a complimentary continental breakfast in the lobby, and free Wi-Fi throughout the hotel.",
"Category": "Suite"
},
{
"@search.score": 0.632956,
"@search.rerankerScore": 2.5425150394439697,
"@search.captions": [
{
"text": "Every stay starts with a warm cookie. Amenities like the Counting Sheep sleep experience, our Wake-up glorious breakfast buffet and spacious workout facilities await.",
"highlights": "Every stay starts with a warm cookie. Amenities like the<strong> Counting Sheep sleep experience, </strong>our<strong> Wake-up glorious breakfast buffet and spacious workout facilities </strong>await."
}
],
"HotelId": "34",
"HotelName": "Lakefront Captain Inn",
"Description": "Every stay starts with a warm cookie. Amenities like the Counting Sheep sleep experience, our Wake-up glorious breakfast buffet and spacious workout facilities await.",
"Category": "Budget"
},
{
"@search.score": 3.7076726,
"@search.rerankerScore": 2.4554927349090576,
"@search.captions": [
{
"text": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.",
"highlights": "Chic hotel near the city. <strong>High-rise hotel in downtown, </strong>within<strong> walking distance to </strong>theaters, art<strong> galleries, restaurants and shops.</strong> Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance."
}
],
"HotelId": "24",
"HotelName": "Uptown Chic Hotel",
"Description": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.",
"Category": "Suite"
},
. . .
]
}
Oczekiwane obciążenia
W przypadku klasyfikacji semantycznej należy oczekiwać, że usługa wyszukiwania będzie obsługiwać maksymalnie 10 współbieżnych zapytań na replikę.
Usługa ogranicza semantyczne żądania klasyfikacji, jeśli woluminy są zbyt wysokie. Komunikat o błędzie zawierający te frazy wskazuje, że usługa znajduje się w pojemności na potrzeby klasyfikacji semantycznej:
Error in search query: Operation returned an invalid status 'Partial Content'`
@search.semanticPartialResponseReason`
CapacityOverloaded
Jeśli przewidujesz spójne wymagania dotyczące przepływności w pobliżu, na poziomie lub wyższym niż na tym poziomie, utwórz bilet pomocy technicznej, abyśmy mogli aprowizować obciążenie.
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ź.