Vektory ve službě Azure AI Search

Vektorové vyhledávání je přístup při načítání informací, který podporuje indexování a provádění dotazů v číselné reprezentaci obsahu. Vzhledem k tomu, že obsah je číselný místo prostého textu, je porovnávání založeno na vektorech, které jsou nejvíce podobné vektoru dotazu, což umožňuje porovnávání napříč:

  • sémantická nebo koncepční podobnost (pes a canine, koncepčně podobné, ale lingvisticky odlišné)
  • vícejazyčný obsah ("pes" v angličtině a "hund" v němčině)
  • více typů obsahu ("pes" ve formátu prostého textu a fotografie psa v souboru obrázku)

Tento článek obsahuje základní úvod do vektorů ve službě Azure AI Search. Vysvětluje také integraci s dalšími službami Azure a popisuje terminologii a koncepty související s vývojem vektorových vyhledávání.

Tento článek doporučujeme pro pozadí, ale pokud chcete raději začít, postupujte takto:

Můžete také začít s rychlým startem vektoru nebo ukázkami kódu na GitHubu.

Jaké scénáře mohou vektorové vyhledávání podporovat?

Scénáře pro vektorové vyhledávání zahrnují:

  • Hledání podobnosti Kódování textu pomocí vložených modelů, jako jsou vkládání OpenAI nebo opensourcové modely, jako je SBERT, a načítání dokumentů s dotazy, které jsou také kódovány jako vektory.

  • Vyhledávání napříč různými typy obsahu (multimodální) Zakódujte obrázky a text pomocí multimodálních vložených objektů (například pomocí OpenAI C sada LIP nebo GPT-4 Turbo s obrazem v Azure OpenAI) a dotazujte se na vložený prostor složený z obou typů obsahu.

  • Hybridní vyhledávání. Ve službě Azure AI Search hybridní vyhledávání odkazuje na provádění vektoru a dotazu klíčových slov ve stejném požadavku. Podpora vektorů je implementována na úrovni pole s indexem obsahujícím vektorová pole i prohledávatelná textová pole. Dotazy se provádějí paralelně a výsledky se sloučí do jedné odpovědi. Volitelně můžete přidat sémantické řazení pro větší přesnost pomocí opakovaného řazení L2 pomocí stejných jazykových modelů, které využívají Bing.

  • Vícejazyčné vyhledávání. Poskytnutí vyhledávacího prostředí ve vlastním jazyce uživatelů je možné prostřednictvím vložených modelů a chatovacích modelů trénovaných ve více jazycích. Pokud potřebujete větší kontrolu nad překladem, můžete v hybridních scénářích vyhledávání doplnit funkcemi s více jazyky, které Azure AI Search podporuje pro obsah bezvectoru.

  • Filtrované vektorové vyhledávání. Požadavek dotazu může obsahovat vektorový dotaz a výraz filtru. Filtry se vztahují na textová a číselná pole a jsou užitečné pro filtry metadat a zahrnutí nebo vyloučení výsledků hledání na základě kritérií filtru. I když není vektorové pole filtrovatelné, můžete nastavit filtrovatelné textové nebo číselné pole. Vyhledávací web může filtr zpracovat před nebo po provedení vektorového dotazu.

  • Vektorová databáze. Azure AI Search ukládá data, na která se dotazujete. Používejte ho jako čisté úložiště vektorů, kdykoli potřebujete dlouhodobou paměť nebo znalostní báze, nebo podkladová data pro architekturu načtení rozšířené generace (RAG) nebo jakoukoli aplikaci, která používá vektory.

Podpora vektorů zahrnuje indexování, ukládání a dotazování vektorových vkládání z indexu vyhledávání.

Následující diagram znázorňuje indexování a dotazování pracovních postupů pro vektorové vyhledávání.

Architektura pracovního postupu vektorového vyhledávání

