Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Hledání vektorové podobnosti (VSS) se stala oblíbenou technologií inteligentních aplikací využívajících AI. Azure Cache for Redis se dá použít jako vektorová databáze v kombinaci s modely, jako je Azure OpenAI pro načítání a rozšířené generování AI a další analytické scénáře. Tento článek představuje základní úvod do konceptu vektorových zobrazení, vyhledávání podobnosti vektorů a toho, jak lze Redis použít jako vektorovou databázi podporující inteligentní aplikace.
Kurzy a ukázkové aplikace týkající se použití úrovně Enterprise nebo Azure Managed Redis s Azure OpenAI najdete v následujících tématech:
- Návod: Provádění vektorové podobnosti s vkládáními OpenAI s využitím Azure Managed Redis a pomocí LangChain
- Ukázka: Použití Redis jako sémantických mezipamětí v galerii obrázků Dall-E s Redis OM pro .NET
Rozsah dostupnosti
Možnosti vektorového vyhledávání v Redis vyžadují Redis Stack, konkrétně modul RediSearch . Tato funkce je dostupná jenom na úrovních Enterprise služby Azure Cache for Redis a Azure Managed Redis.
Tato tabulka obsahuje informace o dostupnosti vektorového vyhledávání v různých úrovních.
Úroveň | Základní / Standardní | Prémium | Podnik | Enterprise Flash | Azure Managed Redis |
---|---|---|---|---|---|
K dispozici | Ne | Ne | Ano | Ano (náhled) | Ano |
Co jsou vektorové vkládání?
Vkládání vektorů je základním konceptem strojového učení a zpracování přirozeného jazyka, které umožňují znázornění dat, jako jsou slova, dokumenty nebo obrázky, jako číselné vektory v prostoru vektorů s vysokou dimenzí. Primární myšlenkou vkládání vektorů je zachycení základních relací a sémantiky dat jejich mapováním na body v tomto vektorovém prostoru. To znamená, že převod textu nebo obrázků na sekvenci čísel, která představují data, a následné porovnání různých číselných sekvencí. Díky tomu je možné s komplexními daty pracovat a analyzovat matematicky, což usnadňuje provádění úloh, jako je porovnání podobnosti, doporučení a klasifikace.
Každý model strojového učení klasifikuje data a vytváří vektor jiným způsobem. Navíc není obvykle možné přesně určit, jaký sémantický význam představuje každá dimenze vektoru. Vzhledem k tomu, že model je konzistentní mezi jednotlivými bloky vstupních dat, slova, dokumenty nebo obrázky, které jsou si podobné, mají vektory, jež jsou také podobné. Například slova basketball
a baseball
mají vložené vektory mnohem blíže k sobě než slovo jako rainforest
.
Porovnání vektorů
Vektory lze porovnat pomocí různých metrik. Nejoblíbenější způsob porovnání vektorů je použití kosinus podobnosti, která měří kosinus úhlu mezi dvěma vektory v multidimenzionálním prostoru. Čím blíž jsou vektory, tím menší úhel. Mezi další běžné metriky vzdálenosti patří euklidová vzdálenost a vnitřní produkt.
Generování vložených objektů
Mnoho modelů strojového učení podporuje rozhraní API pro vkládání. Příklad vytvoření vektorových vkládání pomocí služby Azure OpenAI najdete v tématu Informace o vygenerování vkládání pomocí Azure OpenAI.
Co je vektorová databáze?
Vektorová databáze je databáze, která může ukládat, spravovat, načítat a porovnávat vektory. Vektorové databáze musí být schopné efektivně ukládat vysoce dimenzionální vektor a načítat je s minimální latencí a vysokou propustností. Nerelationální úložiště dat se nejčastěji používají jako vektorové databáze, i když je možné používat relační databáze, jako je PostgreSQL, například s rozšířením pgvectoru .
Metoda indexu a vyhledávání
Vektorové databáze potřebují indexovat data pro rychlé vyhledávání a načítání. Vektorová databáze by navíc měla podporovat integrované vyhledávací dotazy pro zjednodušené programovací prostředí.
Existuje několik metod indexování, například:
- FLAT – index hrubé síly
- HNSW – Efektivní a robustní přibližné hledání nejbližších sousedů pomocí hierarchických grafů Small World s možností navigace
Existuje několik běžných metod vyhledávání, mezi které patří:
- K-Nearest Neighbors (KNN) – vyčerpávající metoda, která poskytuje nejvyšší přesnost, ale s vyššími výpočetními náklady.
- Přibližné nejbližší sousedy (ANN) - metoda, která zvyšuje efektivitu tím, že upřednostňuje rychlost a snižuje režii zpracování na úkor přesnosti.
Možnosti vyhledávání
A konečně vektorové databáze provádějí vektorové vyhledávání pomocí zvolené metody porovnání vektorů k vrácení nejvíce podobných vektorů. Některé vektorové databáze můžou také provádět hybridní vyhledávání tím, že před provedením vektorového vyhledávání nejprve zužují výsledky na základě charakteristik nebo metadat uložených v databázi. Toto je způsob, jak zajistit efektivnější a přizpůsobitelné vektorové vyhledávání. Hledání vektorů může být například omezeno pouze na vektory s konkrétní značkou v databázi nebo vektory s daty geografické polohy v určité oblasti.
Scénáře klíčových vektorových hledání
Hledání vektorové podobnosti lze použít ve více aplikacích. Mezi běžné případy použití patří:
- Sémantické otázky a odpovědi. Vytvořte chatovacího robota, který může odpovídat na otázky týkající se vašich vlastních dat. Například chatovací robot, který může reagovat na otázky zaměstnanců ohledně pokrytí zdravotní péče. Stovky stránek s hustou dokumentací o pokrytí zdravotní péče je možné rozdělit na bloky dat, převést na vektory vkládání a prohledávat na základě podobnosti vektorů. Výsledné dokumenty se pak dají shrnout pro zaměstnance pomocí jiného velkého jazykového modelu (LLM). Příklad sémantické otázky
- Načtení dokumentu. Využijte hlubšího sémantického porozumění textu, které poskytují LLM, k vytvoření bohatšího zážitku z vyhledávání dokumentů tam, kde tradiční vyhledávání založené na klíčových slovech nedosahuje požadovaných výsledků. Příklad načtení dokumentu
- Doporučení k produktu. Najděte podobné produkty nebo služby, které můžete doporučit na základě minulých uživatelských aktivit, jako je historie vyhledávání nebo předchozí nákupy. Příklad doporučení produktu
- Vizuální vyhledávání. Vyhledejte produkty, které vypadají podobně jako obrázky pořízené uživatelem nebo obrázkem jiného produktu. Příklad vizuálního vyhledávání
- Sémantické ukládání do mezipaměti. Snížení nákladů a latence LLM ukládáním do mezipaměti dokončení LLM Dotazy LLM se porovnávají pomocí vektorové podobnosti. Pokud je nový dotaz podobný dříve uloženému dotazu v mezipaměti, vrátí se dotaz uložený v mezipaměti. Příklad sémantické ukládání do mezipaměti pomocí jazyka LangChain
- LLM Paměť konverzace. Zachování historie konverzací pomocí LLM jako vkládání do vektorové databáze Aplikace může použít vektorové vyhledávání k načtení relevantní historie nebo "pamětí" do odpovědi z LLM. Příklad konverzační paměti LLM
Proč zvolit Azure Cache for Redis pro ukládání a vyhledávání vektorů?
Azure Cache for Redis se dá efektivně použít jako vektorová databáze k ukládání vektorů vkládání a k provádění hledání podobností vektorů. Podpora vektorového úložiště a vyhledávání byla k dispozici v mnoha klíčových architekturách strojového učení, jako jsou:
Tyto architektury obsahují bohaté integrace s Redisem. Například integrace Redis LangChain automaticky vygeneruje schéma indexu pro metadata předaná při použití Redis jako vektorového úložiště. To usnadňuje filtrování výsledků na základě metadat.
Redis nabízí širokou škálu možností vyhledávání prostřednictvím modulu RediSearch, který je k dispozici na podnikové úrovni Služby Azure Cache for Redis. Patří mezi ně:
- Různé metriky vzdálenosti, včetně
Euclidean
,Cosine
aInternal Product
. - Podpora metod indexování KNN (using
FLAT
) i ANN (usingHNSW
). - Vektorové úložiště v datových strukturách hash nebo JSON
- Nejčastější dotazy K
- Dotazy na vektorový rozsah (to znamená najít všechny položky v konkrétní vektorové vzdálenosti)
- Hybridní vyhledávání s výkonnými funkcemi dotazů, jako jsou:
- Geoprostorové filtrování
- Číselné a textové filtry
- Porovnávání předpon a přibližných shod
- Fonetické porovnávání
- Logické dotazy
Redis je navíc často úspornou volbou, protože se už tak často používá pro ukládání do mezipaměti nebo aplikace úložiště relací. V těchto scénářích může získat dvojité povinnosti tím, že obsluhuje typickou roli ukládání do mezipaměti a současně zpracovává aplikace vektorového vyhledávání.
Jaké jsou moje další možnosti ukládání a hledání vektorů?
V Azure existuje několik dalších řešení pro vektorové úložiště a vyhledávání. Mezi další řešení patří:
- Azure AI Search
- Azure Cosmos DB s využitím rozhraní MongoDB vCore API
-
Azure Database for PostgreSQL - Flexibilní server s využitím
pgvector
Související obsah
Nejlepší způsob, jak začít s vkládáním a vektorovým vyhledáváním, je vyzkoušet si to sami!