Volba služby Azure pro vektorové vyhledávání

Vektorové vyhledávání je metoda hledání informací uložených v databázi ve tvaru vektorů. Vektory jsou skupiny čísel, které představují vlastnosti nebo charakteristiky médií, jako je text nebo obrázky. Vektory představují významný pokrok oproti tradičním metodám hledání založeným na klíčových slovech. Nabízejí rychlejší a přesnější výsledky pochopením sémantických vztahů v rámci informací.

Azure nabízí několik způsobů ukládání a vyhledávání vektorizovaných dat. Tento článek pomáhá architektům a vývojářům, kteří potřebují porozumět a zvolit správnou službu Azure pro vektorové vyhledávání pro svou aplikaci.

Tento článek porovnává následující služby na základě možností vektorového vyhledávání:

Architekti a vývojáři by měli porovnat dostupné služby z pohledu požadavků na systém v matici Volba kandidátské služby a v matici schopností.

Volba kandidátské služby

Tato část vám pomůže vybrat nejpravděpodobnější služby pro vaše potřeby. Pokud chcete volby zúžit, začněte zvážením požadavků na systém.

Klíčové požadavky

Vývojový diagram, který vám pomůže zvolit správnou službu Azure pro vektorové vyhledávání.

Při rozhodování, jestli použít tradiční databázové řešení nebo azure AI Search, zvažte své požadavky a to, jestli můžete s daty prohledávat živé nebo vektorové vyhledávání v reálném čase. Tradiční relační databáze nebo databáze NoSQL je nejvhodnější pro váš scénář, pokud často měníte hodnoty v vektorizovaných polích a změny musí být prohledávatelné v reálném čase nebo téměř v reálném čase. Stejně tak může být použití existující databáze nejlepším řešením, které vám umožní splnit vaše výkonnostní cíle. Pokud vaše úloha nevyžaduje vyhledávání vektorů v reálném čase nebo téměř v reálném čase a přijímáte správu indexu vektorů, může být hledání AI přesvědčivou volbou.

Pokud zvolíte tradiční databázové řešení, konkrétní typ databázové služby, kterou se rozhodnete použít, závisí hlavně na sadě dovedností vašeho týmu a databázích, které aktuálně provozujete. Pokud už používáte konkrétní typ databáze, například MongoDB, může být pro váš scénář nejjednodušší použít stejný typ databáze. Jak je znázorněno v části Matice schopností, každá databázová služba má určité jedinečné možnosti a omezení pro vektorové vyhledávání. Zkontrolujte uvedené informace a ujistěte se, že preferovaný typ databáze podporuje požadované funkce.

Pokud jsou obavy o náklady hnacím faktorem, je údržba stávajícího návrhu pravděpodobně nejvhodnější pro váš scénář, protože zavedení nových služeb nebo jiných instancí databázové služby může přidat nové čisté náklady a složitost. Použití aktuálních databází pro vektorové vyhledávání pravděpodobně ovlivní vaše náklady méně než použití vyhrazené služby.

Pokud se rozhodnete místo vyhledávání AI použít tradiční databázi, některé pokročilé funkce vyhledávání nejsou ve výchozím nastavení dostupné. Pokud například chcete provést opakované řazení nebo hybridní vyhledávání, povolte tuto funkci prostřednictvím jazyka Transact-SQL (T-SQL) nebo jiného kódování.

Matice schopností

Tabulky v této části shrnují klíčové rozdíly v možnostech.

Základní funkce

Nativní podpora vektorových datových typů, indexů vektorů umělé neurální sítě (ANN), limitů dimenzí vektorů, více vektorových polí a více vektorových indexů se mezi službami někdy liší. Vaše požadavky na úlohy můžou vyžadovat některé z těchto konkrétních funkcí. Seznamte se se základními vektorovými funkcemi jednotlivých služeb Azure, jak je znázorněno v následující tabulce.

