Tworzenie zapytania hybrydowego w Wyszukiwanie AI platformy Azure

Uwaga

Wyszukiwanie AI platformy Azure jest dostępna za pośrednictwem portalu Azure, interfejsów API REST i Azure SDKs. Jest także podstawą Foundry IQ — zarządzanej warstwy wiedzy, która przekształca treści przedsiębiorstwa w bazy wiedzy wielokrotnego użytku z uwzględnieniem uprawnień dla agentów w portalu Microsoft Foundry.

Ważna

Funkcje, możliwości lub właściwości oznaczone (wersja zapoznawcza) nie są objęte umową dotyczącą poziomu usług, nie są zalecane w przypadku obciążeń produkcyjnych i mogą ulec zmianie lub ograniczeniu, zanim staną się one ogólnie dostępne. Warunki Wyszukiwanie AI platformy Azure wersji zapoznawczej mają zastosowanie do wszystkich funkcji w wersji zapoznawczej, niezależnie od tego, czy jest ona autonomiczna, czy częścią ogólnie dostępnej funkcji.

Wyszukiwanie hybrydowe łączy tekst (słowo kluczowe) i zapytania wektorowe w jednym żądaniu wyszukiwania. Oba zapytania są wykonywane równolegle. Wyniki są scalane i porządkowane według nowych wyników wyszukiwania przy użyciu Rekurencyjnej Fuzji Rankingu (RRF) w celu zwrócenia ujednoliconego zestawu wyników. W wielu przypadkach zgodnie z testami porównawczymi, zapytania hybrydowe z semantycznym rankingiem zwracają najbardziej odpowiednie wyniki.

Z tego artykułu dowiesz się, jak wykonywać następujące działania:

  • Konfigurowanie podstawowego żądania hybrydowego
  • Dodawanie parametrów i filtrów
  • Zwiększaj istotność przy użyciu semantycznego rankingu lub współczynników wektorowych
  • Optymalizowanie zachowań zapytań przez kontrolowanie danych wejściowych (maxTextRecallSize)

Na końcu tego artykułu można wykonywać zapytania hybrydowe, które łączą wyszukiwanie słów kluczowych i wektorów z opcjonalnym rankingiem semantycznym.

Wymagania wstępne

Wybieranie interfejsu API, narzędzia i możliwego do działania wzorca

  • Eksplorator wyszukiwania w portalu Azure (obsługuje zarówno stabilną, jak i wersję zapoznawczą składni wyszukiwania interfejsu API) ma widok JSON, który umożliwia wklejanie żądania hybrydowego.

  • Nowsze pakiety stabilne lub w wersji zapoznawczej Azure SDKs (zobacz dzienniki zmian obsługi funkcji zestawu SDK).

  • Stabilne interfejsy API REST lub nowsza wersja zapoznawcza interfejsu API, jeśli używasz funkcji w wersji zapoznawczej, takich jak maxTextRecallSize i countAndFacetMode (wersja zapoznawcza).

    Aby uzyskać czytelność, użyjemy przykładów REST, aby wyjaśnić, jak działają interfejsy API. Do tworzenia zapytań hybrydowych można użyć klienta REST, takiego jak Visual Studio Code z rozszerzeniem REST. Możesz również użyć Azure SDKs. Aby uzyskać więcej informacji, zobacz Szybki start: wyszukiwanie wektorów.

Możliwe do działania wzorce hybrydowe

Jeśli dopiero zaczynasz wyszukiwanie hybrydowe, wybierz jeden wzorzec i dostosuj go w małych krokach. Nie zaczynaj od maksymalnego przywoływania wektorów, przywoływania dużego tekstu i ponownego rangowania semantycznego w tym samym żądaniu.

  • Zrównoważona hybryda (wartość domyślna): użyj tego pierwszego dla większości obciążeń. k Zacznij w zakresie 30 do 50, top w zakresie 10 do 20 i włącz klasyfikację semantyczną tylko wtedy, gdy poprawia mierzoną trafność.

  • Hybryda z priorytetem na odwołanie: używaj tego rozwiązania w przypadku trudnych zapytań, gdzie celem jest pokrycie. Zwiększ maxTextRecallSize stopniowo i zachowaj umiarkowane ustawienia wektorów. Spodziewaj się wyższego kosztu scalania.

  • Hybryda z priorytetem precyzji: użyj tego rozwiązania w celu małych opóźnień na dużą skalę. Zachowaj k i top skromnie zastosuj filtry selektywne i unikaj funkcji semantycznych, które nie dodają wartości.

