Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
Subskrypcja Azure. Utwórz je bezpłatnie.
Usługa Wyszukiwanie AI platformy Azure. Utwórz usługę lub znajdź istniejącą usługę.
Indeks wyszukiwania zawierający
searchablepola wektora i niewektora. Zalecamy użycie Kreatora importu danych, aby szybko utworzyć indeks. W przeciwnym razie zobacz Tworzenie indeksu i Dodawanie pól wektorów do indeksu wyszukiwania.Uprawnienia: do wykonywania zapytań dotyczących indeksu potrzebny jest czytnik danych indeksu wyszukiwania. Aby utworzyć lub zaktualizować indeks, potrzebujesz współautora danych indeksu wyszukiwania. Aby uzyskać więcej informacji, zobacz Łączenie przy użyciu ról.
(Opcjonalnie) Instalacja zestawu SDK:
- Pyton:
pip install azure-search-documents - C#:
dotnet add package Azure.Search.Documents
- Pyton:
(Opcjonalnie) Jeśli chcesz, aby wbudowana konwersja ciągu zapytania na wektor, utwórz i przypisz wektoryzator do pól wektorowych w indeksie wyszukiwania.
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ń.
kZacznij w zakresie 30 do 50,topw 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
maxTextRecallSizestopniowo 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
kitopskromnie 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:
- Najpierw zmniejsz kosztowne ustawienia wyszukiwania wektorów.
Na przykład, jeśli
efSearchimaxConnectionssą ustawione agresywnie, obniż je przed skalowaniem poziomym (na przykład zmniejszefSearchz około 800 do zakresu od 128 do 192, amaxConnectionszmniejsz z 64 do 32). - Ogranicz zakres ponownego rangowania semantycznego do przypadków, które na tym korzystają.
- Ponownie przetestuj opóźnienia i wskaźniki 429 podczas reprezentatywnego obciążenia.
- 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.
Przejdź do usługi wyszukiwania w portalu Azure.
W obszarzeIndeksy> wybierz indeks zawierający wektory i zawartość niewektorową. Eksplorator wyszukiwania jest pierwszą kartą.
W obszarze Widok przejdź do widoku JSON , aby można było wkleić zapytanie wektorowe.
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 sekcjivectorQueries.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 } ] }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.
Oto inna wersja zapytania. Ten element dodaje parametr
countdla liczby znalezionych dopasowań, parametrselectdo wybierania określonych pól oraz parametrtopdo 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ą
kdokumenty zwrócone przez zapytanie wektorowe. - W zapytaniu hybrydowym fasety uwzględniają zarówno wyniki wyszukiwania wektorowego, jak i tekstowego. Strona wektorowa dostarcza
knajbliższych dokumentów. Część tekstowa dostarcza dokumenty uszeregowane według BM25. ParametrcountAndFacetMode(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.
Użyj opcji Wyszukaj — POST (wersja zapoznawcza) lub Wyszukaj — GET (wersja zapoznawcza), aby określić parametry podglądu.
Dodaj obiekt parametru zapytania, aby ustawić maksymalną
hybridSearchliczbę dokumentów odwołanych za pomocą wyników klasyfikacji BM25 zapytania hybrydowego. Ma dwie właściwości:maxTextRecallSizeOkreś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.countAndFacetModepodaje liczbę i zakres faset dla zapytania hybrydowego. Wartość domyślnacountAllResultsuż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 oknamaxTextRecallSize. UżyjcountRetrievableResults, aby ograniczyć liczbę i fasety do dokumentów pobranych na potrzeby rankingu, w tym dokumentów rankingowanych metodą BM25maxTextRecallSizeoraz dopasowań wektorowychk.
Ustaw :
maxTextRecallSizeZmniejsz
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,skipinextw 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
filterablew 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ćpostFilterlubstrictPostFilter(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:
Użyj najnowszej wersji zapoznawczej interfejsu API REST wyszukiwania dokumentów lub pakietu beta Azure SDK, który udostępnia tę funkcję.
Zmodyfikuj żądanie zapytania, dodając nowy
vectorQueries.filterOverrideparametr ustawiony na wyrażenie filtru OData.
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
}
Przykład: wyszukiwanie hybrydowe semantyczne
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.
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.
preFilterjest stosowany przed wykonaniem zapytania. Jeśli filtr wstępny zmniejsza obszar wyszukiwania do 100 dokumentów, zapytanie wektorowe wykonywane jest w poluDescriptionVectordla 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.postFilterjest 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 pokwykonaniu zapytania. Zawsze zwraca mniej niż lub równe dokumentomk. 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
retrievablepola (wartość domyślna interfejsu API REST). - Pola jawnie wymienione w parametrze
selectzapytania.
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": nwyniki zapytań tylko dla słów kluczowych (bez wektora) -
"k": nwyniki dla zapytań tylko wektorów -
"top": nwyniki 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ść
top50 - W przypadku wyszukiwania hybrydowego ustaw
kna 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. |