Przypisywanie wąskich typów danych do pól wektorów w usłudze Azure AI Search
Łatwym sposobem zmniejszenia rozmiaru wektora jest przechowywanie osadzeń w mniejszym formacie danych. Większość modeli osadzania generuje 32-bitowe liczby zmiennoprzecinkowe, ale jeśli kwantyzujesz wektory lub jeśli model osadzania obsługuje go natywnie, dane wyjściowe mogą być zmiennoprzecinkowe16, int16 lub int8, co jest znacznie mniejsze niż float32. Te mniejsze rozmiary wektorów można uwzględnić, przypisując wąski typ danych do pola wektorowego. W indeksie wektorowym wąskie typy danych zużywają mniej miejsca do magazynowania.
Typy danych są przypisywane do pól w definicji indeksu. Możesz użyć witryny Azure Portal, interfejsów API REST wyszukiwania lub pakietu zestawu Azure SDK, który udostępnia tę funkcję.
Wymagania wstępne
- Model osadzania, który generuje małe formaty danych, takie jak osadzanie tekstu-3 lub Cohere V3, modele osadzania.
Obsługiwane wąskie typy danych
Przejrzyj typy danych używane dla pól wektorów w celu uzyskania zalecanego użycia:
Collection(Edm.Single)
32-bitowy zmiennoprzecinkowa (wartość domyślna)Collection(Edm.Half)
16-bitowy zmiennoprzecinkowa (wąski)Collection(Edm.Int16)
16-bitowa liczba całkowita ze znakiem (wąska)Collection(Edm.SByte)
8-bitowa liczba całkowita ze znakiem (wąska)Collection(Edm.Byte)
8-bitowa liczba całkowita bez znaku (dozwolona tylko z zapakowanymi typami danych binarnych)
Z tej listy określ, który typ danych jest prawidłowy dla danych wyjściowych modelu osadzania lub dla wektorów, które są poddawane kwantyzacji niestandardowej.
Poniższa tabela zawiera linki do kilku modeli osadzania, które mogą używać wąskiego typu danych (
Collection(Edm.Half)
) bez dodatkowych kwantyzacji. Można rzutować z float32 do float16 (przy użyciuCollection(Edm.Half)
) bez dodatkowej pracy.Model osadzania Dane wyjściowe natywne Przypisywanie tego typu w usłudze Azure AI Search text-embedding-ada-002 Float32
Collection(Edm.Single)
lubCollection(Edm.Half)
osadzanie tekstu — 3 małe Float32
Collection(Edm.Single)
lubCollection(Edm.Half)
osadzanie tekstu —3 — duże Float32
Collection(Edm.Single)
lubCollection(Edm.Half)
Cohere V3 osadzanie modeli z int8 embedding_type Int8
Collection(Edm.SByte)
Inne wąskie typy danych mogą być używane, jeśli model emituje osadzanie w mniejszym formacie danych lub jeśli masz niestandardową kwantyzację, która konwertuje wektory na mniejszy format.
Upewnij się, że rozumiesz kompromisy wąskiego typu danych.
Collection(Edm.Half)
zawiera mniej informacji, co powoduje obniżenie rozdzielczości. Jeśli dane są homogeniczne lub gęste, utrata dodatkowych szczegółów lub niuansów może prowadzić do niedopuszczalnych wyników w czasie zapytania, ponieważ istnieje mniej szczegółów, których można użyć do odróżnienia pobliskich wektorów.
Przypisywanie typu danych
Definiowanie i tworzenie indeksu. W tym kroku możesz użyć witryny Azure Portal, tworzenia lub aktualizowania indeksu (interfejsu API REST) lub pakietu zestawu Azure SDK.
Ta definicja pola używa wąskiego typu danych , Collection(Edm.Half)
który może akceptować osadzanie float32 przechowywane jako wartość float16. Podobnie jak w przypadku wszystkich pól wektorowych i dimensions
vectorSearchProfile
są ustawiane. Specyfiki vectorSearchProfile
są niematerialne dla typu danych.
Zalecamy ustawienie retrievable
i stored
wartość true, jeśli chcesz wizualnie sprawdzić wartości pola. Podczas kolejnej ponownej kompilacji można zmienić te właściwości na false, aby zmniejszyć wymagania dotyczące magazynu.
{
"name": "nameEmbedding",
"type": "Collection(Edm.Half)",
"searchable": true,
"filterable": false,
"retrievable": true,
"sortable": false,
"facetable": false,
"key": false,
"indexAnalyzer": null,
"searchAnalyzer": null,
"analyzer": null,
"synonymMaps": [],
"dimensions": 1536,
"vectorSearchProfile": "myHnswProfile"
}
Pamiętaj, że pola wektorów nie są filtrowalne, sortowalne ani aspektowe. Nie można ich używać jako kluczy i nie używać analizatorów ani map synonimów.
Praca z indeksem produkcyjnym
Typy danych są przypisywane do nowych pól podczas ich tworzenia. Nie można zmienić typu danych istniejącego pola i nie można usunąć pola bez ponownego kompilowania indeksu. W przypadku ustalonych indeksów już w środowisku produkcyjnym często można obejść ten problem, tworząc nowe pola z żądanymi poprawkami, a następnie usuwając przestarzałe pola podczas planowanej odbudowy indeksu.
Sprawdzanie wyników
Sprawdź, czy zawartość pola jest zgodna z typem danych. Przy założeniu, że pole wektora jest oznaczone jako
retrievable
, użyj eksploratora wyszukiwania lub wyszukiwania — POST, aby zwrócić zawartość pola wektora.Aby sprawdzić rozmiar indeksu wektorowego, zapoznaj się z kolumną rozmiaru indeksu wektorowego na stronie Indeksy zarządzania wyszukiwania > w witrynie Azure Portal lub użyj metody GET Statistics (INTERFEJS API REST) lub równoważnej metody zestawu Azure SDK, aby uzyskać rozmiar.
Uwaga
Typ danych pola służy do tworzenia struktury danych fizycznych. Jeśli chcesz później zmienić typ danych, upuść i ponownie skompilować indeks lub utworzyć drugie pole z nową definicją.