Zwracanie odpowiedzi semantycznej w usłudze Azure AI Search
Podczas wywoływania semantycznego klasyfikowania i podpisów możesz opcjonalnie wyodrębnić zawartość z najlepiej pasujących dokumentów, które "odpowiadają" bezpośrednio na zapytanie. Co najmniej jedna odpowiedź może zostać uwzględniona w odpowiedzi, którą można następnie renderować na stronie wyszukiwania, aby poprawić środowisko użytkownika aplikacji.
Semantyczna odpowiedź to dosłowna zawartość w indeksie wyszukiwania, którą model odczytu wyrozumiałości rozpoznał jako odpowiedź na zapytanie złożone w żądaniu. Nie jest to wygenerowana odpowiedź. Aby uzyskać wskazówki dotyczące modelu interakcji użytkownika w stylu czatu, który używa generowania sztucznej inteligencji do tworzenia odpowiedzi z zawartości, zobacz Pobieranie rozszerzonej generacji (RAG) .
W tym artykule dowiesz się, jak zażądać semantycznej odpowiedzi, rozpakować odpowiedź i dowiedzieć się, jakie cechy zawartości najbardziej sprzyja tworzeniu odpowiedzi wysokiej jakości.
Wymagania wstępne
Wszystkie wymagania wstępne dotyczące zapytań semantycznych dotyczą również odpowiedzi, w tym warstwy usług i regionu.
Logika zapytania musi zawierać parametry zapytania semantycznego "queryType=semantic", a także parametr "answers". Wymagane parametry zostały omówione w tym artykule.
Ciągi zapytań wprowadzone przez użytkownika muszą być rozpoznawalne jako pytanie (co, gdzie, kiedy, jak).
Dokumenty wyszukiwania w indeksie muszą zawierać tekst o cechach odpowiedzi, a tekst musi istnieć w jednym z pól wymienionych w konfiguracji semantycznej. Na przykład, biorąc pod uwagę zapytanie "co to jest tabela skrótów", jeśli żadna z pól w konfiguracji semantycznej nie zawiera fragmentów zawierających "Tabela skrótów jest ...", jest mało prawdopodobne, że zostanie zwrócona odpowiedź.
Uwaga
Począwszy od 2021-04-30-Preview, żądania tworzenia lub aktualizowania indeksu zaczęły wprowadzać "semanticConfiguration"
wymóg określania pól wejściowych używanych w klasyfikacji semantycznej.
Co to jest semantyczna odpowiedź?
Semantyczna odpowiedź to podstruktura semantycznej odpowiedzi zapytania. Składa się z co najmniej jednego fragmentu z dokumentu wyszukiwania sformułowanego jako odpowiedź na zapytanie, które wygląda jak pytanie. Aby zwrócić odpowiedź, frazy lub zdania muszą istnieć w dokumencie wyszukiwania, który ma cechy językowe odpowiedzi, a samo zapytanie musi być postawione jako pytanie.
Usługa Azure AI Search używa modelu zrozumienia maszynowego do rozpoznawania i wybierania najlepszej odpowiedzi. Model tworzy zestaw potencjalnych odpowiedzi z dostępnej zawartości, a gdy osiągnie wystarczająco wysoki poziom ufności, proponuje jeden jako odpowiedź.
Odpowiedzi są zwracane jako niezależny obiekt najwyższego poziomu w ładunku odpowiedzi zapytania, który można renderować na stronach wyszukiwania wraz z wynikami wyszukiwania bocznego. Strukturalnie jest to element tablicy w odpowiedzi składającej się z tekstu, klucza dokumentu i wskaźnika ufności.
Formułowanie zapytania REST dla "odpowiedzi"
Aby zwrócić odpowiedź semantyczną, zapytanie musi mieć semantyczne "queryType"
parametry , "queryLanguage"
, "semanticConfiguration"
i "answers"
. Określenie tych parametrów nie gwarantuje odpowiedzi, ale żądanie musi je uwzględnić w celu przetworzenia odpowiedzi.
{
"search": "how do clouds form",
"queryType": "semantic",
"queryLanguage": "en-us",
"semanticConfiguration": "my-semantic-config",
"answers": "extractive|count-3",
"captions": "extractive|highlight-true",
"count": "true"
}
Ciąg zapytania nie może mieć wartości null i powinien być sformułowany jako pytanie.
"queryType"
musi być ustawiona na "semantyka."queryLanguage"
musi być jedną z wartości z listy obsługiwanych języków (interfejs API REST).Element
"semanticConfiguration"
określa, które pola ciągu dostarczają tokeny do modelu wyodrębniania. Te same pola, które tworzą podpisy, również generują odpowiedzi. Aby uzyskać szczegółowe informacje, zobacz Tworzenie konfiguracji semantycznej.W przypadku
"answers"
parametru konstrukcja parametru to"answers": "extractive"
, gdzie zwracana jest domyślna liczba zwróconych odpowiedzi. Możesz zwiększyć liczbę odpowiedzi, dodając wartość ,count
jak pokazano w powyższym przykładzie, maksymalnie 10. Niezależnie od tego, czy potrzebujesz więcej niż jednej odpowiedzi, zależy od środowiska użytkownika aplikacji i sposobu renderowania wyników.
Rozpakuj "odpowiedź" z odpowiedzi
Odpowiedzi znajdują się w tablicy "@search.answers"
, która pojawia się jako pierwsza w odpowiedzi na zapytanie. Każda odpowiedź w tablicy obejmuje:
- Klucz dokumentu
- Tekst lub zawartość odpowiedzi, w postaci zwykłego tekstu lub z formatowaniem
- Współczynnik ufności
Jeśli odpowiedź jest nieokreślona, odpowiedź jest wyświetlana jako "@search.answers": []
. Tablica odpowiedzi jest po tablicy wartości, która jest standardową odpowiedzią w zapytaniu semantycznym.
Biorąc pod uwagę zapytanie "jak utworzyć chmury", poniższy przykład ilustruje odpowiedź:
{
"@search.answers": [
{
"key": "4123",
"text": "Sunlight heats the land all day, warming that moist air and causing it to rise high into the atmosphere until it cools and condenses into water droplets. Clouds generally form where air is ascending (over land in this case), but not where it is descending (over the river).",
"highlights": "Sunlight heats the land all day, warming that moist air and causing it to rise high into the atmosphere until it cools and condenses into water droplets. Clouds generally form<em> where air is ascending</em> (over land in this case), but not where it is<em> descending</em> (over the river).",
"score": 0.94639826
}
],
"value": [
{
"@search.score": 0.5479723,
"@search.rerankerScore": 1.0321671911515296,
"@search.captions": [
{
"text": "Like all clouds, it forms when the air reaches its dew point—the temperature at which an air mass is cool enough for its water vapor to condense into liquid droplets. This false-color image shows valley fog, which is common in the Pacific Northwest of North America.",
"highlights": "Like all<em> clouds</em>, it<em> forms</em> when the air reaches its dew point—the temperature at which an air mass is cool enough for its water vapor to condense into liquid droplets. This false-color image shows valley<em> fog</em>, which is common in the Pacific Northwest of North America."
}
],
"title": "Earth Atmosphere",
"content": "Fog is essentially a cloud lying on the ground. Like all clouds, it forms when the air reaches its dew point—the temperature at \n\nwhich an air mass is cool enough for its water vapor to condense into liquid droplets.\n\nThis false-color image shows valley fog, which is common in the Pacific Northwest of North America. On clear winter nights, the \n\nground and overlying air cool off rapidly, especially at high elevations. Cold air is denser than warm air, and it sinks down into the \n\nvalleys. The moist air in the valleys gets chilled to its dew point, and fog forms. If undisturbed by winds, such fog may persist for \n\ndays. The Terra satellite captured this image of foggy valleys northeast of Vancouver in February 2010.\n\n\n",
"locations": [
"Pacific Northwest",
"North America",
"Vancouver"
]
}
]
}
Podczas projektowania strony wyników wyszukiwania zawierającej odpowiedzi pamiętaj, aby obsłużyć przypadki, w których nie znaleziono odpowiedzi.
W obrębie @search.answerselementu :
"klucz" to klucz dokumentu lub identyfikator dopasowania. Przy użyciu klucza dokumentu można użyć interfejsu API wyszukiwania dokumentów , aby pobrać dowolne lub wszystkie części dokumentu wyszukiwania, które mają być uwzględnione na stronie wyszukiwania lub na stronie szczegółów.
Wartości "text" i "highlights" zapewniają identyczną zawartość zarówno w postaci zwykłego tekstu, jak i z wyróżnionymi elementami.
Domyślnie wyróżnienia są stylowane jako
<em>
, które można zastąpić przy użyciu istniejących parametrów highlightPreTag i highlightPostTag. Jak wspomniano gdzie indziej, istota odpowiedzi to dosłowna zawartość z dokumentu wyszukiwania. Model wyodrębniania szuka cech odpowiedzi, aby znaleźć odpowiednią zawartość, ale nie tworzy nowego języka w odpowiedzi."wynik" to współczynnik ufności, który odzwierciedla siłę odpowiedzi. Jeśli w odpowiedzi znajduje się wiele odpowiedzi, ten wynik jest używany do określenia kolejności. Najważniejsze odpowiedzi i najważniejsze podpisy mogą pochodzić z różnych dokumentów wyszukiwania, gdzie górna odpowiedź pochodzi z jednego dokumentu, a górny podpis z innego, ale ogólnie te same dokumenty są wyświetlane na pierwszych pozycjach w każdej tablicy.
Po odpowiedziach następuje tablica "value" , która zawsze zawiera wyniki, podpisy i wszystkie pola, które są domyślnie możliwe do pobrania. Jeśli określono parametr select, tablica "value" jest ograniczona do określonych pól. Aby uzyskać szczegółowe informacje, zobacz Konfigurowanie klasyfikatora semantycznego.
Porady dotyczące tworzenia odpowiedzi wysokiej jakości
Aby uzyskać najlepsze wyniki, zwróć semantyczne odpowiedzi na korpus dokumentu o następujących cechach:
"semanticConfiguration" musi zawierać pola, które oferują wystarczający tekst, w którym prawdopodobnie zostanie znaleziona odpowiedź. Pola bardziej prawdopodobne, aby zawierały odpowiedzi, powinny być wyświetlane jako pierwsze w obszarze "priorytetizedContentFields". Jako odpowiedź może pojawić się tylko tekst z dokumentu.
Ciągi zapytania nie mogą mieć wartości null (search=
*
), a ciąg powinien mieć cechy pytania, takie jak "what is" lub "how to", w przeciwieństwie do wyszukiwania słów kluczowych składających się z terminów lub fraz w dowolnej kolejności. Jeśli ciąg zapytania nie wydaje się być pytaniem, przetwarzanie odpowiedzi jest pomijane, nawet jeśli żądanie określa "odpowiedzi" jako parametr zapytania.Wyodrębnianie semantyczne i podsumowywanie mają limity dotyczące liczby tokenów na dokument, które można analizować w odpowiednim czasie. W praktyce, jeśli masz duże dokumenty, które wpadają w setki stron, spróbuj najpierw podzielić zawartość na mniejsze dokumenty.