Na straně indexování používá Azure AI Search vektorové vkládání a používá algoritmus nejbližších sousedů k umístění podobných vektorů blízko sebe v indexu. Interně vytváří vektorové indexy pro každé vektorové pole.

Způsob vkládání ze zdrojového obsahu do služby Azure AI Search závisí na vašem přístupu a na tom, jestli můžete používat funkce ve verzi Preview. Vložení můžete vektorizovat nebo generovat jako předběžný krok pomocí modelů z OpenAI, Azure OpenAI a libovolného počtu poskytovatelů, a to v široké škále zdrojového obsahu, včetně textu, obrázků a dalších typů obsahu podporovaných modely. Prevectorizovaný obsah pak můžete nasdílit do vektorových polí v úložišti vektorů. To je obecně dostupný přístup. Pokud můžete použít funkce Preview, Azure AI Search nabízí integrované bloky dat a vektorizaci v kanálu indexeru. Stále poskytujete prostředky (koncové body a informace o připojení k Azure OpenAI), ale Azure AI Search provádí všechna volání a zpracovává přechody.

Na straně dotazu v klientské aplikaci shromáždíte vstup dotazu od uživatele, obvykle prostřednictvím příkazového pracovního postupu. Potom můžete přidat krok kódování, který převede vstup na vektor, a potom odeslat vektorový dotaz do indexu ve službě Azure AI Search pro vyhledávání podobnosti. Stejně jako u indexování můžete nasadit integrovanou vektorizaci (Preview) a převést otázku na vektor. Pro oba přístupy azure AI Search vrátí dokumenty s požadovanými k nejbližšími sousedy (kNN) ve výsledcích.

Azure AI Search podporuje hybridní scénáře , které paralelně spouští vektorové vyhledávání a vyhledávání klíčových slov a vrací jednotnou sadu výsledků, která často poskytuje lepší výsledky než jen vektorové vyhledávání nebo vyhledávání klíčových slov. U hybridního obsahu, vektoru a nevectoru se ingestuje do stejného indexu pro dotazy, které běží vedle sebe.

Dostupnost a ceny

Vektorové vyhledávání je k dispozici jako součást všech úrovní Azure AI Search ve všech oblastech bez dalších poplatků.

Novější služby vytvořené po 3. dubnu 2024 podporují vyšší kvóty pro indexy vektorů.

Vektorové vyhledávání je k dispozici v:

Poznámka:

Některé starší vyhledávací služby vytvořené před 1. lednem 2019 jsou nasazené v infrastruktuře, která nepodporuje vektorové úlohy. Pokud se pokusíte přidat vektorové pole do schématu a zobrazí se chyba, jedná se o výsledek zastaralých služeb. V této situaci musíte vytvořit novou vyhledávací službu, která bude vyzkoušet funkci vektoru.

Služba Azure AI Search je hluboce integrovaná napříč platformou Azure AI. Následující tabulka uvádí několik užitečných funkcí vektorových úloh.

Produkt Integrace
Azure OpenAI Studio V chatu s datovým hřištěm můžete přidat vlastní data pomocí služby Azure AI Search k uzemnění dat a konverzačního vyhledávání. Jedná se o nejjednodušší a nejrychlejší přístup pro chatování s vašimi daty.
Azure OpenAI Azure OpenAI poskytuje modely vkládání a modely chatu. Ukázky a ukázky cílí na text-embedding-ada-002. Pro generování vkládání textu doporučujeme Azure OpenAI.
Azure AI Služby Rozhraní API pro načítání obrázků vectorize (Preview) podporuje vektorizaci obsahu obrázku. Toto rozhraní API doporučujeme pro generování vložených obrázků.
Datové platformy Azure: Azure Blob Storage, Azure Cosmos DB Indexery můžete použít k automatizaci příjmu dat a následné použití integrované vektorizace (Preview) ke generování vložených objektů. Azure AI Search může automaticky indexovat vektorová data ze dvou zdrojů dat: indexery objektů blob Azure a indexery Azure Cosmos DB for NoSQL. Další informace naleznete v tématu Přidání vektorových polí do indexu vyhledávání..

