Dlaczego ranking wyszukiwania wektorowego zmienia się, gdy jednocześnie przeszukiwanych jest wiele segmentów indeksu?

Eva Wong jest Technicznym pisarzem i stałym majsterkowiczem w ZimaSpace. Całe życie geek z pasją do homelabów i oprogramowania open-source, specjalizuje się w tłumaczeniu skomplikowanych koncepcji technicznych na przystępne, praktyczne przewodniki. Eva wierzy, że samodzielne hostowanie powinno być zabawą, a nie czymś onieśmielającym. Poprzez swoje samouczki umożliwia społeczności rozwiewanie tajemnic konfiguracji sprzętu, od budowy pierwszego NAS po opanowanie kontenerów Docker.

Ranking wektorów może zmieniać się w wielu segmentach, ponieważ przybliżone wyszukiwanie kandydatów odbywa się osobno, zanim globalne scalanie top-k porówna niepełne zbiory wyników.

Prywatny indeks może przechowywać duży segment bazowy oraz mniejsze segmenty zawierające ostatnie aktualizacje dokumentów. Zapytanie jest wykonywane względem każdej struktury, zbierana jest ograniczona liczba kandydatów, a następnie scalane są ich wyniki. Rozmiar segmentu, jakość grafu lub partycji, budżet wyszukiwania, usunięte rekordy, normalizacja wyników oraz rozkład aktualizacji decydują o tym, które sąsiednie wektory pozostaną, nawet gdy wszystkie wektory korzystają z tego samego modelu embeddingów.

Każdy segment tworzy lokalnie niepełny zbiór kandydatów

Przybliżone wyszukiwanie najbliższych sąsiadów analizuje tylko część indeksu. Gdy korpus jest podzielony, każdy segment otrzymuje własną szerokość wiązki, liczbę sond lub limit top-k, a globalny mechanizm scalający może uszeregować wyłącznie kandydatów zwróconych przez te lokalne wyszukiwania.

wielopoziomowe wyszukiwanie wektorowe łączy hierarchiczne indeksowanie grafowe z poziomami o strukturze logu na potrzeby dynamicznych aktualizacji wektorów. Jego konstrukcja pokazuje, że strategia wyszukiwania musi uwzględniać miejsce przechowywania wektorów na poszczególnych poziomach, zamiast traktować segmentowaną pamięć masową jak jeden dokładny skan odległości.

Mały, niedawno utworzony segment może zwrócić słabych kandydatów, ponieważ ma przydzielony limit, podczas gdy duży segment bazowy może pominąć rzeczywistego sąsiada, ponieważ jego lokalny budżet jest zbyt mały. Zwiększenie końcowej wartości top-k nie odzyska elementu, którego nie ujawnił żaden segment.

Jakość partycjonowania i aktualność różnią się między segmentami

Starsze segmenty mogą zawierać dobrze zoptymalizowane grafy lub klastry, podczas gdy świeże segmenty zawierają wstawienia i znaczniki usunięcia nagromadzone przy innym rozkładzie danych. Ich kompletność, koszt przechodzenia oraz zagęszczenie kandydatów mogą więc różnić się, zanim wyniki dotrą do globalnego scalania.

aktualizacje grafu strumieniowego umożliwiają aktualizacje grafu w czasie rzeczywistym przy zachowaniu wysokiej kompletności i bez konieczności okresowego pełnego przebudowywania indeksu. Praca ta pokazuje, dlaczego dynamiczne wyszukiwanie wektorowe wymaga jawnych reguł aktualizacji, zamiast zakładać, że statyczny graf nadal odzwierciedla dane.

Zduplikowane wersje dokumentów mogą również znajdować się w różnych segmentach i konkurować o miejsce w top-k. Filtry wersji stosowane po wyszukiwaniu ANN marnują lokalne miejsca na kandydatów; uwzględnienie ograniczeń dotyczących aktywnej wersji i uprawnień już podczas generowania kandydatów zmniejsza tę ukrytą presję na ranking.

Globalne scalanie wyników nie naprawi brakujących ani nieporównywalnych danych

Wartości cosinusa, iloczynu skalarnego lub odległości są matematycznie porównywalne tylko wtedy, gdy wektory i normalizacja są zgodne. Kwantyzacja, transformacje specyficzne dla segmentu lub niespójne przeliczanie wyników mogą sprawić, że pozornie równe liczby będą oznaczać różny błąd przybliżenia. Różnica ta pozostaje widoczna podczas późniejszych testów domowych.

lokalne równoważenie partycji zastępuje kosztowne globalne przebudowy lokalnym równoważeniem partycji w miarę zmian danych. Wyniki oceny wskazują na wahania opóźnienia wyszukiwania i dokładności w podejściach opartych na przebudowie, ilustrując, dlaczego zasady konsolidacji zmieniają obserwowalne zachowanie rankingu. Wynik pośredni musi pozostać możliwy do sprawdzenia, zanim automatyzacja będzie kontynuowana.

Granica problemu pojawia się wtedy, gdy oczekujemy deterministycznej kolejności przy niemal remisowych wynikach. Jądra zmiennoprzecinkowe, równoczesne aktualizacje i przybliżone przechodzenie po grafie mogą zamieniać miejscami sąsiadów o niemal identycznych wynikach nawet w jednym segmencie. Zmianę rankingu należy uznać za błąd tylko wtedy, gdy kompletność, jakość danych źródłowych lub poprawność wersji przekroczy określony próg tolerancji.

-15% OFF

Zmierz udział segmentów przed konsolidacją

Utwórz zamrożony zestaw zapytań z dokładnymi najbliższymi sąsiadami i ocenami istotności dokumentów. Uruchom każdy segment osobno i wszystkie segmenty razem, zmieniając lokalne top-k, szerokość wiązki grafu, liczbę sond, filtry usunięć oraz udział nowych wektorów.

Porównaj wyniki z zachowaniem po kompaktowaniu opisanym w sekcji sąsiedzi po kompaktowaniu. Zapisuj, który segment dostarczył każdego końcowego kandydata, jego lokalną pozycję, surową odległość, znormalizowany wynik, kandydatów odfiltrowanych później, globalną kompletność, korelację rankingów, opóźnienie oraz poprawność wersji. Tę granicę należy mierzyć osobno w realistycznych warunkach pracy.

Zwiększaj lokalne budżety tylko tam, gdzie pominięci istotni sąsiedzi uzasadniają dodatkowy koszt. Jeśli segmenty korzystają z niezgodnych embeddingów lub transformacji wyników, przebuduj je albo rozdziel; globalne scalanie nie skalibruje wadliwej reprezentacji po wygenerowaniu kandydatów.

Centrum Technologii i Sztucznej Inteligencji

Więcej do przeczytania

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.