Dlaczego przeciążone zapytania są ograniczane w przepustowości

Zapytania hybrydowe uruchamiają równocześnie pobieranie danych tekstowych i wektorowych, a następnie scala wyniki przy użyciu RRF. Jeśli zwiększysz udział leksykalny (na przykład poprzez zmianę wagi hybrydowej na korzyść BM25), zwiększysz liczbę kandydatów tekstowych, które należy scalić z kandydatami wektorowymi. Jeśli połączysz to z kosztownymi ustawieniami wektorów i semantycznym ponownym rankingiem, wykorzystanie CPU i pamięci szybko wzrośnie.

W przypadku mniejszych konfiguracji pojemności może to prowadzić do dodatkowej pracy związanej z scalaniem i ponownym szeregowaniem:

  • Wyższe opóźnienie i skoki p95/p99
  • 429 odpowiedzi ograniczania przepustowości
  • Obserwowane przez klienta żądania porzucone lub przekroczone limitu czasu w przypadku nieskonfigurowanego zachowania ponawiania prób

Dostrajanie kolejności przed skalowaniem w górę

Dostrajanie ustawień zapytań i wektorów przed dodaniem replik:

  1. Najpierw zmniejsz kosztowne ustawienia wyszukiwania wektorów. Na przykład, jeśli efSearch i maxConnections są ustawione agresywnie, obniż je przed skalowaniem poziomym (na przykład zmniejsz efSearch z około 800 do zakresu od 128 do 192, a maxConnections zmniejsz z 64 do 32).
  2. Ogranicz zakres ponownego rangowania semantycznego do przypadków, które na tym korzystają.
  3. Ponownie przetestuj opóźnienia i wskaźniki 429 podczas reprezentatywnego obciążenia.
  4. Skalowanie replik tylko wtedy, gdy ograniczanie przepustowości będzie się powtarzać po dostrajaniu.

Użyj tej sekwencji, aby poprawić stabilność w pierwszej kolejności i kontrolować koszt przed skalowaniem.

Konfigurowanie zapytania hybrydowego

W tej sekcji opisano podstawową strukturę zapytania hybrydowego i sposób konfigurowania go w Eksploratorze wyszukiwania lub do wykonywania w kliencie REST.

Wyniki są zwracane w postaci zwykłego tekstu, w tym wektory w polach oznaczonych jako retrievable. Ponieważ wektory liczbowe nie są przydatne w wynikach wyszukiwania, wybierz inne pola w indeksie jako zastępcze dla dopasowania wektora. Jeśli na przykład indeks zawiera pola "descriptionVector" i "descriptionText", zapytanie może być zgodne z wartością "descriptionVector", ale wynik wyszukiwania może zawierać tekst "descriptionText". Użyj parametru select , aby określić tylko pola czytelne dla człowieka w wynikach.

  1. Przejdź do usługi wyszukiwania w portalu Azure.

  2. W obszarzeIndeksy> wybierz indeks zawierający wektory i zawartość niewektorową. Eksplorator wyszukiwania jest pierwszą kartą.

  3. W obszarze Widok przejdź do widoku JSON , aby można było wkleić zapytanie wektorowe.

  4. Zastąp domyślny szablon zapytania zapytaniem hybrydowym. Podstawowe zapytanie hybrydowe ma zapytanie tekstowe określone w pliku search, i zapytanie wektorowe określone w sekcji vectorQueries.vector. Zapytanie tekstowe i zapytanie wektorowe mogą być równoważne lub rozbieżne, ale często współużytkują tę samą intencję.

    Ten przykład pochodzi z przewodnika szybkiego startu vector, który zawiera treści wektorowe i niewektorowe oraz kilka przykładów zapytań. Dla zwięzłości wektor jest skrócony w tym artykule.

    {
        "search": "historic hotel walk to restaurants and shopping",
        "vectorQueries": [
            {
                "vector": [0.01944167, 0.0040178085, -0.007816401 ... <remaining values omitted> ], 
                "k": 7,
                "fields": "DescriptionVector",
                "kind": "vector",
                "exhaustive": true
            }
        ]
    }
    
  5. Wybierz Wyszukaj.

    Wskazówka

    Wyniki wyszukiwania są łatwiejsze do odczytania w przypadku ukrycia wektorów. W obszarze Opcje zapytania włącz opcję Ukryj wartości wektorów w wynikach wyszukiwania.

  6. Oto inna wersja zapytania. Ten element dodaje parametr count dla liczby znalezionych dopasowań, parametr select do wybierania określonych pól oraz parametr top do zwracania siedmiu pierwszych wyników.

     {
         "count": true,
         "search": "historic hotel walk to restaurants and shopping",
         "select": "HotelId, HotelName, Category, Tags, Description",
         "top": 7,
         "vectorQueries": [
             {
                 "vector": [0.01944167, 0.0040178085, -0.007816401 ... <remaining values omitted> ], 
                 "k": 7,
                 "fields": "DescriptionVector",
                 "kind": "vector",
                 "exhaustive": true
             }
         ]
     }
    

