Vektorová databáze

PLATÍ PRO: NoSQL Virtuální jádro MongoDB Postgresql

Vektorové databáze se používají v mnoha oblastech a situacích napříč analytickou a generující AI, včetně zpracování přirozeného jazyka, rozpoznávání videa a obrázků, systému doporučení a vyhledávání mimo jiné.

V roce 2023 byl zásadním trendem v softwaru integrace vylepšení umělé inteligence, často dosaženo začleněním specializovaných samostatných vektorových databází do stávajících technologických zásobníků. Tento článek vysvětluje, co jsou vektorové databáze a představují alternativní architekturu, kterou byste mohli zvážit: použití integrované vektorové databáze v NoSQL nebo relační databázi, kterou už používáte, zejména při práci s multimodálními daty. Tento přístup umožňuje nejen snížit náklady, ale také dosáhnout větší konzistence dat, škálovatelnosti a výkonu.

Tip

Konzistence dat, škálovatelnost a výkon jsou důležité pro aplikace náročné na data, a proto se OpenAI rozhodla vytvořit službu ChatGPT nad službou Azure Cosmos DB. Můžete také využít své integrované vektorové databáze a také dobu odezvy v řádu milisekund, automatickou a okamžitou škálovatelnost a garantovanou rychlost v libovolném měřítku. Podívejte se na ukázky implementace a vyzkoušejte si to zdarma.

Co je vektorová databáze?

Vektorová databáze je databáze navržená k ukládání a správě vkládání vektorů, což jsou matematické reprezentace dat ve vysoce dimenzionálním prostoru. V tomto prostoru každá dimenze odpovídá funkci dat a desítky tisíc dimenzí se můžou použít k reprezentaci sofistikovaných dat. Pozice vektoru v tomto prostoru představuje jeho vlastnosti. Slova, fráze nebo celé dokumenty a obrázky, zvuk a další typy dat můžou být vektorizovány. Tyto vektorové vkládání se používají při vyhledávání podobnosti, multimodálním vyhledávání, modulech doporučení, velkých jazycích (LLM) atd.

V vektorové databázi se vkládání indexují a dotazují prostřednictvím algoritmů vektorového vyhledávání na základě jejich vektorové vzdálenosti nebo podobnosti. Robustní mechanismus je nezbytný k identifikaci nejrelevavantnějších dat. Mezi dobře známé algoritmy vektorového vyhledávání patří Hierarchical Navigable Small World (HNSW), Inverted File (IVF), DiskANN atd.

Integrovaná vektorová databáze vs. databáze čistých vektorů

Existují dva běžné typy implementací vektorové databáze – čistě vektorová databáze a integrovaná vektorová databáze v NoSQL nebo relační databázi.

Čistá vektorová databáze je navržená tak, aby efektivně ukládaly a spravovaly vkládání vektorů spolu s malým množstvím metadat; je oddělená od zdroje dat, ze kterého jsou vložené objekty odvozeny.

Vektorová databáze integrovaná do vysoce výkonné noSQL nebo relační databáze poskytuje další možnosti. Integrovaná vektorová databáze v NoSQL nebo relační databázi může ukládat, indexovat a dotazovat vkládání společně s odpovídajícími původními daty. Tento přístup eliminuje dodatečné náklady na replikaci dat v samostatné čistě vektorové databázi. Navíc udržování vektorových vkládání a původních dat společně usnadňuje operace s více modálními daty a umožňuje větší konzistenci dat, škálování a výkon.

Případy použití vektorové databáze

Vektorové databáze se používají v mnoha doménách a situacích napříč analytickou a generující AI, včetně zpracování přirozeného jazyka, rozpoznávání videa a obrázků, systému doporučení, vyhledávání atd. Vektorovou databázi můžete použít například k:

  • identifikace podobných obrázků, dokumentů a skladeb na základě jejich obsahu, motivů, mínění a stylů
  • identifikace podobných produktů na základě jejich charakteristik, funkcí a skupin uživatelů
  • doporučení obsahu, produktů nebo služeb na základě preferencí jednotlivců
  • doporučení obsahu, produktů nebo služeb na základě podobností skupin uživatelů
  • identifikace nejvhodnějších potenciálních možností z velkého fondu voleb pro splnění složitých požadavků
  • identifikace datových anomálií nebo podvodných aktivit, které se liší od převládajících nebo normálních vzorů
  • implementace trvalé paměti pro agenty AI

