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

Note

Azure AI Vyhledávač je k dispozici prostřednictvím portálu Azure, rozhraní REST API a Sady Azure SDK. Podporuje také Foundry IQ, spravovanou znalostní vrstvu, která transformuje podnikový obsah na opakovaně použitelné znalostní báze s podporou oprávnění pro agenty na portálu Microsoft Foundry.

Vkládání nebo číselná reprezentace heterogenního obsahu jsou základem úloh vektorového vyhledávání. Velikosti vestavění ale činí škálování obtížným a zpracování nákladným. 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 Vyhledávač využívá mnoho z těchto schopností pro rychlejší a levnější vektorové pracovní zátěže.

Tento článek popisuje všechny techniky optimalizace v Azure AI Vyhledávač, které vám pomůžou zmenšit velikost vektoru a doby zpracování dotazů.

Nastavení optimalizace vektorů zadáte v definicích vektorových polí v indexu vyhledávání. Většina funkcí popsaných v tomto článku je obecně dostupná v test stabilní verzi rozhraní REST API a Azure SDK balíčků, které cílí na tuto verzi.

Vyhodnocení možností

Projděte si přístupy v Azure AI Vyhledávač pro snížení velikosti úložiště používaného vektorovými poli. Tyto přístupy se vzájemně nevylučují, takže je můžete 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. Tento přístup má tendenci poskytovat největší výhodu ve většině scénářů. Naproti tomu úzké typy (s výjimkou float16) vyžadují zvláštní úsilí k jejich vytvoření a stored šetří diskové úložiště, což není tak nákladné jako paměť.

Přístup Proč tento přístup používat
Přidat skalární nebo binární kvantování Provádějte kompresi nativních float32 nebo float16 zápisů na int8 (skalární) nebo bajt (dvojkový kód). Tato možnost snižuje úložiště v paměti a na disku bez snížení výkonu dotazů. Menší datové typy, například int8 nebo bajt, vytvářejí vektorové indexy, které jsou méně bohaté na obsah než ty, které mají větší vkládání. K vyvážení ztráty informací nabízí integrovaná komprese možnosti následného zpracování dotazů pomocí nekomprimovaného embedování a převzorkování pro zajištění relevantnějších výsledků. Přehodnocení a převzorkování jsou specifické funkce vestavěné kvantizace polí float32 nebo float16 a nelze je použít na vkládání, které jsou podrobeny vlastní kvantizaci.
Zkrácení dimenzí pro modely textového vkládání 3 podporující MRL Používejte méně rozměrů u modelů textového vkládání třetí úrovně. Na Azure OpenAI se tyto modely přetrénují na Matryoshka Representation Learning (MRL), která vytváří více vektorových reprezentací na různých úrovních komprese. Tento přístup vytváří rychlejší hledání a snižuje náklady na úložiště s minimální ztrátou sémantických informací. V Azure AI Vyhledávač MRL podporuje 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, například float16, int16, int8 a bajt (binární), spotřebovávají méně místa v paměti a na disku. Musíte ale mít vložený model, který vypíše vektory v úzkém datovém formátu. Případně 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řevádění nativních vektorů float32 vytvořených většinou modely na float16. Informace o binárních vektorech 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í, abyste snížili celkové diskové úložiště na pole o až 50 procent.

Definujte všechny tyto možnosti na prázdném indexu. K implementaci některé z nich použijte portál Azure, rozhraní REST API nebo balíček 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: Vektorová velikost podle techniky komprese vektorů

Ukázka kódu Python: Kvantizace vektorů a možnosti úložiště je ukázka kódu Python, která vytváří více indexů vyhledávání, které se liší podle jejich použití kvantizace úložiště vektorů, úzké datové typy a vlastnosti ú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
test komprese - základní linka 21,3613 MB 4,8277 MB
kompresní test - skalární komprese 17,7604 MB 1,2242 MB
compressiontest-narrow 16,5567 MB 2,4254 MB
compressiontest-no-stored 10,9224 MB 4,8277 MB
test-komprese-všechny-možnosti 4,9192 MB 1,2242 MB

Rozhraní REST API vyhledávací služby hlásí velikost úložiště a vektoru na úrovni indexu, takže je nutné porovnat indexy, nikoli pole. K získání velikosti vektoru použijte Indexes – Získat statistiky (REST API) nebo ekvivalentní rozhraní API v Sady Azure SDK.