Ustaw parametry maxTextRecallSize i countAndFacetMode (wersja zapoznawcza)

Zapytanie hybrydowe można dostroić w celu kontrolowania, ile części każdego podzapytania przyczynia się do połączonych wyników. Ustawienie parametru maxTextRecallSize (wersja zapoznawcza) określa, ile wyników uszeregowanych przez BM25 jest przekazywanych do hybrydowego modelu rankingowego.

Jeśli żądanie zawiera aspekty, użyj pól niewektorów oznaczonych jako facetable w indeksie. Pola wektorowe nie są aspektowe.

Liczba aspektów zależy od typu zapytania:

  • W zapytaniu zawierającym wyłącznie tekst fasety zliczają dokumenty pasujące do zapytania tekstowego.
  • W zapytaniu wyłącznie wektorowym fasety zliczają k dokumenty zwrócone przez zapytanie wektorowe.
  • W zapytaniu hybrydowym fasety uwzględniają zarówno wyniki wyszukiwania wektorowego, jak i tekstowego. Strona wektorowa dostarcza k najbliższych dokumentów. Część tekstowa dostarcza dokumenty uszeregowane według BM25. Parametr countAndFacetMode (wersja zapoznawcza) określa, czy przy obliczaniu liczności i faset są używane wszystkie dopasowania tekstowe, czy tylko dopasowania tekstowe pobierane na potrzeby klasyfikacji.

Jeśli używasz maxTextRecallSize, możesz również ustawić countAndFacetMode. Ten parametr określa, czy count i facets uwzględniają wszystkie dokumenty pasujące do zapytania tekstowego, czy tylko dokumenty pobrane w obrębie okna maxTextRecallSize. Wartość domyślna to countAllResults.

W domyślnym trybie countAllResults zliczenia i fasety mogą obejmować dokumenty po stronie tekstu, które nie są pobierane do rankingu RRF, ponieważ znajdują się poza oknem maxTextRecallSize. Zwiększenie maxTextRecallSize zwiększa liczbę dokumentów uszeregowanych według BM25 dostępnych do ustalania rankingu, ale nie zwiększa wkładu wektorowego powyżej k. Użyj polecenia countRetrievableResults , jeśli chcesz, aby obliczenia liczbowe i aspektowe są ograniczone do dokumentów pobranych na potrzeby klasyfikacji hybrydowej.

Do ustawiania tych opcji zalecamy najnowszą wersję zapoznawczą interfejsu API REST .

Wskazówka

