Ocenianie istotności w wyszukiwaniu hybrydowym przy użyciu wzajemnego łączenia rangi (RRF)

Wzajemne łączenie rangi (RRF) to algorytm, który ocenia wyniki wyszukiwania z wielu, wcześniej sklasyfikowanych wyników w celu wygenerowania ujednoliconego zestawu wyników. W usłudze Azure AI Search RRF jest używany zawsze, gdy istnieją co najmniej dwa zapytania, które są wykonywane równolegle. Każde zapytanie tworzy sklasyfikowany zestaw wyników, a funkcja RRF służy do scalania i homogenizowania klasyfikacji w jednym zestawie wyników zwróconym w odpowiedzi zapytania. Przykłady scenariuszy, w których RRF jest zawsze używane, obejmują wyszukiwanie hybrydowe i wiele zapytań wektorowych wykonywanych jednocześnie.

RRF opiera się na koncepcji wzajemnej rangi, która jest odwrotnością rangi pierwszego odpowiedniego dokumentu na liście wyników wyszukiwania. Celem techniki jest uwzględnienie pozycji elementów w oryginalnych rankingach i nadanie większego znaczenia elementom, które są klasyfikowane wyżej na wielu listach. Może to pomóc poprawić ogólną jakość i niezawodność końcowego rankingu, co czyni go bardziej przydatnym w zadaniu łączenia wielu uporządkowanych wyników wyszukiwania.

Jak działa klasyfikacja RRF

Funkcja RRF działa przez pobranie wyników wyszukiwania z wielu metod, przypisanie wzajemnego wyniku klasyfikacji do każdego dokumentu w wynikach, a następnie połączenie wyników w celu utworzenia nowego rankingu. Koncepcja polega na tym, że dokumenty pojawiające się na pierwszych pozycjach w wielu metodach wyszukiwania prawdopodobnie będą bardziej istotne i powinny zostać sklasyfikowane wyżej w połączonym wyniku.

Oto proste wyjaśnienie procesu RRF:

  1. Uzyskaj sklasyfikowane wyniki wyszukiwania z wielu zapytań wykonywanych równolegle.

  2. Przypisz wzajemne wyniki klasyfikacji w celu uzyskania wyników na każdej z list sklasyfikowanych. Funkcja RRF generuje nowe @search.score dla każdego dopasowania w każdym zestawie wyników. Dla każdego dokumentu w wynikach wyszukiwania aparat przypisuje wynik wzajemnej rangi na podstawie jego pozycji na liście. Wynik jest obliczany jako 1/(rank + k), gdzie rank jest pozycją dokumentu na liście i k jest stałą, która została eksperymentalnie zaobserwowana, aby wykonać najlepiej, jeśli jest ustawiona na małą wartość, na przykład 60. Należy pamiętać, że ta k wartość jest stałą w algorytmie RRF i całkowicie oddzielona od k tej, która kontroluje liczbę najbliższych sąsiadów.

  3. Połącz wyniki. Dla każdego dokumentu aparat sumuje wzajemne wyniki klasyfikacji uzyskane z każdego systemu wyszukiwania, generując łączny wynik dla każdego dokumentu. 

  4. Aparat klasyfikuje dokumenty na podstawie połączonych wyników i sortuje je. Wynikowa lista jest rankingem połączonym.

Do oceniania są używane tylko pola oznaczone jako searchable w indeksie lub searchFields w zapytaniu. Tylko pola oznaczone jako retrievablelub określone w select zapytaniu są zwracane w wynikach wyszukiwania wraz z ich wynikiem wyszukiwania.

Równoległe wykonywanie zapytań

RRF jest używany w dowolnym momencie, gdy istnieje więcej niż jedno wykonanie zapytania. W poniższych przykładach przedstawiono wzorce zapytań, w których odbywa się równoległe wykonywanie zapytań:

  • Zapytanie pełnotekstowe oraz jedno zapytanie wektorowe (prosty scenariusz hybrydowy) równa się dwóm wykonaniom zapytań.
  • Zapytanie pełnotekstowe oraz jedno zapytanie wektorowe przeznaczone dla dwóch pól wektorów jest równe trzy wykonania zapytania.
  • Zapytanie pełnotekstowe i dwa zapytania wektorowe przeznaczone dla pięciu pól wektorów są równe 11 wykonań zapytań

