Sdílet prostřednictvím


Co jsou vektorové vkládání a vektorové vyhledávání ve službě Azure Managed Redis (Preview)

Hledání vektorové podobnosti (VSS) se stala oblíbenou technologií inteligentních aplikací využívajících AI. Azure Managed Redis (Preview) se dá použít jako vektorová databáze tím, že zkombinuje modely, jako je Azure OpenAI pro scénáře načítání a rozšířeného generování AI a analýzy. Tento článek představuje základní úvod do konceptu vektorových vkládání, vyhledávání vektorů podobnosti a způsobu použití Redis jako vektorové databáze s inteligentními aplikacemi.

Kurzy a ukázkové aplikace týkající se použití Azure Managed Redis a Azure OpenAI k provádění vyhledávání vektorové podobnosti najdete v následujících tématech:

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.

Tato tabulka obsahuje informace o dostupnosti vektorového vyhledávání v různých úrovních.

Úroveň Basic / Standard Premium Enterprise Enterprise Flash
dostupný No No Ano Ano (Preview)

Co jsou vektorové vkládání?

Koncepce

Vektorové vkládání jsou 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 s vysokým rozměrem. 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 každým blokem vstupních dat, podobnými slovy, dokumenty nebo obrázky mají vektory, které 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 hrubou silou
  • 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) - efektivnější obchodování přesností pro větší rychlost a nižší režii zpracování.

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ázka&a. 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ší sémantické porozumění textu, který poskytuje LLM, a poskytuje bohatší prostředí pro hledání dokumentů, kde tradiční hledání založené na klíčových slovech spadá do krátkého textu. 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.
  • Paměť konverzace LLM. 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 paměti konverzace LLM

Proč zvolit Azure Managed Redis pro ukládání a vyhledávání vektorů?

Azure Managed 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í podobnosti 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 Azure Managed Redis. Tady jsou některé z nich:

  • Metriky více vzdáleností, včetně Euclidean, Cosinea Internal Product.
  • Podpora metod indexování KNN (using FLAT) i ANN (using HNSW).
  • 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ří:

Nejlepší způsob, jak začít s vkládáním a vektorovým vyhledáváním, je vyzkoušet si to sami!