Innym podejściem do dostrajania zapytań hybrydowych jest waga wektorów, używana do zwiększania znaczenia zapytań wektorowych w żądaniu.

  1. Użyj opcji Wyszukaj — POST (wersja zapoznawcza) lub Wyszukaj — GET (wersja zapoznawcza), aby określić parametry podglądu.

  2. Dodaj obiekt parametru zapytania, aby ustawić maksymalną hybridSearch liczbę dokumentów odwołanych za pomocą wyników klasyfikacji BM25 zapytania hybrydowego. Ma dwie właściwości:

    • maxTextRecallSize Określa liczbę wyników klasyfikowanych przez BM25 dla klasyfikatora RRF (Reciprocal Rank Fusion) używanego w zapytaniach hybrydowych. Wartość domyślna to 1000. Wartość maksymalna to 10 000.

    • countAndFacetMode podaje liczbę i zakres faset dla zapytania hybrydowego. Wartość domyślna countAllResults używa pełnego hybrydowego zestawu wyników, w tym wszystkich dokumentów zgodnych z zapytaniem tekstowym, nawet jeśli niektóre z tych dopasowań tekstowych nie są pobierane do rankingu RRF, ponieważ wykraczają poza zakres okna maxTextRecallSize. Użyj countRetrievableResults, aby ograniczyć liczbę i fasety do dokumentów pobranych na potrzeby rankingu, w tym dokumentów rankingowanych metodą BM25 maxTextRecallSize oraz dopasowań wektorowych k.

  3. Ustaw : maxTextRecallSize

    • Zmniejsz maxTextRecallSize, jeśli wyszukiwanie podobieństwa wektorów zwykle przewyższa stronę tekstową zapytania hybrydowego.

    • Zwiększ maxTextRecallSize, jeśli masz duży indeks, a wartość domyślna nie zawiera wystarczającej liczby wyników. W przypadku większego zestawu wyników sklasyfikowanych według BM25 można również skonfigurować top, skip i next w celu pobrania części tych wyników.

W poniższych przykładach REST pokazano dwa przypadki użycia ustawienia maxTextRecallSize.

Pierwszy przykład zmniejsza wartość parametru maxTextRecallSize do 100, ograniczając tekstową część zapytania hybrydowego do zaledwie 100 dokumentów. Ustawia również countAndFacetMode tak, aby w obliczeniach liczności i aspektów uwzględniane były tylko dokumenty możliwe do pobrania.

POST https://[service-name].search.windows.net/indexes/[index-name]/docs/search?api-version=2026-08-01-preview

    { 
      "vectorQueries": [ 
        { 
          "kind": "vector", 
          "vector": [1.0, 2.0, 3.0], 
          "fields": "my_vector_field", 
          "k": 10 
        } 
      ], 
      "search": "hello world", 
      "hybridSearch": { 
        "maxTextRecallSize": 100, 
        "countAndFacetMode": "countRetrievableResults" 
      } 
    } 

Drugi przykład zwiększa maxTextRecallSize do 5000. Używa również limitu, pominięcia i przejścia do następnego, aby pobierać wyniki z dużych zestawów wyników. W takim przypadku żądanie ściąga wyniki w rankingu BM25, rozpoczynające się od pozycji 1500 do 2000, jako wkład zapytania tekstowego w zestawie wyników łączonych RRF.

POST https://[service-name].search.windows.net/indexes/[index-name]/docs/search?api-version=2026-08-01-preview

    { 
      "vectorQueries": [ 
        { 
          "kind": "vector", 
          "vector": [1.0, 2.0, 3.0], 
          "fields": "my_vector_field", 
          "k": 10 
        } 
      ], 
      "search": "hello world",
      "top": 500,
      "skip": 1500,
      "next": 500,
      "hybridSearch": { 
        "maxTextRecallSize": 5000, 
        "countAndFacetMode": "countRetrievableResults" 
      } 
    } 

Referencja: hybridSearch | maxTextRecallSize | countAndFacetMode

Przykłady zapytań hybrydowych

Ta sekcja zawiera wiele przykładów zapytań ilustrujących wzorce zapytań hybrydowych.

Przykład: wyszukiwanie hybrydowe z filtrem

W tym przykładzie dodano filtr, który jest stosowany do filterable pól niewektorowych indeksu wyszukiwania.

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-04-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "k": 10
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "vectorFilterMode": "preFilter",
    "filter": "ParkingIncluded",
    "top": "10"
}

Kluczowe punkty:

  • Filtry są stosowane do zawartości pól, które można filtrować. W tym przykładzie pole ParkingIncluded jest wartością logiczną i jest oznaczone jako filterable w schemacie indeksu.

  • W zapytaniach hybrydowych filtry można zastosować przed wykonaniem zapytania, aby zmniejszyć powierzchnię zapytania lub po wykonaniu zapytania w celu przycinania wyników. "preFilter" jest wartością domyślną. Aby użyć postFilter lub strictPostFilter (wersja zapoznawcza), ustaw tryb przetwarzania filtru , jak pokazano w tym przykładzie.

  • Po opublikowaniu wyników zapytania liczba wyników może być mniejsza niż wartość top-n.