Běžně se používá také v opensourcových architekturách, jako je LangChain.

Koncepty vektorové vyhledávání

Pokud s vektory začínáte, vysvětluje tato část některé základní koncepty.

Vektorové vyhledávání je metoda načítání informací, kdy jsou dokumenty a dotazy reprezentovány jako vektory místo prostého textu. Modely strojového učení při vektorovém vyhledávání generují vektorové reprezentace zdrojových vstupů, což může být text, obrázky nebo jiný obsah. Použití matematické reprezentace obsahu představuje společný základ pro scénáře hledání. Pokud je vše vektorem, může dotaz najít shodu ve vektorovém prostoru, i když je přidružený původní obsah v jiném médiu nebo jazyce než dotaz.

Pokud je prohledávatelný obsah reprezentován jako vektory, může dotaz najít blízké shody v podobném obsahu. Model vkládání použitý pro generování vektorů ví, která slova a koncepty jsou podobná, a umístí výsledné vektory blízko sebe do prostoru pro vložení. Například vektorizované zdrojové dokumenty o "mrakech" a "mlze" se pravděpodobně zobrazí v dotazu o "mlze", protože jsou sémanticky podobné, i když nejsou lexikální shoda.

Vkládání a vektorizace

Vkládání jsou konkrétním typem vektorové reprezentace obsahu nebo dotazu vytvořeného modely strojového učení, které zachycují sémantický význam textu nebo reprezentace jiného obsahu, jako jsou obrázky. Modely strojového učení přirozeného jazyka se trénují na velkých objemech dat, aby bylo možné identifikovat vzory a vztahy mezi slovy. Během trénování se učí reprezentovat jakýkoli vstup jako vektor skutečných čísel v zprostředkujícím kroku nazývaném kodér. Po dokončení trénování je možné tyto jazykové modely upravit, aby se zprostředkující vektorová reprezentace stala výstupem modelu. Výsledné vkládání jsou vysoce dimenzionální vektory, kde jsou slova s podobnými významy blíže ve vektorovém prostoru, jak je vysvětleno v tématu Vysvětlení vkládání (Azure OpenAI).

Účinnost vektorového vyhledávání při načítání relevantních informací závisí na účinnosti vloženého modelu při destilování významu dokumentů a dotazů do výsledného vektoru. Nejlepší modely jsou dobře vytrénované na typech dat, která představují. Můžete vyhodnotit existující modely, jako je Azure OpenAI pro vložení textu ada-002, použít vlastní model, který je natrénovaný přímo na problémovém prostoru, nebo doladit model pro obecné účely. Azure AI Search neukládá omezení modelu, který zvolíte, takže vyberte ten nejlepší pro vaše data.

Aby bylo možné vytvářet efektivní vkládání pro vektorové vyhledávání, je důležité vzít v úvahu omezení velikosti vstupu. Před generováním vkládání doporučujeme postupovat podle pokynů pro vytváření bloků dat . Tento osvědčený postup zajistí, že vkládání přesně zachytí relevantní informace a umožní efektivnější vektorové vyhledávání.

Jaký je prostor pro vložení?

Vložený prostor je korpus pro vektorové dotazy. V indexu vyhledávání je vložený prostor všech vektorových polí naplněných vkládáním ze stejného modelu vkládání. Modely strojového učení vytvářejí vložený prostor mapováním jednotlivých slov, frází nebo dokumentů (pro zpracování přirozeného jazyka), obrázků nebo jiných forem dat do reprezentace, která se skládá z vektoru skutečných čísel představujících souřadnici ve vysokodimenzionálním prostoru. V tomto prostoru pro vložení jsou podobné položky umístěny blízko sebe a odlišné položky jsou umístěny dále od sebe.