Wyniki w wynikach wyszukiwania hybrydowego

Za każdym razem, gdy wyniki są klasyfikowane, @search.score właściwość zawiera wartość używaną do zamawiania wyników. Wyniki są generowane przez algorytmy klasyfikacji, które różnią się w zależności od każdej metody. Każdy algorytm ma swój własny zakres i wielkość.

Poniższy wykres identyfikuje właściwość oceniania zwracaną dla każdego dopasowania, algorytmu i zakresu wyników dla każdego algorytmu klasyfikacji istotności.

Metoda wyszukiwania Parametr Algorytm oceniania Zakres
wyszukiwanie pełnotekstowe @search.score Algorytm BM25 Brak górnego limitu.
wyszukiwanie wektorów @search.score Algorytm HNSW korzystający z metryki podobieństwa określonej w konfiguracji HNSW. 0,333 – 1,00 (Cosine), od 0 do 1 dla euklidesanów i dotproduct.
wyszukiwanie hybrydowe @search.score Algorytm RRF Górny limit jest ograniczony przez liczbę połączonych zapytań, a każde zapytanie współtworzone maksymalnie 1 do wyniku RRF. Na przykład scalanie trzech zapytań spowodowałoby wygenerowanie wyższych wyników RRF niż w przypadku scalenia tylko dwóch wyników wyszukiwania.
klasyfikacja semantyczna @search.rerankerScore Ranking semantyczny 0.00 - 4.00

Ranking semantyczny nie uczestniczy w RRF. Jego wynik (@search.rerankerScore) jest zawsze zgłaszany oddzielnie w odpowiedzi na zapytanie. Klasyfikacja semantyczna może ponownie korektować pełny tekst i wyniki wyszukiwania hybrydowego, zakładając, że wyniki te obejmują pola o zawartości wzbogaconej semantycznie.

Liczba sklasyfikowanych wyników w odpowiedzi na zapytanie hybrydowe

Domyślnie, jeśli nie używasz stronicowania, wyszukiwarka zwraca 50 najlepszych dopasowań klasyfikacji dla wyszukiwania pełnotekstowego i najbardziej podobnych k dopasowań do wyszukiwania wektorów. W zapytaniu top hybrydowym określa liczbę wyników w odpowiedzi. W oparciu o wartości domyślne zwracane są 50 najlepiej sklasyfikowanych dopasowań ujednoliconego zestawu wyników.

Często wyszukiwarka znajduje więcej wyników niż top i k. Aby zwrócić więcej wyników, użyj parametrów topstronicowania , skipi next. Stronicowanie to sposób określania liczby wyników na każdej stronie logicznej i przechodzenia przez pełny ładunek.

Wyszukiwanie pełnotekstowe podlega maksymalnemu limitowi 1000 dopasowań (zobacz Limity odpowiedzi interfejsu API). Po znalezieniu 1000 dopasowań wyszukiwarka nie szuka już więcej.

Aby uzyskać więcej informacji, zobacz Jak pracować z wynikami wyszukiwania.

Diagram przepływu pracy oceniania wyszukiwania

Na poniższym diagramie przedstawiono zapytanie hybrydowe, które wywołuje wyszukiwanie słów kluczowych i wektorów, zwiększając je za pośrednictwem profilów oceniania i klasyfikację semantyczną.

Diagram of prefilters.

Zapytanie, które generuje poprzedni przepływ pracy, może wyglądać następująco:

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2023-11-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
   "queryType":"semantic",
   "search":"hello world",
   "searchFields":"field_a, field_b",
   "vectorQueries": [
       {
           "kind":"vector",
           "vector": [1.0, 2.0, 3.0],
           "fields": "field_c, field_d"
       },
       {
           "kind":"vector",
           "vector": [4.0, 5.0, 6.0],
           "fields": "field_d, field_e"
       }
   ],
   "scoringProfile":"my_scoring_profile"
}

Zobacz też