Odwołanie: | filter vectorFilterMode

Przykład: wyszukiwanie hybrydowe z filtrami ukierunkowanymi na podzapytania wektorowe (wersja testowa)

Korzystając z najnowszego interfejsu API REST w wersji zapoznawczej, można zastąpić globalny filtr żądania wyszukiwania, stosując dodatkowy filtr przeznaczony tylko dla podzapytania wektorów w żądaniu hybrydowym.

Ta funkcja zapewnia szczegółową kontrolę, zapewniając, że filtry wpływają tylko na wyniki wyszukiwania wektorów, pozostawiając wyniki wyszukiwania oparte na słowach kluczowych bez wpływu.

Filtr docelowy w pełni zastępuje filtr globalny, w tym wszelkie filtry używane do przycinania zabezpieczeń lub wyszukiwania geoprzestrzennego. W przypadkach, gdy wymagane są filtry globalne, takie jak filtrowanie w celu zabezpieczenia, należy wyraźnie uwzględnić te filtry zarówno w filtrze najwyższego poziomu, jak i w każdym filtrze na poziomie wektora, aby zapewnić konsekwentne egzekwowanie zabezpieczeń i innych ograniczeń.

Aby zastosować filtry wektorów docelowych:

Oto przykład zapytania hybrydowego, które dodaje przesłonięcia filtru. Filtr globalny „Ocena gt 3” jest zastępowany w czasie wykonywania przez filterOverride.

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-08-01-preview

{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "exhaustive": true,
            "filterOverride": "Address/City eq 'Seattle'",
            "k": 10
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "select": "HotelName, Description, Address/City, Rating",
    "filter": "Rating gt 3",
    "debug": "vector",
    "top": 10
}

Zakładając, że definicja indeksu zawiera konfigurację semantyczną, można sformułować zapytanie zawierające wyszukiwanie wektorów i wyszukiwanie słów kluczowych z semantycznym rankingiem dla scalonego zestawu wyników. Możesz opcjonalnie dodać podpisy i odpowiedzi.

Zawsze, gdy używasz klasyfikacji semantycznej z wektorami, upewnij się, że k ustawiono wartość 50. Semantyczny ranker używa do 50 dopasowań jako wejść. Określenie mniej niż 50 pozbawia semantycznych modeli klasyfikacji niezbędnych danych wejściowych.

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-04-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "k": 50
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "select": "HotelName, Description, Tags",
    "queryType": "semantic",
    "semanticConfiguration": "my-semantic-config",
    "captions": "extractive",
    "answers": "extractive",
    "top": "50"
}

Kluczowe punkty:

  • Semantyczny selektor akceptuje maksymalnie 50 wyników ze scalonej odpowiedzi.

  • Wymagane są "queryType" i "semanticConfiguration".

  • "podpisy" i "odpowiedzi" są opcjonalne. Wartości są wyodrębniane z tekstu dosłownego w wynikach. Odpowiedź jest zwracana tylko wtedy, gdy wyniki zawierają zawartość o cechach odpowiedzi na zapytanie.

DokumentacjaqueryType:semanticConfigurationnapisyodpowiedzi

Przykład: wyszukiwanie hybrydowe semantyczne z filtrem

Ten przykład dodaje filtr ParkingIncluded do hybrydowego zapytania semantycznego.

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-04-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "k": 50
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "select": "HotelName, Description, Tags",
    "queryType": "semantic",
    "semanticConfiguration": "my-semantic-config",
    "captions": "extractive",
    "answers": "extractive",
    "filter": "ParkingIncluded",
    "vectorFilterMode": "preFilter",
    "top": "50"
}

