Uwaga
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.
Podczas wykonywania zapytania wektorowego wyszukiwarka szuka podobnych wektorów, aby znaleźć najlepszych kandydatów do zwrócenia w wynikach wyszukiwania. W zależności od sposobu indeksowania zawartości wektorowej wyszukiwanie odpowiednich dopasowań jest wyczerpujące lub ograniczone do najbliższych sąsiadów w celu szybszego przetwarzania. Po znalezieniu kandydatów metryki podobieństwa są używane do oceniania poszczególnych wyników na podstawie siły meczu.
W tym artykule wyjaśniono algorytmy używane do znajdowania odpowiednich dopasowań i metryk podobieństwa używanych do oceniania. Oferuje również wskazówki dotyczące poprawy istotności, jeśli wyniki wyszukiwania nie spełniają oczekiwań.
Algorytmy używane w wyszukiwaniu wektorowym
Algorytmy wyszukiwania wektorowego obejmują:
Wyczerpujące K najbliższych sąsiadów (KNN), który wykonuje skanowanie siłowe całej przestrzeni wektorowej.
Hierarchical Navigable Small World (HNSW), który wykonuje wyszukiwanie aproksymacyjne najbliższego sąsiada (ANN).
Do wyszukiwania i oceniania są używane tylko pola wektorowe oznaczone jako searchable
w indeksie lub searchFields
w zapytaniu.
Informacje o wyczerpującym systemie KNN
Wyczerpująca nazwa KNN oblicza odległości między wszystkimi parami punktów danych i znajduje dokładnych k
najbliższych sąsiadów dla punktu zapytania. Ponieważ algorytm nie wymaga szybkiego losowego dostępu do punktów danych, funkcja KNN nie korzysta z limitu przydziału rozmiaru indeksu wektorowego . Zapewnia jednak globalny zestaw najbliższych sąsiadów.
Wyczerpująca funkcja KNN jest intensywnie obciążana obliczeniami, więc używaj jej do małych i średnich zestawów danych lub gdy potrzeba precyzji przewyższa potrzebę wydajności zapytań. Innym przypadkiem użycia jest utworzenie zestawu danych w celu oceny zdolności odtworzeniowej algorytmu ANN, ponieważ wyczerpujące KNN może służyć do tworzenia zestawu rzeczywistych najbliższych sąsiadów.
Informacje o usłudze HNSW
HNSW to algorytm ANN zoptymalizowany pod kątem aplikacji o wysokiej dokładności i niskim opóźnieniu z nieznanym lub niestabilnym rozkładem danych. Podczas indeksowania HNSW tworzy dodatkowe struktury danych, które organizują punkty danych w graf hierarchiczny. Podczas wykonywania zapytania usługa HNSW przechodzi przez ten wykres w celu znalezienia najbardziej odpowiednich dopasowań, umożliwiając wydajne wyszukiwanie najbliższych sąsiadów.
HNSW wymaga, aby wszystkie punkty danych znajdowały się w pamięci w celu uzyskania szybkiego dostępu swobodnego, co zużywa przydział rozmiaru indeksu wektorowego. Ten projekt równoważy dokładność wyszukiwania z wydajnością obliczeniową i sprawia, że usługa HNSW jest odpowiednia dla większości scenariuszy, szczególnie podczas wyszukiwania większych zestawów danych.
HNSW oferuje kilka parametrów konfiguracji, które można dostroić, aby zoptymalizować przepływność, opóźnienie i recall aplikacji wyszukiwania. Na przykład pola określające HNSW obsługują również wyczerpującą metodę KNN przy użyciu parametru żądania zapytania"exhaustive": true
. Jednak pola zindeksowane dla exhaustiveKnn
nie obsługują zapytań HNSW, ponieważ nie istnieją dodatkowe struktury danych umożliwiające efektywne wyszukiwanie.
Informacje o ann
ANN to klasa algorytmów do znajdowania dopasowań w przestrzeni wektorowej. Ta klasa algorytmów używa różnych struktur danych lub metod partycjonowania danych w celu znacznego zmniejszenia przestrzeni wyszukiwania i przyspieszenia przetwarzania zapytań.
Algorytmy ANN rezygnują z pewnej dokładności, ale oferują skalowalne i szybsze odnajdywanie przybliżonych najbliższych sąsiadów, co czyni je idealnym rozwiązaniem do równoważenia dokładności i wydajności w nowoczesnych aplikacjach do wyszukiwania informacji. Parametry algorytmu można dostosować, aby dostosować wymagania dotyczące odwoływania, opóźnienia, pamięci i śladu dysku aplikacji wyszukiwania.
Usługa Azure AI Search używa protokołu HNSW dla algorytmu ANN.
Jak działa wyszukiwanie najbliższego sąsiada
Zapytania wektorowe są wykonywane względem miejsca osadzania składającego się z wektorów wygenerowanych na podstawie tego samego modelu osadzania. Ogólnie rzecz biorąc, wartość wejściowa w żądaniu zapytania jest wprowadzana do tego samego modelu uczenia maszynowego, który wygenerował osadzanie w indeksie wektorowym. Dane wyjściowe są wektorem w tym samym miejscu osadzania. Ponieważ podobne wektory są połączone blisko siebie, znajdowanie dopasowań jest równoważne znalezieniu wektorów, które znajdują się najbliżej wektora zapytania, i zwracaniu skojarzonych dokumentów jako wyniku wyszukiwania.
Jeśli na przykład żądanie zapytania dotyczy hoteli, model mapuje zapytanie na wektor, który istnieje gdzieś w klastrze wektorów reprezentujących dokumenty dotyczące hoteli. Określenie, które wektory są najbardziej podobne do zapytania, na podstawie metryki podobieństwa, określa, które dokumenty są najbardziej istotne.
Gdy pola wektorowe są indeksowane w celu uzyskania wyczerpującej nazwy KNN, zapytanie jest wykonywane względem "wszystkich sąsiadów". W przypadku pól indeksowanych dla HNSW aparat wyszukiwania używa grafu HNSW do wyszukiwania w podzestawie węzłów w indeksie wektorowym.
Tworzenie grafu HNSW
Podczas indeksowania usługa wyszukiwania konstruuje graf HNSW. Celem indeksowania nowego wektora do grafu HNSW jest dodanie go do struktury grafu w sposób umożliwiający efektywne wyszukiwanie najbliższych sąsiadów. Poniżej przedstawiono podsumowanie procesu:
Inicjowanie: zacznij od pustego grafu HNSW lub istniejącego grafu HNSW, jeśli nie jest to nowy indeks.
Punkt wejścia: jest to najwyższy poziom wykresu hierarchicznego i służy jako punkt wyjścia do indeksowania.
Dodawanie do grafu: Różne poziomy hierarchiczne reprezentują różne szczegółowości grafu, a wyższe poziomy są bardziej globalne, a niższe poziomy są bardziej szczegółowe. Każdy węzeł na grafie reprezentuje punkt wektorowy.
Każdy węzeł jest połączony z sąsiadami
m
znajdującymi się w pobliżu. Jestm
to parametr .Liczba punktów danych uważanych za połączenia kandydatów jest określana przez
efConstruction
parametr . Ta lista dynamiczna tworzy zestaw najbliższych punktów w istniejącym grafie, który należy wziąć pod uwagę dla algorytmu. WyższeefConstruction
wartości powodują rozważenie większej liczby węzłów, co często prowadzi do gęstszych lokalnych dzielnic dla każdego wektora.Te połączenia używają skonfigurowanego podobieństwa
metric
do określania odległości. Niektóre połączenia to połączenia "dalekie", które łączą się między różnymi poziomami hierarchicznymi, tworząc skróty na grafie, które zwiększają wydajność wyszukiwania.
Oczyszczanie i optymalizacja grafu: może się to zdarzyć po indeksowaniu wszystkich wektorów i poprawia nawigację i wydajność grafu HNSW.
Nawigowanie po grafie HNSW w czasie wykonywania zapytania
Zapytanie wektorowe nawiguje po strukturze wykresu hierarchicznego w celu skanowania pod kątem dopasowań. Poniżej przedstawiono podsumowanie kroków w procesie:
Inicjowanie: algorytm inicjuje wyszukiwanie na najwyższym poziomie grafu hierarchicznego. Ten punkt wejścia zawiera zestaw wektorów, które służą jako punkty początkowe do wyszukiwania.
Przechodzenie: następnie przechodzi przez poziom wykresu, przechodząc z najwyższego poziomu do niższych poziomów, wybierając węzły kandydatów, które znajdują się bliżej wektora zapytania na podstawie skonfigurowanej metryki odległości, takiej jak podobieństwo cosinus.
Oczyszczanie: Aby zwiększyć wydajność, algorytm przycina przestrzeń wyszukiwania, biorąc pod uwagę tylko węzły, które prawdopodobnie będą zawierać najbliższych sąsiadów. Jest to osiągane przez utrzymanie kolejki priorytetów potencjalnych kandydatów i aktualizowanie go w miarę postępu wyszukiwania. Długość tej kolejki jest konfigurowana przez parametr
efSearch
.Uściślenie: gdy algorytm przechodzi do niższych, bardziej szczegółowych poziomów, usługa HNSW rozważa więcej sąsiadów w pobliżu zapytania, co umożliwia uściślenie zestawu wektorów kandydatów, zwiększenie dokładności.
Ukończenie: wyszukiwanie kończy się po zidentyfikowaniu żądanej liczby najbliższych sąsiadów lub spełnieniu innych kryteriów zatrzymania. Ta żądana liczba najbliższych sąsiadów podlega parametrowi
k
czasu zapytania .
Metryki podobieństwa używane do mierzenia zbliżenia
Algorytm wyszukuje wektory kandydatów do oceny podobieństwa. Aby wykonać to zadanie, obliczenie metryki podobieństwa porównuje wektor kandydata z wektorem zapytania i mierzy podobieństwo. Algorytm śledzi uporządkowany zestaw najbardziej podobnych wektorów znalezionych przez algorytm, który tworzy klasyfikowany zestaw wyników po osiągnięciu ukończenia algorytmu.
Metryczne | opis |
---|---|
cosine |
Ta metryka mierzy kąt między dwoma wektorami i nie ma wpływu na różne długości wektorów. Matematycznie oblicza kąt między dwoma wektorami. Cosine to metryka podobieństwa używana przez modele osadzania usługi Azure OpenAI, więc jeśli używasz usługi Azure OpenAI, określ cosine w konfiguracji wektorów. |
dotProduct |
Ta metryka mierzy zarówno długość każdej pary dwóch wektorów, jak i kąt między nimi. Matematycznie oblicza produkty wielkości wektorów i kąt między nimi. W przypadku znormalizowanych wektorów jest to identyczne z cosine podobieństwem, ale nieco bardziej wydajne. |
euclidean |
(znany również jako l2 norm ) Ta metryka mierzy długość różnicy wektorów między dwoma wektorami. Matematycznie oblicza odległość euklidesową między dwoma wektorami, czyli l2-normą różnicy dwóch wektorów. |
Uwaga
Jeśli uruchamiasz równolegle co najmniej dwa zapytania wektorowe lub wykonujesz wyszukiwanie hybrydowe, które łączy zapytania wektorowe i tekstowe w tym samym żądaniu, funkcja RRF (Parallel Rank Fusion) jest używana do oceniania końcowych wyników wyszukiwania.
Wyniki w wynikach wyszukiwania wektorowego
Wyniki są obliczane i przypisywane do każdego dopasowania, a najwyższe dopasowania są zwracane jako k
wyniki. Właściwość @search.score
zawiera wynik. W poniższej tabeli przedstawiono zakres, w którym wynik spadnie.
Metoda wyszukiwania | Parametr | Metryka oceniania | Zakres |
---|---|---|---|
wyszukiwanie wektorowe | @search.score |
Cosinus | 0.333 - 1.00 |
W przypadkucosine
metryki należy pamiętać, że obliczona @search.score
wartość nie jest wartością cosinus między wektorem zapytania a wektorami dokumentów. Zamiast tego usługa Azure AI Search stosuje przekształcenia, dzięki czemu funkcja score jest monotonicznie malejąca, co oznacza, że wartości wyników zawsze będą spadać, ponieważ podobieństwo staje się gorsze. Ta transformacja gwarantuje, że wyniki wyszukiwania będą używane do celów klasyfikacji.
Istnieją pewne niuanse z wynikami podobieństwa:
- Podobieństwo cosinus jest definiowane jako cosinus kąta między dwoma wektorami.
- Odległość cosinusu jest definiowana jako
1 - cosine_similarity
.
Aby utworzyć monotonicznie malejącą funkcję, element jest definiowany @search.score
jako 1 / (1 + cosine_distance)
.
Deweloperzy, którzy potrzebują wartości cosinus zamiast wartości syntetycznej, mogą użyć formuły, aby przekonwertować wynik wyszukiwania z powrotem na odległość cosinus:
double ScoreToSimilarity(double score)
{
double cosineDistance = (1 - score) / score;
return -cosineDistance + 1;
}
Posiadanie oryginalnej wartości cosinus może być przydatne w rozwiązaniach niestandardowych, które konfigurują progi w celu przycinania wyników niskiej jakości.
Porady dotyczące dostrajania istotności
Jeśli nie otrzymujesz odpowiednich wyników, poeksperymentuj ze zmianami w konfiguracji zapytania. W przypadku zapytań wektorowych nie ma określonych funkcji dostrajania, takich jak profil oceniania, profil oceniania lub pole lub zwiększenie terminu:
Poeksperymentuj z rozmiarem fragmentu i nakładają się na siebie. Spróbuj zwiększyć rozmiar fragmentu i zapewnić wystarczające nakładanie się, aby zachować kontekst lub ciągłość między fragmentami.
W przypadku systemu HNSW spróbuj zmienić
efConstruction
wewnętrzny skład grafu zbliżeniowego. Wartość domyślna to 400. Zakres wynosi od 100 do 1000.Zwiększ
k
wyniki, aby podać więcej wyników wyszukiwania do modelu czatu, jeśli używasz go.Wypróbuj zapytania hybrydowe z semantycznym rankingiem. W testach porównawczych ta kombinacja spójnie przyniosła najbardziej istotne wyniki.