Tip

Kromě těchto typických případů použití vektorových databází je naše integrovaná vektorová databáze také ideálním řešením pro ukládání do mezipaměti na úrovni produkce díky nízké latenci, vysoké škálovatelnosti a vysoké dostupnosti.

Zvláště oblíbené je použití vektorových databází k povolení načítání rozšířené generace (RAG), která využívá LLM a vlastní data nebo informace specifické pro doménu. Tento přístup umožňuje:

  • Generování kontextově relevantních a přesných odpovědí na výzvy uživatelů z modelů AI
  • Překonat limity tokenů LLM
  • Snížení nákladů při častém vyladění aktualizovaných dat

Tento proces zahrnuje extrakci relevantních informací z vlastního zdroje dat a její integraci do požadavku modelu prostřednictvím výzvy. Před odesláním požadavku do LLM se uživatelský vstup, dotaz nebo požadavek také transformuje na vkládání a techniky vektorového vyhledávání se používají k vyhledání nejpodobnějších vkládání v databázi. Tato technika umožňuje identifikaci nejrelevavantnějších datových záznamů v databázi. Tyto načtené záznamy se pak zadají jako vstup do požadavku LLM pomocí přípravy výzvy.

Vkládání

Vkládání je speciální formát reprezentace dat, který můžou snadno používat modely a algoritmy strojového učení. Vkládání je informace hustá reprezentace sémantického významu části textu. Každé vložení je vektor čísel s plovoucí desetinou čárkou, aby vzdálenost mezi dvěma vkládáními ve vektorovém prostoru odpovídala sémantické podobnosti mezi dvěma vstupy v původním formátu. Pokud jsou například dva texty podobné, měly by být jejich vektorové reprezentace také podobné. Rozšíření vektorové databáze, které umožňuje ukládat vložené položky s původními daty, zajišťuje konzistenci dat, škálování a výkon. Jdi zpátky.

Vektorové vyhledávání je metoda, která vám pomůže najít podobné položky na základě jejich charakteristik dat, nikoli přesných shod v poli vlastnosti. Tato technika je užitečná v aplikacích, jako je hledání podobného textu, hledání souvisejících obrázků, vytváření doporučení nebo dokonce zjišťování anomálií. Funguje tak, že vezme vektorové reprezentace (seznamy čísel) vašich dat, která jste vytvořili pomocí modelu strojového učení pomocí rozhraní API pro vkládání, jako jsou vložené objekty Azure OpenAI Embeddings nebo Hugging Face on Azure. Pak měří vzdálenost mezi datovými vektory a vektorem dotazu. Datové vektory, které jsou nejblíže vašemu vektoru dotazu, jsou ty, které jsou nalezeny nejvíce podobné sémanticky. Použití funkce nativního vektorového vyhledávání nabízí efektivní způsob, jak ukládat, indexovat a prohledávat vysoce dimenzionální vektorová data přímo vedle jiných aplikačních dat. Tento přístup eliminuje nutnost migrace dat do nákladných alternativních vektorových databází a poskytuje bezproblémovou integraci aplikací řízených AI. Jdi zpátky.

Výzvy a výzva k technickému zpracování

Výzva odkazuje na konkrétní text nebo informace, které můžou sloužit jako instrukce pro LLM, nebo jako kontextová data, na kterých může LLM vycházet. Výzva může mít různé formy, například otázku, příkaz nebo dokonce fragment kódu. Výzvy můžou sloužit jako:

  • Pokyny poskytují direktivy pro LLM
  • Primární obsah: poskytuje informace LLM ke zpracování.
  • Příklady: Podmínka nápovědy modelu k určitému úkolu nebo procesu
  • Upozornění: směrujte výstup LLM správným směrem.
  • Podpůrný obsah: představuje doplňující informace, které LLM může použít k vygenerování výstupu.

Proces vytváření vhodných výzev pro scénář se nazývá prompt engineering. Další informace o výzev a osvědčených postupech pro přípravu výzev najdete v tématu Techniky přípravy výzvy služby Azure OpenAI Service. Jdi zpátky.

Tokeny