Kluczowe punkty:

  • Tryb filtru może mieć wpływ na liczbę wyników dostępnych dla semantycznego klasyfikatora. Najlepszym rozwiązaniem jest nadanie semantycznemu rangatorowi maksymalnej liczby dokumentów (50). Jeśli filtry wstępne lub końcowe są zbyt selektywne, możesz dostarczyć rankingowi semantycznemu zbyt mało danych, przekazując mu mniej niż 50 dokumentów do przetworzenia.

  • preFilter jest stosowany przed wykonaniem zapytania. Jeśli filtr wstępny zmniejsza obszar wyszukiwania do 100 dokumentów, zapytanie wektorowe wykonywane jest w polu DescriptionVector dla tych 100 dokumentów, zwracając 50 najlepszych dopasowań (k=50). Te 50 pasujących dokumentów zostają przekazane do RRF w celu scalenia wyników, a następnie do semantycznego rankera.

  • postFilter jest stosowany po wykonaniu zapytania. Jeśli k=50 zwraca 50 dopasowań po stronie zapytania wektorowego, a następnie po filtrze zastosowanym do 50 dopasowań, wyniki zostaną zmniejszone o liczbę dokumentów spełniających kryteria filtrowania. Oznacza to, że pozostaje ci mniej niż 50 dokumentów do przekazania do rankera semantycznego. Pamiętaj o tym, jeśli używasz klasyfikacji semantycznej. Semantyczny ranker działa najlepiej, jeśli ma 50 dokumentów jako wejście.

  • strictPostFilter (wersja zapoznawcza) jest stosowana w niefiltrowanych wynikach od góry pok wykonaniu zapytania. Zawsze zwraca mniej niż lub równe dokumentom k . Jeśli niefiltrowany k=50 zwraca 50 niefiltrowanych wyników, a filtr pasuje do 30 dokumentów, w zestawie wyników jest zwracanych tylko 30 dokumentów, nawet jeśli indeks zawiera więcej niż 30 dokumentów pasujących do filtru. Ponieważ ten tryb powoduje największe obniżenie przypominania, nie zalecamy jego używania z semantycznym rankerem.

Konfigurowanie odpowiedzi na zapytanie

Podczas konfigurowania zapytania hybrydowego pomyśl o strukturze odpowiedzi. Wyszukiwarka klasyfikuje pasujące dokumenty i zwraca najbardziej odpowiednie wyniki. Odpowiedź jest spłaszczonym zestawem wierszy. Parametry zapytania określają, które pola znajdują się w każdym wierszu i ilu wierszy znajdują się w odpowiedzi.

Pola w odpowiedzi

Wyniki wyszukiwania składają się z retrievable pól z indeksu wyszukiwania. Wynik jest taki:

  • Wszystkie retrievable pola (wartość domyślna interfejsu API REST).
  • Pola jawnie wymienione w parametrze select zapytania.

W przykładach w tym artykule użyto instrukcji select do określania pól tekstowych (niewektorowych) w odpowiedzi.

Uwaga

Wektory nie są analizowane w sposób inżynierii wstecznej do postaci tekstu czytelnego dla człowieka, więc unikaj zwracania ich w odpowiedzi. Zamiast tego wybierz pola niewektorowe, które są reprezentatywne dla dokumentu wyszukiwania. Na przykład, jeśli zapytanie jest skierowane do pola "DescriptionVector", zwróć równoważne pole tekstowe, jeśli posiadasz takie jak "Opis" w odpowiedzi.

Liczba wyników

Zapytanie może pasować do dowolnej liczby dokumentów, nawet wszystkich, jeśli kryteria wyszukiwania są słabe (na przykład "search=*" dla pustego zapytania). Ponieważ rzadko jest praktyczne zwracanie niezwiązanych wyników, należy określić maksymalną wartość dla ogólnej odpowiedzi:

  • "top": n wyniki zapytań tylko dla słów kluczowych (bez wektora)
  • "k": n wyniki dla zapytań tylko wektorów
  • "top": n wyniki zapytań hybrydowych (z semantyką lub bez niej), które zawierają parametr "wyszukiwanie"

Oba k i top są opcjonalne. Nieokreślona domyślna liczba wyników w odpowiedzi to 50. Możesz ustawić top i skip na przeglądać więcej wyników lub zmienić wartość domyślną.

Uwaga

Jeśli używasz wyszukiwania hybrydowego w interfejsie API 2024-05-01-preview, możesz kontrolować liczbę wyników z zapytania kluczowego przy użyciu maxTextRecallSize. Połącz to z ustawieniem , k aby kontrolować reprezentację z każdego podsystemu wyszukiwania (słowo kluczowe i wektor).

Wyniki klasyfikatora semantycznego

Uwaga

Semantyczny ranker może przetworzyć do 50 wyników.