Schopnost Azure Cosmos DB for PostgreSQL Azure Cosmos DB pro MongoDB (virtuální jádra) Azure Database for PostgreSQL (Flex) Azure AI Vyhledávač Azure SQL Database
Integrované vektorové vyhledávání Ano 1 Ano 2 Ano 1 Ano 3 č. 4
Datový typ vektoru Ano Ano Ano Yes č. 5
Limity dimenzí 6 16 000 7 nebo 2 000 2 000 16 000 7 nebo 2 000 3 072 Bez omezení
Více vektorových polí Yes Ne Ano Yes
Více vektorových indexů Yes Ne Ano Yes
  1. pgvector podporuje vektorové vyhledávání, což je rozšíření Azure Database for PostgreSQL.
  2. Použití vektorové vyhledávání při vkládání ve službě Azure Cosmos DB pro MongoDB (virtuální jádro).
  3. Vektory ve službě Azure AI Search
  4. Vektorové vyhledávání není k dispozici jako prvotřídní funkce, ale dá se implementovat pomocí indexů columnstore a funkcí pro kosinusovou podobnost.
  5. Převést dimenzi (pole) na řádek tabulky Vektory se ukládají s indexem columnstore.
  6. Vkládání modelů z OpenAI, 1536 pro vkládání textu ada-002 a vkládání textu-3-small a 3072 pro vkládání textu-3-large. Pro multimodální modely vkládání ve službě Azure AI Vision 1024 pro obrázky i text.
  7. Vektory můžou mít až 16 000 dimenzí. Indexování pomocí invertovaného souboru s plochou kompresi (IVFFlat) a hierarchické navigace Small World (HNSW) však podporuje vektory s až 2 000 rozměry.

Metody hledání

Úlohy často potřebují kombinovat vektorové vyhledávání s fulltextovým vyhledáváním nebo dokonce hybridním vyhledáváním (fulltextové vyhledávání nebo sémantické vyhledávání plus vektorové vyhledávání). Kombinace hybridního vyhledávání a opětovného řazení dosahuje vysoké přesnosti pro úlohy. Hybridní vyhledávání a řazení můžete implementovat ručně pomocí vlastního kódu, nebo můžete zvážit, jak úložiště vektorů podporuje tento požadavek na úlohy.

Metoda vyhledávání Azure Cosmos DB for PostgreSQL Azure Cosmos DB pro MongoDB (virtuální jádra) Azure Database for PostgreSQL (Flex) Azure AI Vyhledávač Azure SQL Database
Fulltextové vyhledávání Ano 1 Ano 2 Ano 1 Ano 3 Ano 4
Hybridní vyhledávání Ano 5 No Ano 5 Ano 6 Ano 7
Předdefinované přehodnotování No No Ne Ano 8 No
  1. Fulltextové vyhledávání PostgreSQL
  2. Vyhledávání a dotazování pomocí textových indexů ve službě Azure Cosmos DB pro MongoDB (vCore).
  3. Začněte s fulltextovým vyhledáváním.
  4. Vektorová data na SQL Serveru
  5. Není k dispozici jako prvotřídní funkce, ale vzorové kódy jsou k dispozici.
  6. Hybridní vyhledávání (kombinace fulltextového vyhledávání, vektorového vyhledávání a sémantického řazení) je k dispozici jako prvotřídní funkce.
  7. Příklad hybridního vyhledávání pro databázi Azure SQL a SQL Server
  8. Pořadí označované jako sémantické řazení je prvotřídní funkce pro opětovné řazení výsledků fulltextového vyhledávání a vektorového vyhledávání.

Algoritmy indexování vektorových dat

Indexování vektorových dat je schopnost efektivně ukládat a načítat vektory. Tato funkce je důležitá, protože indexování ovlivňuje rychlost a přesnost vyhledávání podobností a dotazy nejbližšího souseda na zdroje dat.

Indexy jsou obvykle založené na vyčerpávajícím k-nejbližším sousedu (Ek-NN) nebo algoritmu ANN. Ek-NN provede vyčerpávající vyhledávání všech datových bodů o jeden po druhém a vrátí přesné K nejbližší sousedy. Ek-NN funguje v milisekundách s malým množstvím dat, ale může způsobit latenci velkých objemů dat.

HNSW a IVFFlat jsou indexy algoritmů ANN. Výběr vhodné strategie indexování zahrnuje pečlivé zvážení různých faktorů, jako je povaha datové sady, konkrétní požadavky dotazů a dostupné prostředky. IvFFlat je efektivní v prostředích, kde hardwarové prostředky jsou omezené nebo nejsou velké objemy dotazů. HNSW je excelovat v systémech, které vyžadují rychlé odpovědi na dotazy a mohou se přizpůsobit změnám v datové sadě.

Seznamte se s typy indexování vektorových dat z následující tabulky.

