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:
- Zadejte vkládání indexu nebo vygenerujte vkládání v kanálu indexeru.
- Vytvoření vektorového indexu
- Spouštění vektorových dotazů
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í) Kódujte obrázky a text pomocí multimodálních vkládání (například pomocí OpenAI CLIP 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.
Jak funguje vektorové vyhledávání ve službě Azure AI Search
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í.
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 tom, jestli chcete provádět práci v rámci kanálu indexování služby Azure AI Search nebo externě. Azure AI Search nabízí integrované vytváření bloků 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. Tento přístup vyžaduje indexer, podporovaný zdroj dat a sadu dovedností, která řídí bloky dat a vkládání. V opačném případě můžete zpracovat veškerou vektorizaci samostatně a potom nasdílejte prevectorizovaný obsah do vektorových polí v úložišti vektorů.
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 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:
- Azure Portal: Průvodce importem a vektorizací dat
- Azure REST API
- Sady Azure SDK pro .NET, Python a JavaScript
- Další nabídky Azure, jako je Azure AI Studio.
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.
Integrace Azure a související služby
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 AI 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 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.
O vektorovém vyhledávání
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.
Proč používat vektorové vyhledávání
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á.
Hledání nejbližších sousedů
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ů.
Pokud chcete tyto algoritmy použít, přečtěte si téma Vytvoření vektorového pole s pokyny k určení algoritmu, vektorových profilů a přiřazení profilu.
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": true
pož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.