Sdílet prostřednictvím


Volba přístupu pro optimalizaci úložiště a zpracování vektorů

Vkládání nebo číselná reprezentace heterogenního obsahu jsou základem úloh vektorového vyhledávání, ale velikosti vkládání je obtížné škálovat a nákladně zpracovávat. Významné výzkumy a produktizace vytvořily několik řešení pro zlepšení škálování a zkrácení doby zpracování. Azure AI Search narazí na řadu těchto funkcí pro rychlejší a levnější vektorové úlohy.

Tento článek obsahuje výčet všech technik optimalizace ve službě Azure AI Search, které vám pomůžou zmenšit velikost vektoru a doby zpracování dotazů.

Nastavení optimalizace vektorů se zadává v definicích vektorového pole v indexu vyhledávání. Většina funkcí popsaných v tomto článku je obecně dostupná v rozhraní REST API 2024-07-01 a v balíčcích sady Azure SDK, které cílí na tuto verzi. Nejnovější verze Preview přidává podporu zkrácených dimenzí, pokud pro vektorizaci používáte text-embedding-3-large nebo text-embedding-3-small.

Vyhodnocení možností

Projděte si přístupy ve službě Azure AI Search a snižte množství úložiště používaného vektorovými poli. Tyto přístupy se vzájemně nevylučují a lze je kombinovat pro maximální zmenšení velikosti vektoru.

Doporučujeme předdefinované kvantování, protože komprimuje velikost vektoru v paměti a na disku s minimálním úsilím a ve většině scénářů poskytuje největší výhodu. Naproti tomu úzké typy (s výjimkou float16) vyžadují zvláštní úsilí při jejich vytváření a stored šetří diskové úložiště, což není tak nákladné jako paměť.

Přístup Proč tuto možnost použít
Přidání skalární nebo binární kvantování Pomocí kvantování můžete komprimovat nativní float32 nebo float16 vkládání na int8 (skalární) nebo bajt (binární). Tato možnost snižuje úložiště v paměti a na disku bez snížení výkonu dotazů. Menší datové typy, jako jsou int8 nebo Bajt, vytvářejí vektorové indexy, které jsou méně bohaté na obsah než ty, které mají větší vkládání. K posunu ztráty informací obsahuje integrovaná komprese možnosti následného zpracování dotazů pomocí nekomprimovaných vkládání a převzorkování pro vrácení relevantnějších výsledků. Přehodnocení a převzorkování jsou specifické funkce předdefinované kvantování polí float32 nebo float16 a nelze je použít při vkládání, které procházejí vlastní kvantizací.
Zkrácení dimenzí pro modely s podporou MRL pro vkládání textu -3 (Preview) Využijte možnost použít méně dimenzí u modelů pro vkládání textu-3. V Azure OpenAI byly tyto modely přetrénovány na technice Matryoshka Representation Learning (MRL), která vytváří více vektorových reprezentací na různých úrovních komprese. Tento přístup vytváří rychlejší vyhledávání a snižuje náklady na úložiště s minimální ztrátou sémantických informací. Ve službě Azure AI Search podporuje MRL doplňky skalární a binární kvantování. Pokud použijete některou truncateDimension metodu kvantování, můžete také zadat vlastnost u vektorových polí, abyste snížili dimenzionální rozměry vkládání textu.
Přiřazení menších primitivních datových typů k vektorům polím Úzké datové typy, jako je float16, int16, int8 a Byte (binární), spotřebovávají méně místa v paměti a na disku, ale musíte mít model pro vložení, který vypíše vektory v úzkém datovém formátu. Nebo musíte mít vlastní logiku kvantování, která vypíše malá data. Třetí případ použití, který vyžaduje menší úsilí, spočívá v přesílání nativních vkládání float32 vytvořených většinou modelů na float16. Podrobnosti o binárních vektorech binárních vektorů naleznete v tématu Index binární vektory.
Eliminujte volitelné ukládání vektorů, které lze načíst. Vektory vrácené v odpovědi dotazu se ukládají odděleně od vektorů používaných během provádění dotazu. Pokud nepotřebujete vracet vektory, můžete vypnout úložiště s možností načítání a snížit celkové úložiště disku na pole o až 50 procent.

Všechny tyto možnosti jsou definovány na prázdném indexu. K implementaci některé z nich použijte Azure Portal, rozhraní REST API nebo balíček sady Azure SDK, který cílí na tuto verzi rozhraní API.

Po definování indexu můžete dokumenty načíst a indexovat jako samostatný krok.

Příklad: velikost vektoru podle techniky komprese vektorů

Ukázka kódu: Vektorové kvantování a možnosti úložiště pomocí Pythonu je ukázka kódu Pythonu , která vytváří více indexů vyhledávání, které se liší pomocí kvantování vektorového úložiště, úzkých datových typů a vlastností úložiště.

Tento kód vytvoří a porovná velikost indexu úložiště a vektoru pro každou možnost optimalizace úložiště vektorů. Z těchto výsledků vidíte, že kvantování zmenšuje velikost vektoru nejvíce, ale největší úspora úložiště se dosáhne, pokud použijete více možností.

Název indexu Velikost úložiště Velikost vektoru
compressiontest-baseline 21.3613 MB 4.8277 MB
compressiontest-scalar-compression 17,7604 MB 1.2242 MB
compressiontest-narrow 16,5567 MB 2.4254 MB
compressiontest-no-stored 10,9224 MB 4.8277 MB
compressiontest-all-options 4.9192 MB 1.2242 MB

Rozhraní API pro vyhledávání hlásí úložiště a velikost vektoru na úrovni indexu, takže indexy a nikoli pole musí být základem porovnání. K získání velikosti vektoru použijte statistiku indexu GET nebo ekvivalentní rozhraní API v sadách Azure SDK.

Viz také