Tokeny jsou malé bloky textu vygenerované rozdělením vstupního textu na menší segmenty. Tyto segmenty můžou být slova nebo skupiny znaků, které se liší délkou od jednoho znaku po celé slovo. Například slovo hamburger by se rozdělilo na tokeny, jako je šunka, bur a ger, zatímco krátké a společné slovo jako hrušeň by se považovalo za jediný token. LLM, jako jsou ChatGPT, GPT-3.5 nebo GPT-4, rozdělují slova na tokeny pro zpracování. Jdi zpátky.

Generování rozšířeného načítání

Generování rozšířeného načítání (RAG) je architektura, která rozšiřuje možnosti LLM, jako jsou ChatGPT, GPT-3.5 nebo GPT-4, přidáním systému načítání informací, jako je vyhledávání vektorů, které poskytuje základní data, jako jsou například data uložená ve vektorové databázi. Tento přístup umožňuje vašemu LLM generovat kontextově relevantní a přesné odpovědi na základě vlastních dat z vektorizovaných dokumentů, obrázků, zvuku, videa atd.

Jednoduchý vzor RAG s využitím služby Azure Cosmos DB for NoSQL může být následující:

  1. Vložení dat do databáze a kolekce Azure Cosmos DB for NoSQL
  2. Vytváření vkládání z datové vlastnosti pomocí vkládání Azure OpenAI
  3. Propojení služby Azure Cosmos DB for NoSQL se službou Azure Cognitive Search (pro indexování vektorů a vyhledávání)
  4. Vytvoření vektorového indexu nad vlastnostmi vkládání
  5. Vytvoření funkce pro vyhledávání vektorové podobnosti na základě výzvy uživatele
  6. Provádění odpovědí na otázky nad daty pomocí modelu dokončování Azure OpenAI

Model RAG s výzvou technikou slouží k vylepšení kvality odezvy tím, že model nabízí více kontextových informací. RAG umožňuje modelu použít širší znalostní báze začleněním relevantních externích zdrojů do procesu generování, což vede k komplexnějším a informovanějším reakcím. Další informace o "uzemnění" LLM naleznete v tématu uzemnění LLM. Jdi zpátky.

Tady je několik způsobů implementace RAG na vaše data pomocí našich integrovaných funkcí vektorové databáze:

Implementace funkcí integrované vektorové databáze

Můžete implementovat funkce integrované vektorové databáze pro následující rozhraní API služby Azure Cosmos DB:

Rozhraní API pro MongoDB

Použijte nativně integrovanou vektorovou databázi ve službě Azure Cosmos DB pro MongoDB (architektura virtuálních jader), která nabízí efektivní způsob ukládání, indexování a vyhledávání vysoce dimenzionálních vektorových dat přímo vedle jiných aplikačních dat. Tento přístup eliminuje nutnost migrace dat do nákladných alternativních vektorových databází a poskytuje bezproblémovou integraci aplikací řízených AI.

Ukázky kódu

Rozhraní API pro PostgreSQL

Použijte nativně integrovanou vektorovou databázi ve službě Azure Cosmos DB for PostgreSQL, která nabízí efektivní způsob ukládání, indexování a vyhledávání vysoce dimenzionálních vektorových dat přímo vedle jiných aplikačních dat. Tento přístup eliminuje nutnost migrace dat do nákladných alternativních vektorových databází a poskytuje bezproblémovou integraci aplikací řízených AI.

Ukázky kódu

NoSQL API

Poznámka:

Pro naše rozhraní API NoSQL bude během sestavování v květnu 2024 oznámena nativní integrace nejmodernějšího algoritmu indexování vektorů. Zůstaňte v obraze.

Nativní integrovaná vektorová databáze v rozhraní API NoSQL je ve vývoji. Do té doby můžete implementovat vzory RAG se službou Azure Cosmos DB for NoSQL a Azure AI Search. Tento přístup umožňuje výkonnou integraci vašich dat umístěných v rozhraní NoSQL API do aplikací orientovaných na AI.

Ukázky kódu

Další krok

30denní bezplatná zkušební verze bez předplatného Azure

90denní bezplatná zkušební verze a až 6 000 USD v kreditech propustnosti s využitím azure AI Advantage

Další řešení vektorové databáze

Diagram služeb indexování vektorů