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.
Note
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.
Osadzanie lub liczbowa reprezentacja heterogenicznej zawartości to podstawa obciążeń wyszukiwania wektorowego. Jednak rozmiary osadzania sprawiają, że trudno je skalować i kosztowne do przetworzenia. Znaczące badania i produktyzacja stworzyły wiele rozwiązań w celu poprawy skali i skrócenia czasu przetwarzania. Wyszukiwanie AI platformy Azure wykorzystuje szereg tych funkcji w celu uzyskania szybszych i tańszych obciążeń wektorowych.
W tym artykule omówiono wszystkie techniki optymalizacji w Wyszukiwanie AI platformy Azure, które mogą pomóc zmniejszyć rozmiar wektora i czasy przetwarzania zapytań.
Ustawienia optymalizacji wektorów określa się w definicjach pól wektorów w indeksie wyszukiwania. Większość funkcji opisanych w tym artykule jest ogólnie dostępna w najnowszej stabilnej wersji interfejsu API REST oraz w pakietach Azure SDK przeznaczonych dla tej wersji.
Ocena opcji
Zapoznaj się z metodami w Wyszukiwanie AI platformy Azure, aby zmniejszyć ilość miejsca do magazynowania używanego przez pola wektorów. Te podejścia nie wykluczają się wzajemnie, więc można je połączyć w celu maksymalnego zmniejszenia rozmiaru wektora.
Zalecamy stosowanie wbudowanej kwantyzacji, ponieważ pozwala na kompresję rozmiaru wektora w pamięci i na dysku przy minimalnym wysiłku. Takie podejście zwykle zapewnia największą korzyść w większości scenariuszy. Natomiast wąskie typy (z wyjątkiem float16) wymagają specjalnego nakładu pracy, aby je utworzyć i stored oszczędza miejsce na dysku, które nie jest tak drogie jak pamięć.
| Podejście | Dlaczego warto użyć tego podejścia |
|---|---|
| Dodawanie kwantyzacji skalarnych lub binarnych | Kompresuj natywne osadzenia float32 lub float16 do int8 (skalarów) lub bajtów (binarnych). 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. Przerankingowanie i oversampling to specyficzne cechy wbudowanej kwantyzacji pól danych float32 lub float16 i nie można ich używać do osadzania, które przechodzą niestandardową kwantyzację. |
| Przycinanie wymiarów w modelach osadzania tekstu zdolnych do obsługi MRL-3 | Używaj mniejszej liczby wymiarów w modelach osadzania tekstu–3. W Azure OpenAI te modele są ponownie trenowane na technice Matryoshka Representation Learning (MRL), która tworzy wiele reprezentacji wektorowych na różnych poziomach kompresji. Takie podejście pozwala szybciej wyszukiwać i zmniejszać koszty magazynowania przy minimalnej utracie informacji semantycznych. W Wyszukiwanie AI platformy Azure, wsparcie dla MRL wspomaga kwantyzację 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. Jednak musisz mieć model osadzania, który generuje wektory wyjściowe 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 przekonwertowanie natywnych osadzeń float32 generowanych przez większość modeli na 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ć pamięć do odzyskiwania, aby zmniejszyć przechowywanie danych na dysku dla poszczególnych pól o maksymalnie 50 procent. |
Zdefiniuj wszystkie te opcje w pustym indeksie. Aby zaimplementować dowolne z nich, użyj portalu Azure, interfejsów API REST lub pakietu 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
Kwantyzacja wektorów i opcje przechowywania w Pythonie jest przykładem kodu w Pythonie, który tworzy wiele indeksów wyszukiwania, które różnią się w zależności od użycia kwantyzacji przechowywania wektorowego, wąskich typów danych i właściwości przechowywania.
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 |
| testkompresji-skalarnakompresja | 17,7604 MB | 1,2242 MB |
| compressiontest-narrow | 16,5567 MB | 2,4254 MB |
| test kompresji - brak przechowywania | 10,9224 MB | 4,8277 MB |
| compressiontest-all-options | 4,9192 MB | 1,2242 MB |
Interfejsy API REST usługi wyszukiwania raportują magazyn i rozmiar wektora na poziomie indeksu, więc należy porównać indeksy, a nie pola. Użyj Indexes — Pobierz statystyki (interfejs API REST) lub równoważnego interfejsu API w Azure SDKs, aby uzyskać rozmiar wektora.