Například dokumenty, které mluví o různých druzích psů, by byly seskupené blízko sebe v prostoru pro vložení. Dokumentyoch Odlišné koncepty, jako je cloud computing, by byly daleko daleko. V praxi jsou tyto vložené prostory abstraktní a nemají dobře definované, lidské interpretovatelné významy, ale základní myšlenka zůstává stejná.

Při vektorovém vyhledávání prohledá vyhledávací modul vektory v prostoru pro vložení a identifikuje vektory, které jsou nejblíže vektoru dotazu. Tato technika se nazývá hledání nejbližšího souseda. Nejbližší sousedé pomáhají kvantifikovat podobnost mezi položkami. Vysoký stupeň podobnosti vektorů označuje, že původní data byla také podobná. Aby se usnadnilo rychlé hledání nejbližšího souseda, vyhledávací modul provádí optimalizace nebo využívá datové struktury a dělení dat, aby se snížil prostor hledání. Každý algoritmus vektorového vyhledávání řeší problémy nejbližšího souseda různými způsoby, protože optimalizují minimální latenci, maximální propustnost, úplnost a paměť. Pro výpočet podobnosti poskytují metriky podobnosti mechanismus výpočetní vzdálenosti.

Azure AI Search v současné době podporuje následující algoritmy:

  • Hierarchický navigační program Small World (HNSW): HNSW je přední algoritmus ANN optimalizovaný pro aplikace s vysokou úplností, nízkou latencí, kde je distribuce dat neznámá nebo se může často měnit. Uspořádá vysoce dimenzionální datové body do hierarchické struktury grafu, která umožňuje rychlé a škálovatelné vyhledávání podobnosti a zároveň umožňuje vyladění kompromisu mezi přesností vyhledávání a výpočetními náklady. Vzhledem k tomu, že algoritmus vyžaduje, aby všechny datové body byly uloženy v paměti pro rychlý náhodný přístup, tento algoritmus využívá kvótu velikosti vektorového indexu.

  • Vyčerpávající K-nejbližší sousedy (KNN): Vypočítá vzdálenosti mezi vektorem dotazu a všemi datovými body. Je výpočetně náročný, takže funguje nejlépe pro menší datové sady. Protože algoritmus nevyžaduje rychlý náhodný přístup k datovým bodům, tento algoritmus nevyužívají kvótu velikosti vektorového indexu. Tento algoritmus ale poskytuje globální sadu nejbližších sousedů.

V rámci definice indexu můžete zadat jeden nebo více algoritmů a pak pro každé vektorové pole určete, který algoritmus se má použít:

Parametry algoritmu, které se používají k inicializaci indexu při vytváření indexu, jsou neměnné a po sestavení indexu je nelze změnit. Parametry, které ovlivňují charakteristiky doby dotazu (efSearch) je však možné upravit.

Kromě toho pole, která určují algoritmus HNSW, podporují také vyčerpávající vyhledávání KNN pomocí parametru "exhaustive": truepožadavku dotazu . Opak ale není pravdivý. Pokud je pole indexované exhaustiveKnn, nemůžete v dotazu použít HNSW, protože neexistují další datové struktury, které umožňují efektivní vyhledávání.

Přibližné nejbližší sousedy

Přibližné hledání nejbližšího souseda (ANN) je třída algoritmů pro hledání shod ve vektorovém prostoru. Tato třídaalgoritmch

Algoritmy ANN obětují určitou přesnost, ale nabízejí škálovatelné a rychlejší načítání přibližných sousedů, což je ideální pro vyrovnávání přesnosti oproti efektivitě v moderních aplikacích pro načítání informací. Parametry algoritmu můžete upravit tak, aby vyladily požadavky na úplnost, latenci, paměť a nároky na disk vaší vyhledávací aplikace.

Azure AI Search používá pro svůj algoritmus ANN HNSW.

Další kroky