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.
Osadzanie lub liczbowa reprezentacja zawartości heterogenicznej są podstawą obciążeń wyszukiwania wektorowego, ale rozmiary osadzania utrudniają ich skalowanie i kosztowne przetwarzanie. Znaczące badania i produktyzacja stworzyły wiele rozwiązań w celu poprawy skali i skrócenia czasu przetwarzania. Usługa Azure AI Search umożliwia korzystanie z wielu tych funkcji w celu uzyskania szybszych i tańszych obciążeń wektorowych.
W tym artykule omówiono wszystkie techniki optymalizacji w usłudze Azure AI Search, które mogą ułatwić skrócenie czasu przetwarzania wektorów i zapytań.
Ustawienia optymalizacji wektorów są określane w definicjach pól wektorów w indeksie wyszukiwania. Większość funkcji opisanych w tym artykule jest ogólnie dostępna w interfejsie API REST 2024-07-01 i pakietach zestawu Azure SDK przeznaczonych dla tej wersji. Najnowsza wersja zapoznawcza dodaje obsługę obcinanych wymiarów, jeśli używasz funkcji osadzania tekstu w formacie 3-large lub text-embedding-3-small na potrzeby wektoryzacji.
Ocena opcji
Zapoznaj się z podejściami w usłudze Azure AI Search, aby zmniejszyć ilość miejsca do magazynowania używanego przez pola wektorowe. Te podejścia nie wykluczają się wzajemnie i można je połączyć w celu maksymalnego zmniejszenia rozmiaru wektora.
Zalecamy wbudowaną kwantyzację, ponieważ kompresuje rozmiar wektora w pamięci i na dysku przy minimalnym nakładzie pracy, co zazwyczaj zapewnia największą korzyść w większości scenariuszy. W przeciwieństwie, wąskie typy (z wyjątkiem float16) wymagają specjalnego nakładu pracy, aby je utworzyć, i stored
oszczędza miejsce na dysku, co nie jest tak drogie jak pamięć.
Metoda | Dlaczego warto użyć tego podejścia |
---|---|
Dodawanie kwantyzacji skalarnych lub binarnych | Kompresuj natywne float32 lub float16 zakodowania do int8 (skalarnego) lub bajtowego (binarnego). Ta opcja zmniejsza ilość miejsca w pamięci i na dysku bez obniżenia wydajności zapytań. Mniejsze typy danych, takie jak int8 lub bajty, generują indeksy wektorów, które są mniej bogate w zawartość niż te z większymi osadzaniami. Aby zrównoważyć utratę informacji, wbudowana kompresja obejmuje opcje przetwarzania po zapytaniu przy użyciu nieskompresowanych osadzeń i oversampling w celu zwrócenia bardziej odpowiednich wyników. Refranking i oversampling to specyficzne cechy wbudowanego kwantyzacji float32 lub float16 pól i nie można ich używać na osadzaniu, które przechodzą niestandardowe kwantyzacje. |
Obcinanie wymiarów dla modeli osadzania tekstu z obsługą języka MRL—3 (wersja zapoznawcza) | Używaj mniejszej liczby wymiarów w modelach osadzania tekstu–3. W usłudze Azure OpenAI te modele są ponownie trenowane w technice uczenia reprezentacji matryoshka (MRL), która tworzy wiele reprezentacji wektorów na różnych poziomach kompresji. Takie podejście pozwala szybciej wyszukiwać i zmniejszać koszty magazynowania przy minimalnej utracie informacji semantycznych. W usłudze Azure AI Search język MRL obsługuje uzupełnienie kwantyzacji skalarnej i binarnej. W przypadku użycia jednej z metod kwantyzacji można również określić truncateDimension właściwość w polach wektorów, aby zmniejszyć wymiarowość osadzania tekstu. |
Przypisywanie mniejszych typów danych pierwotnych do pól wektorów | Wąskie typy danych, takie jak float16, int16, int8 i bajt (binarny), zużywają mniej miejsca w pamięci i na dysku, ale musisz mieć model osadzania, który generuje wektory w wąskim formacie danych. Alternatywnie musisz mieć niestandardową logikę kwantyzacji, która generuje małe dane. Trzeci przypadek użycia, który wymaga mniejszego nakładu pracy, to ponowne odemisji natywnych osadzania float32 generowanych przez większość modeli do float16. Aby uzyskać informacje o wektorach binarnych, zobacz Indeksowanie wektorów binarnych. |
Eliminowanie opcjonalnego przechowywania wektorów do pobrania | Wektory zwracane w odpowiedzi zapytania są przechowywane oddzielnie od wektorów używanych podczas wykonywania zapytania. Jeśli nie musisz zwracać wektorów, możesz wyłączyć magazyn, który można pobrać, zmniejszając ogólny magazyn dyskowy na pole o maksymalnie 50 procent. |
Wszystkie te opcje są definiowane w pustym indeksie. Aby zaimplementować dowolne z nich, użyj witryny Azure Portal, interfejsów API REST lub pakietu zestawu Azure SDK przeznaczonego dla tej wersji interfejsu API.
Po zdefiniowaniu indeksu można załadować i indeksować dokumenty jako oddzielny krok.
Przykład: Rozmiar wektora według techniki kompresji wektorów
Przykład kodu: kwantyzacja wektorów i opcje magazynowania przy użyciu języka Python to przykład kodu w języku Python , który tworzy wiele indeksów wyszukiwania, które różnią się w zależności od użycia kwantyzacji magazynu wektorowego, wąskich typów danych i właściwości magazynu.
Ten kod tworzy i porównuje rozmiar magazynu i indeksu wektorowego dla każdej opcji optymalizacji magazynu wektorowego. Z tych wyników widać, że kwantyzacja zmniejsza rozmiar wektora najbardziej, ale największe oszczędności w magazynie są osiągane, jeśli używasz wielu opcji.
Nazwa indeksu | Rozmiar magazynu | Rozmiar wektora |
---|---|---|
test kompresji-wartość bazowa | 21,3613 MB | 4,8277 MB |
test kompresji - skalarna kompresja | 17,7604 MB | 1,2242 MB |
test kompresji - wąski | 16,5567 MB | 2,4254 MB |
test kompresji-brak przechowywania | 10,9224 MB | 4,8277 MB |
test kompresji - wszystkie opcje | 4,9192 MB | 1,2242 MB |
Interfejsy API wyszukiwania raportują magazyn i rozmiar wektorów na poziomie indeksu, więc indeksy, a nie pola, muszą być podstawą porównania. Użyj GET Index Statistics lub równoważnego API w zestawach SDK platformy Azure, aby uzyskać rozmiar wektora.