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.
Tip
Nejnovější ukázkové ukázky vektorové databáze a vzorové aplikace RAG najdete v galerii ukázek služby Azure Cosmos DB.
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) a DiskANN.
Integrovaná vektorová databáze vs. databáze čistých vektorů
Existují dva běžné typy implementací vektorové databáze: databáze čistých vektorů a integrovaná vektorová databáze v NoSQL nebo relační databáze.
Č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 se odvozují vložené objekty.
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í a vyhledávání. 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ů
- Identifikovat nejvhodnější potenciální možnosti z široké nabídky pro naplnění komplexní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.
Vektorové databáze jsou obzvláště oblíbené pro 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řekonání limitů tokenů LLM
- Snížení nákladů při častém vyladění aktualizovaných dat
Tento proces zahrnuje extrakci relevantních informací z uživatelsky definovaného zdroje dat a jejich integraci do požadavku modelu přes návrh 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.
Poznámka:
Zajímá vás možnosti vyhledávání vektorů s ultra vysokou propustností? Azure Cosmos DB vyvíjí vylepšené funkce vektorového vyhledávání navržené pro velké vektorové datové sady spárované s ultravýkonnými vkládáními a vyhledáváními. Dokáže pojmout miliony dotazů za sekundu (QPS) s předvídatelnou, nízkou latencí a nesrovnanou nákladovou efektivitou. Zaregistrujte se, abyste se dozvěděli více o příležitostech pro dřívější přístup a dostávali oznámení o tom, kdy budou tyto funkce dostupné.
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í. Zakódování je informačně hustá reprezentace sémantického významu části textu. Každé vestavění je vektor čísel s plovoucí desetinnou čárkou tak, že vzdálenost mezi dvěma vestavěními ve vektorovém prostoru je korelována se sémantickou podobností 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.
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í s využitím API pro embeddingy, jako jsou Azure OpenAI Embeddings nebo Hugging Face na 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.
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, které poskytují direktivy pro LLM
- Primární obsah, který poskytuje informace LLM ke zpracování
- Příklady, které pomáhají podmínit model na konkrétní úlohu nebo proces
- Upozornění pro směrování výstupu LLM správným směrem
- Podpůrný obsah, který 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 naleznete v tématu Návrh systémových zpráv.
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í s rozšířeným vyhledáváním
Generování doplněné načítáním (RAG) je architektura, která rozšiřuje možnosti LLM, jako je ChatGPT, GPT-3.5 nebo GPT-4, přidáním systému načítání informací, jako je vektorové vyhledávání, poskytující základní data, například z vektorové databáze. 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ý model RAG s využitím služby Azure Cosmos DB for NoSQL by mohl:
- Aktivovat 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
- Vytvořte vektory z datové vlastnosti pomocí Azure OpenAI Vektorů
- Propojte službu Azure Cosmos DB for NoSQL.
- Vytvořte vektorový index nad vlastnostmi zakódování
- Vytvoření funkce pro vyhledávání vektorové podobnosti na základě výzvy uživatele
- Provádět zodpovídání otázek z dat pomocí modelu dokončení Azure OpenAI
Vzor RAG s využitím techniky promptingu slouží k vylepšení kvality odezvy tím, že poskytuje více kontextových informací modelu. 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 naleznete v tématu Grounding LLMs.
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 vyvinutých společností 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 pro NoSQL, jako je 99,999% SLA (s vysokou dostupností), georeplikace, bezproblémový přechod z bezserverové architektury na zřízený výkon (RU), vše v jednom datovém úložišti.
Odkazy a ukázky
- Jaká je databáze použita pro ChatGPT? – Microsoft Mechanics
- Vektorové indexování ve službě Azure Cosmos DB for NoSQL
- Dotazy NoSQL systémové funkce VectorDistance
- Vektorové vyhledávání ve službě Azure Cosmos DB for 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řte si vlastní ukázkovou aplikaci Copilot a vyzkoušejte si praktické cvičení
- Python – Movie Chatbot
Ukázky kódu
- Python Notebook – Integrace vektorové databáze prostřednictvím kurzu LangChain
- Sešit Pythonu – Integrace kešování LLM v rámci návodu 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.