Jak kwantyzacja produktów przyspiesza działanie dużych prywatnych kolekcji wektorów?

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.

Kwantyzacja produktowa przyspiesza pracę z dużymi prywatnymi kolekcjami wektorów, dzieląc embeddingi na podprzestrzenie i zastępując każdy podwektor kompaktowym kodem wyuczonego centroidu.

Jest to konkretny mechanizm należący do szerszej rodziny kwantyzacji wektorowej. Zamiast redukować każdą współrzędną niezależnie, PQ uczy się kilku mniejszych słowników kodów i reprezentuje jeden wielowymiarowy embedding jako sekwencję identyfikatorów kodów. Domowy serwer wyszukiwania może przechowywać w pamięci znacznie więcej takich kodów i szacować odległości zapytań na podstawie wstępnie obliczonych tabel, co zmniejsza zarówno liczbę przechowywanych bajtów wektorów, jak i ilość obliczeń na liczbach zmiennoprzecinkowych wymaganych podczas szerokiego skanowania kandydatów.

PQ dzieli jeden wielowymiarowy embedding na kilka podwektorów

Załóżmy, że embedding ma wymiar `d`. PQ wybiera `M` podkwantyzatorów i dzieli współrzędne na `M` bloków o mniejszym wymiarze, dzięki czemu każdy blok może być modelowany osobno.

Liczba podkwantyzatorów określa, na ile bloków o mniejszym wymiarze zostanie podzielony oryginalny embedding, a tym samym ile identyfikatorów kodów składa się na jedną reprezentację PQ.

To rozłożenie na czynniki nadaje kwantyzacji produktowej jej nazwę: pełne przybliżenie powstaje z wyborów dokonywanych niezależnie w kilku podprzestrzeniach, a nie z jednego ogromnego słownika kodów obejmującego cały wektor. Podprzestrzenie muszą dzielić wymiary wektora w sposób zgodny z wymaganiami. Ich rozmiar i liczba wpływają na stopień kompresji, koszt uczenia słowników kodów, dokładność obliczania odległości oraz dopasowanie rozkładu danych do reprezentacji rozłożonej na czynniki.

Każda podprzestrzeń uczy się słownika kodów reprezentatywnych centroidów

PQ jest zwykle trenowane na reprezentatywnej próbce kolekcji. Dla każdej podprzestrzeni klasteryzacja wyznacza wektory centroidów reprezentujące grupy podobnych podwektorów.

Typowy kwantyzator produktowy wykorzystuje k-means do uczenia centroidów w każdej podprzestrzeni, minimalizując błąd przybliżenia między podwektorami treningowymi a przypisanymi im reprezentantami.

Po zakończeniu trenowania baza danych nie musi już przechowywać wszystkich oryginalnych współrzędnych w kompaktowym kodzie używanym podczas wyszukiwania. Wystarczy identyfikator najbliższego centroidu z każdej podprzestrzeni.

Jeśli próbka treningowa słabo reprezentuje przyszłe dokumenty domowe, wyuczone centroidy mogą niedokładnie przybliżać późniejsze wektory. Jakość słownika kodów jest więc granicą implementacyjną, a nie jednorazowym szczegółem, który można zignorować.

Przechowywany wektor staje się krótką sekwencją identyfikatorów kodów

Dla każdego podwektora koder wyszukuje najbliższy centroid i zapisuje indeks tego centroidu. Połączenie `M` indeksów tworzy kod PQ dla całego embeddingu.

Przechowywanie kodów m podwektorów z konfigurowalną liczbą bitów zastępuje długą tablicę liczb zmiennoprzecinkowych krótką sekwencją identyfikatorów centroidów oraz współdzielonymi słownikami kodów.

Na przykład osiem bitów na podkwantyzator pozwala reprezentować 256 wyborów centroidu w danej podprzestrzeni. Całkowity kod wektora rośnie więc wraz z liczbą podkwantyzatorów, a nie wraz z 32-bitową precyzją każdej oryginalnej współrzędnej. Słowniki kodów i narzut indeksu nadal zajmują pamięć, dlatego cała kolekcja jest większa niż same bajty kodów. Oszczędności stają się najbardziej odczuwalne, gdy liczba wektorów jest wystarczająco duża, aby koszt współdzielonych słowników kodów rozłożył się na wiele elementów.

-15% OFF

Zapytanie tworzy tabele wyszukiwania odległości dla każdej podprzestrzeni

Gdy pojawia się zapytanie, system dzieli je na te same podprzestrzenie i oblicza jego odległość od każdego centroidu w każdym słowniku kodów. Wartości te tworzą niewielkie tabele wyszukiwania.