Přístup k indexování Azure Cosmos DB for PostgreSQL Azure Cosmos DB pro MongoDB (virtuální jádra) Azure Database for PostgreSQL (Flex) Azure AI Vyhledávač Azure SQL Database
Vyčerpávající k-nejbližší soused (Ek-NN) Ano Ano Ano Ano Yes
Hierarchický pohyblivý malý svět (HNSW) Ano Ano (Preview)1 Ano Ano No
IVFFlat Ano Ano Ano No Ne
Jiný důvod - Omezení vektorových polí 2
Omezení vektorových indexů 3
- - Žádný nativní vektorový index nepodporuje4
  1. Přehled vektorového vyhledávání ve službě Azure Cosmos DB pro MongoDB
  2. Pro každý kontejner je k dispozici pouze jedno vektorové pole.
  3. Pro každý kontejner je k dispozici pouze jeden vektorový index.
  4. Azure SQL Database nemá datový typ vektoru. Vektory ale můžete uložit do sloupce. Každý řádek obsahuje každý prvek vektorů. Pak můžete použít index columnstore k efektivnímu ukládání a vyhledávání vektorů.

Podobnost a možnosti výpočtu vzdálenosti

Existují metody výpočtu kosinusu, dot a euclidovské metody výpočtu vzdálenosti pro vektorové vyhledávání. Tyto metody slouží k výpočtu podobnosti mezi dvěma vektory nebo vzdáleností mezi dvěma vektory.

Předběžná analýza dat přináší výhody z metrik i euklidových vzdáleností, které umožňují extrakci různých přehledů o datové struktuře, zatímco klasifikace textu obecně funguje lépe v rámci euklidských vzdáleností. Načtení nejvíce podobných textů k danému textu obvykle funguje lépe s kosinusovou podobností.

Vkládání služby Azure OpenAI závisí na kosinusové podobnosti výpočetní podobnosti mezi dokumenty a dotazem.

Předdefinovaný výpočet porovnání vektorů Azure Cosmos DB for PostgreSQL Azure Cosmos DB pro MongoDB (virtuální jádra) Azure Database for PostgreSQL (Flex) Azure AI Vyhledávač Azure SQL Database
Kosinusová podobnost Ano Ano Ano Yes Ano 1
Euclidean vzdálenost (L2 vzdálenost) Ano Ano Ano Yes Ano 1
Tečkovaný produkt Ano Ano Ano Yes Ano 1
  1. Příklady výpočtů vzdálenosti pro databázi Azure SQL a SQL Server

Integrace s Azure OpenAI a dalšími komponentami

Při implementaci vektorové vyhledávání můžete také zvážit propojení s dalšími komponentami Microsoftu. Například služba Azure OpenAI pomáhá vytvářet vektory pro vaše data a vstupní dotazy pro vyhledávání podobnosti vektorů.

Schopnost Azure Cosmos DB for PostgreSQL Azure Cosmos DB pro MongoDB (virtuální jádra) Azure Database for PostgreSQL (Flex) Azure AI Vyhledávač Azure SQL Database
Azure OpenAI Service – Přidání vlastních dat No Ano 1 No Ano 2 No
Vektorové vkládání pomocí Azure OpenAI No Ne Ano 3 Ano 4 Ano 5
Integrace s tokem výzvy No No Ne Ano 6 No
Integrace s sémantickým jádrem Ano 7 Ano 8 Ano 7 Ano 9 Ano 10
  1. Azure Cosmos DB pro MongoDB (virtuální jádro) se ve vašich datech podporuje jako zdroj dat pro Azure OpenAI.
  2. Azure AI Search se ve vašich datech podporuje jako zdroj dat pro Azure OpenAI.
  3. K dispozici je rozšíření Azure AI (Preview).
  4. Azure AI Search poskytuje dovednost vektorizovat blokovaný text.
  5. Můžete vytvořit uloženou proceduru pro nasazení modelu vložení.
  6. Podporuje se jako vektorová databáze v nástroji Vector DB Lookup .
  7. Podporuje se jako konektor paměti a konektor vektorové databáze (C#).
  8. Podporuje se jako konektor vektorové databáze (Python).
  9. Podporuje se jako konektor paměti a konektor vektorové databáze (C#, Python).
  10. Podporuje se jako paměťový konektor.

Přispěvatelé

Tento článek spravuje Microsoft. Původně byla napsána následujícími přispěvateli.

Hlavní autoři:

Další přispěvatelé:

Pokud chcete zobrazit neveřejné profily LinkedIn, přihlaste se na LinkedIn.

Další krok

Implementace dolování znalostí pomocí služby Azure AI Search V tomto studijním programu se dozvíte, jak používat Azure AI Search.