Vektorová databáze
Tip
Navštivte naši novou galerii ukázek s nejnovějšími ukázkami aplikace Vector Database a RAG Pattern
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. Vysoce výkonná databáze s flexibilitou schématu a integrovanou vektorovou databází je zvlášť optimální pro agenty umělé inteligence.
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.
Koncepty související s vektorovými databázemi
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í
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í:
- Registrace ve verzi Preview ve službě Azure Cosmos DB NoSQL Vector Index
- Nastavení databáze a kontejneru pomocí zásad vektoru kontejneru a indexu vektorů
- Vložení dat do databáze a kontejneru Azure Cosmos DB for NoSQL
- Vytváření vkládání z datové vlastnosti pomocí vkládání Azure OpenAI
- Propojte službu Azure Cosmos DB for NoSQL.
- Vytvoření vektorového indexu nad vlastnostmi vkládání
- Vytvoření funkce pro vyhledávání vektorové podobnosti na základě výzvy uživatele
- 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:
NoSQL API
Azure Cosmos DB for NoSQL je první světová bezserverová vektorová databáze NoSQL. Ve službě Azure Cosmos DB for NoSQL můžete ukládat vektory a data společně s integrovanými funkcemi vektorové databáze, kde můžete vytvořit vektorový index založený na diskANN, sadě algoritmů pro indexování vektorů s vysokým výkonem, které vyvinul Microsoft Research.
DiskANN umožňuje provádět vysoce přesné dotazy s nízkou latencí v libovolném měřítku a využívat všechny výhody služby Azure Cosmos DB for NoSQL, jako je smlouva SLA s 99,999% smlouvou SLA (s povolenou vysokou dostupností), geografickou replikací, bezproblémovým přechodem z bezserverové na zřízenou propustnost (RU) v jednom úložišti dat.
Odkazy a ukázky
- Co je databáze za ChatGPT? – Microsoft Mechanics
- Vektorové indexování ve službě Azure Cosmos DB for NoSQL
- Dotazy NoSQL systémové funkce VectorDistance
- Nastavení funkcí vektorové databáze ve službě Azure Cosmos DB NoSQL
- Kurz Pythonu – Poznámkový blok
- C# – Sestavení vlastního akcelerátoru řešení Copilot s využitím AKS a sémantického jádra
- C# – Vytvoření vlastní ukázkové aplikace Copilot a praktického cvičení
- Python – Movie Chatbot
Azure Cosmos DB 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
- Vytvoření vlastního copilotu pro Azure Cosmos DB pro MongoDB v jazyce C# pomocí sémantického jádra
- Kurz k .NET – chatovací robot s receptem
- Model RAG v jazyce C# – Integrace služeb OpenAI se službou Cosmos DB
- Model RAG v Pythonu – Chatovací robot produktu Azure
- Python Notebook – Integrace vektorové databáze prostřednictvím kurzu LangChain
- Poznámkový blok Pythonu – Integrace ukládání do mezipaměti LLM prostřednictvím kurzu LangChain
- Python – Integrace llamaIndex
- Python – Integrace sémantického jádra
- Poznámkový blok Pythonu – Movie Chatbot
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ázka kódu
Řešení vektorové databáze
Související obsah
- 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