Tabela odległości zapytanie–centroid wstępnie oblicza odległość zapytania od każdego centroidu w każdej podprzestrzeni, dzięki czemu odległości kandydatów można składać na podstawie niewielkich tabel zamiast wykonywać obliczenia na pełnych wektorach.

Aby oszacować odległość do przechowywanego wektora bazy danych, wyszukiwanie nie rekonstruuje już każdej pełnej współrzędnej. Odczytuje każdy identyfikator kodu, pobiera odpowiadającą mu odległość podprzestrzeni i sumuje te wartości.

Ta ścieżka oparta na tabelach jest często nazywana asymetrycznym obliczaniem odległości, ponieważ zapytanie może pozostać zapisane z wysoką precyzją, podczas gdy wektory bazy danych są reprezentowane przez skwantyzowane kody.

Kompaktowe kody poprawiają lokalność pamięci podręcznej wraz ze wzrostem kolekcji

Duże skanowania wektorów są często ograniczane przez przesyłanie danych kandydatów przez pamięć, a nie przez złożoność matematyczną pojedynczej operacji obliczania odległości.

Krótkie kody pozwalają zmieścić więcej kandydatów w pamięciach podręcznych procesora i zmniejszają przepustowość potrzebną na jedno porównanie.

Skompresowana ścieżka obliczania odległości może być przyspieszana za pomocą wyszukiwania w tabelach przyjaznego dla SIMD, ponieważ wyszukiwanie z kwantyzacją produktową wielokrotnie odczytuje kompaktowe kody i akumuluje odległości podprzestrzeni.

W prywatnej kolekcji domowej może to zdecydować o tym, czy aktywna reprezentacja wyszukiwania indeksu pozostanie w pamięci RAM, czy też będzie nieustannie konkurować o zasoby z lokalnym LLM-em, bazą danych i pamięcią podręczną systemu plików.

Korzyść jest mniejsza, gdy kolekcja jest niewielka, filtrowanie metadanych ogranicza każde zapytanie do kilku wektorów albo gdy opóźnienie jest zdominowane przez inną warstwę indeksu.

PQ zwykle wymienia część trafności na kompresję i szybkość

Kody centroidów przybliżają oryginalne podwektory, dlatego kolejność dwóch kandydatów może się zmienić, gdy ich rzeczywiste odległości są do siebie zbliżone. Bardziej agresywna kompresja zwykle pozostawia mniej informacji pozwalających je rozróżnić.

Traktowanie kwantyzacji produktowej jako kompresji stratnej jasno pokazuje tę granicę: mniejsze kody zmniejszają zużycie pamięci przez wektory, ale błąd kwantyzacji może zmienić kolejność bliskich sąsiadów.

Zwiększenie liczby podkwantyzatorów lub liczby bitów pozwala zachować więcej szczegółów, ale powiększa każdy kod i struktury wyszukiwania. Mniejsze kody oszczędzają więcej pamięci, lecz zwiększają ryzyko błędu kwantyzacji. Użyteczna konfiguracja zależy od korpusu. Ściśle powiązane instrukcje, zduplikowane wersje dokumentów i wyszukiwanie kodu na małym poziomie szczegółowości mogą wymagać większej precyzji niż szerokie wyszukiwanie semantyczne w różnorodnych domowych notatkach.

Kompaktowe wyszukiwanie wstępne można uzupełnić ponownym rankingiem z pełną precyzją

PQ nie wymaga, aby końcowa odpowiedź bezkrytycznie ufała kolejności odległości skompresowanych. System może pobrać szerszy zestaw kandydatów za pomocą PQ, a następnie ponownie ocenić tylko tych kandydatów, korzystając z oryginalnych wektorów przechowywanych w innym miejscu.

W ramach semantycznego wyszukiwania wektorowego PQ zmienia reprezentację używaną do porównywania kandydatów; pochodzenie danych, filtrowanie metadanych, ponowne rankingowanie i RAG nadal działają wokół tego etapu wektorowego.

Takie podejście dwuetapowe asymetrycznie wykorzystuje pamięć i moc obliczeniową: skompresowane kody obsługują dużą przestrzeń kandydatów, a dokładne wektory są odczytywane tylko dla krótkiej listy wyników.

Kwantyzacja produktowa przyspiesza pracę z prywatną kolekcją, gdy kompaktowe kody znacząco zmniejszają zbiór roboczy i ruch danych związany z obliczaniem odległości, nie obniżając zmierzonej trafności poniżej poziomu jakości dowodów wymaganego przez lokalny system RAG.

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.