INTEGRITY Dokumentace

Vektorové databáze

Vektorové databáze jsou klíčovou součástí tvorby škálovatelných aplikací poháněných umělou inteligencí. Poskytují dlouhodobou paměť nad rámec existujícího modelu strojového učení.

Bez vektorové databáze byste museli model (nebo modely) před každým dotazem trénovat, případně přes něj znovu spouštět celý dataset, což by bylo pomalé a nákladné.

Proč je vektorová databáze užitečná?

Vektorová databáze určuje, jaká další data (reprezentovaná jako vektory) se nacházejí v blízkosti vašeho vstupního dotazu. Díky tomu na ní můžete stavět různé případy užití, například:

Vektorové databáze mohou také pohánět Generování rozšířené vyhledáváním ↗ (RAG), tedy úloh, které umožňují doplnit LLM (Large Language Models) o další kontext pomocí kontextu z vektorového vyhledávání, jímž se rozšiřuje uživatelský prompt.

Při tradičním použití vektorového vyhledávání se dotazy do vektorové databáze provádějí předáním dotazovacího vektoru, přičemž databáze vrátí konfigurovatelný seznam vektorů s nejkratší vzdáleností („nejpodobnějších“) od tohoto vektoru.

Postup krok za krokem vypadá zhruba takto:

  1. Vývojář převede svou existující datovou sadu (dokumentaci, obrázky, logy uložené v R2) na sadu vektorových embeddingů (jednosměrnou reprezentaci) tak, že ji pošle přes model strojového učení natrénovaný pro daný typ dat.
  2. Výstupní embeddingy se vkládají do databázového indexu Vectorize.
  3. I dotaz na vyhledávání, klasifikační požadavek nebo dotaz na detekci anomálií prochází stejným ML modelem, který vrátí vektorový embedding daného dotazu.
  4. Vectorize je pak s tímto embeddingem dotazován a vrátí sadu vektorových embeddingů, které jsou zadanému dotazu nejpodobnější.
  5. Vrácené embeddingy slouží k načtení původních zdrojových objektů z vyhrazeného úložiště (například R2, KV nebo D1) a jejich vrácení uživateli.

Bez vektorové databáze byste museli při každém dotazu předávat celý svůj dataset, což není praktické (modely mají limity na velikost vstupu) a spotřebovalo by to značné množství prostředků a času.

Generování rozšířené vyhledáváním

Retrieval Augmented Generation (RAG) je přístup, kterým se zlepšuje kontext poskytovaný jazykovému modelu (LLM, Large Language Model) v případech použití generativní AI, například u chatbotů nebo obecných aplikací typu otázka-odpověď. Vektorová databáze slouží k obohacení promptu předávaného LLM tím, že k dotazu přidá další kontext.

Namísto přímého předání promptu modelu LLM v přístupu RAG:

  1. Vygenerujte vektorové embeddingy z existující datové sady nebo korpusu, tedy dat, která chcete využít k rozšíření kontextu pro odpověď LLM. Takovou datovou sadou nebo korpusem může být dokumentace k produktu, výzkumná data, technické specifikace nebo katalog a popisy vašich produktů.
  2. Uložte výstupní embeddingy do databázového indexu Vectorize.

Když uživatel zadá prompt, místo jeho předání do LLM bez dalšího kontextu vy rozšířit jej o další kontext:

  1. Uživatelský dotaz se předá stejnému ML modelu, který se používá pro vaši datovou sadu, a vrátí se vektorová embeddingová reprezentace dotazu.
  2. Tento embedding se použije jako dotaz (sémantické vyhledávání) vůči vektorové databázi, která vrátí podobné vektory.
  3. Tyto vektory slouží k vyhledání obsahu, ke kterému se vztahují (pokud tento obsah není přímo vložen k vektorům jako metadata).
  4. Tento obsah se poskytuje jako kontext společně s původním uživatelským dotazem, čímž modelu LLM poskytuje další kontext a umožňuje mu vrátit odpověď, která je pravděpodobně mnohem lépe kontextová než samotný dotaz.

Vytvoření aplikace RAG s AI Search ještě dnes k nasazení plně spravovaného kanálu RAG během několika kliknutí. AI Search automaticky nastaví Vectorize, zajišťuje průběžné indexování a poskytuje odpovědi prostřednictvím jediného API.

1 Více o teoretickém základu RAG se dozvíte v RAG článek ↗. 1 Více o teoretickém základu RAG se dozvíte v RAG článek ↗.

Terminologie

Databáze a indexy

Ve službě Vectorize jsou databáze a index stejný pojem. Každý vytvořený index je oddělený od ostatních indexů, které vytvoříte. Vectorize při vkládání nových dat za vás automaticky spravuje optimalizaci a přegenerování indexu.

Vektorové embeddingy

Vektorové embeddingy reprezentují vlastnosti modelu strojového učení jako číselný vektor (pole čísel). Jde o jednosměrnou reprezentaci, která zachycuje, jak model strojového učení chápe zadané vstupy, a to na základě jeho původního trénování a vnitřní struktury.

Například model textových embeddingů dostupný ve Workers AI dokáže přijmout textový vstup a reprezentovat jej jako 768rozměrný vektor. Text This is a story about an orange cloud, pokud je reprezentován jako vektorový embedding, vypadá takto:

[-0.019273685291409492,-0.01913292706012726,<764 dimensions here>,0.0007094172760844231,0.043409910053014755]

Pokud model považuje vlastnosti vstupu za „podobné“ (na základě svého porozumění), vzdálenost mezi vektorovými embeddingy těchto dvou vstupů bude krátká.

Dimenze

Vektorové dimenze popisují šířku vektorového embeddingu, tedy počet prvků s pohyblivou desetinou čárkou, ze kterých se daný vektor skládá.

Počet dimenzí určuje model strojového učení použitý k vygenerování vektorových embeddingů a způsob, jakým na základě svého vnitřního modelu a složitosti reprezentuje vstupní příznaky. Více dimenzí (takzvané „širší“ vektory) může zvýšit přesnost, ale na úkor výpočetních a paměťových prostředků a také latence (rychlosti) vyhledávání vektorů.

Viz dimenze dokumentaci, kde se dozvíte, jak nakonfigurovat akceptovanou velikost dimenze vektoru při vytváření indexu Vectorize.

Metriky vzdálenosti

Metrika vzdálenosti je vlastnost indexu použitá pro vyhledávání vektorů. Určuje, jak se posuzuje, jak blízko je váš dotazovací vektor ostatním vektorům v rámci indexu.

Viz metriky vzdálenosti dokumentaci, kde se dozvíte, jak nakonfigurovat metriku vzdálenosti při vytváření indexu Vectorize.