Jeśli używasz klasyfikatora semantycznego w wersji 2024-05-01-preview lub nowszej, najlepszym rozwiązaniem jest ustawienie wartości k i maxTextRecallSize tak, aby ich suma wynosiła co najmniej 50. Następnie można ograniczyć wyniki zwrócone użytkownikowi za pomocą parametru top .

Jeśli używasz semantycznego rankera w wersji interfejsu API starszej niż 2024-05-01-preview, wykonaj następujące kroki:

  • W przypadku wyszukiwania tylko słów kluczowych (bez wektorów) ustawiono wartość top 50
  • W przypadku wyszukiwania hybrydowego ustaw k na 50, aby upewnić się, że semantyczny ranking uzyska co najmniej 50 wyników.

Ranking

Dla zapytań hybrydowych tworzone są wiele zestawów z opcjonalnym semantycznym ponownym szeregowaniem lub bez niego. Klasyfikacja wyników jest obliczana przez wzajemne łączenie rangi (RRF).

W tej sekcji porównaj wyniki z wyszukiwania pojedynczego wektora i prostego hybrydowego wyszukiwania dla najwyższego wyniku. Różne algorytmy rankowania, takie jak metryka podobieństwa HNSW i RRF w tym przypadku, produkują wyniki o różnych wielkościach. To zachowanie jest zgodnie z projektem. Wyniki RRF mogą wydawać się dość niskie, nawet przy wysokim stopniu podobieństwa. Niższe wyniki są cechą algorytmu RRF. W zapytaniu hybrydowym z RRF więcej wzajemnych dokumentów sklasyfikowanych jest uwzględnionych w wynikach, biorąc pod uwagę stosunkowo mniejszy wynik sklasyfikowanych dokumentów RRF, w przeciwieństwie do zwykłego wyszukiwania wektorowego.

Wyszukiwanie pojedynczego wektora: @search.score wyniki uporządkowane według podobieństwa cosinus (domyślna funkcja odległości wektorów).

{
    "@search.score": 0.8399121,
    "HotelId": "49",
    "HotelName": "Swirling Currents Hotel",
    "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.",
    "Category": "Luxury",
    "Address": {
    "City": "Arlington"
    }
}

Wyszukiwanie hybrydowe: @search.score w przypadku wyników hybrydowych sklasyfikowanych za pomocą wzajemnego łączenia rangi.

{
    "@search.score": 0.032786883413791656,
    "HotelId": "49",
    "HotelName": "Swirling Currents Hotel",
    "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.",
    "Category": "Luxury",
    "Address": {
    "City": "Arlington"
    }
}

Rozwiązywanie problemów z zapytaniami hybrydowymi

Skorzystaj z poniższej tabeli, aby zdiagnozować typowe problemy z zapytaniami hybrydowymi.

Problem Możliwa przyczyna Rozdzielczość
Puste wyniki Niezgodność nazwy pola wektorowego lub brakujące dane indeksu Zweryfikuj fields w vectorQueries elemencie, który pasuje do pola wektorowego w schemacie indeksu. Sprawdź, czy dokumenty zawierają dane wektorowe.
Niskie wyniki RRF Normalne zachowanie RRF Wyniki RRF są z natury niższe niż wyniki podobieństwa. Wynik 0,03 może nadal wskazywać silny mecz.
Wyniki wektorów dominują Słaba wydajność zapytania tekstowego Zwiększ maxTextRecallSize, aby uwzględnić więcej wyników BM25 lub dostosuj ważenie wektorów.
Wyniki tekstu dominują Podobieństwo wektorów jest zbyt niskie Sprawdź jakość osadzania. Upewnij się, że wektor zapytania używa tego samego modelu co wektory dokumentów.
Semantyczny ranker zwraca mniej wyników Niewystarczające dokumenty wejściowe Ustaw k wartość co najmniej 50 w przypadku korzystania z klasyfikacji semantycznej. Sprawdź, czy filtry nie są zbyt restrykcyjne.
Filtr nie jest stosowany do wektorów Używanie tylko filtru globalnego W przypadku filtrowania specyficznego dla wektorów użyj filterOverride w zapytaniu wektorowym (wersja zapoznawcza).
Nieoczekiwane pole w wynikach select Brak parametru Dodaj select , aby określić, które pola mają zostać zwrócone. Wyklucz pola wektorów w celu czytelności.