Hledání vektorů Databricks
Důležité
Tato funkce je ve verzi Public Preview v následujících oblastech: canadacentral
, centralus
, eastus
, eastus2
, northeurope
, southeastasia
, , westeurope
, , westus
. westus2
Tento článek obsahuje přehled řešení vektorové databáze Databricks, databricks Vector Search, včetně toho, co je a jak funguje.
Co je Databricks Vector Search?
Databricks Vector Search je vektorová databáze, která je integrovaná do platformy Databricks Intelligence a je integrovaná se svými nástroji pro zásady správného řízení a produktivitu. Vektorová databáze je databáze optimalizovaná pro ukládání a načítání vložených objektů. Vkládání jsou matematické znázornění sémantického obsahu dat, obvykle textových nebo obrázkových dat. Vkládání je generováno velkým jazykovým modelem a jsou klíčovou součástí mnoha aplikací GenAI, které závisí na hledání dokumentů nebo obrázků, které se vzájemně podobají. Příkladem jsou systémy RAG, doporučené systémy a rozpoznávání obrázků a videa.
Pomocí funkce Vector Search vytvoříte index vektorového vyhledávání z tabulky Delta. Index obsahuje vložená data s metadaty. Pak můžete index dotazovat pomocí rozhraní REST API, abyste identifikovali nejvíce podobné vektory a vrátili přidružené dokumenty. Index můžete strukturovat tak, aby se automaticky synchronizoval při aktualizaci podkladové tabulky Delta.
Databricks Vector Search používá algoritmus Hierarchical Navigable Small World (HNSW) pro přibližné hledání nejbližšího souseda a metriku vzdálenosti L2 k měření podobnosti vektorů vkládání. Pokud chcete použít kosinusovou podobnost, musíte před jejich podáváním do vektorového vyhledávání normalizovat vkládání datových bodů. Když jsou datové body normalizovány, pořadí vytvořené vzdáleností L2 je stejné jako pořadí produkuje kosinus podobnost.
Jak funguje vektorové vyhledávání?
Pokud chcete vytvořit vektorovou databázi v Databricks, musíte se nejprve rozhodnout, jak poskytovat vkládání vektorů. Databricks podporuje tři možnosti:
Možnost 1 Zadejte zdrojovou tabulku Delta, která obsahuje data v textovém formátu. Databricks vypočítá vkládání pomocí zadaného modelu. Při aktualizaci tabulky Delta zůstane index synchronizovaný s tabulkou Delta.
Tento proces znázorňuje následující diagram:
- Výpočet vkládání dotazů Dotaz může obsahovat filtry metadat.
- Vyhledávání podobností umožňuje identifikovat nejrelevavantnější dokumenty.
- Vraťte nejrelevavantnější dokumenty a připojte je k dotazu.
Možnost 2 : Zadáte zdrojovou tabulku Delta, která obsahuje předem počítané vkládání. Při aktualizaci tabulky Delta zůstane index synchronizovaný s tabulkou Delta.
Tento proces znázorňuje následující diagram:
- Dotaz se skládá z vkládání a může obsahovat filtry metadat.
- Vyhledávání podobností umožňuje identifikovat nejrelevavantnější dokumenty. Vraťte nejrelevavantnější dokumenty a připojte je k dotazu.
Možnost 3 : Zadáte zdrojovou tabulku Delta, která obsahuje předpočítaná vkládání. Při aktualizaci tabulky Delta neexistuje žádná automatická synchronizace. Index je nutné aktualizovat ručně pomocí rozhraní REST API při změně tabulky vkládání.
Následující diagram znázorňuje proces, který je stejný jako možnost 2 s tím rozdílem, že při změně tabulky Delta se index vektoru automaticky neaktualizuje:
Jak nastavit vektorové vyhledávání
Pokud chcete použít databricks Vector Search, musíte vytvořit následující:
- Koncový bod vektorového vyhledávání. Tento koncový bod slouží indexu vektorového vyhledávání. Koncový bod můžete dotazovat a aktualizovat pomocí rozhraní REST API nebo sady SDK. Koncové body se škálují automaticky, aby podporovaly velikost indexu nebo počet souběžných požadavků. Pokyny najdete v tématu Vytvoření koncového bodu vektorového vyhledávání.
- Index vektorového vyhledávání. Index vektorového vyhledávání se vytvoří z tabulky Delta a je optimalizovaný tak, aby poskytoval přibližné hledání nejbližších sousedů v reálném čase. Cílem hledání je identifikovat dokumenty, které jsou podobné dotazu. Indexy vektorových vyhledávání se zobrazují a řídí se katalogem Unity. Pokyny najdete v tématu Vytvoření indexu vektorového vyhledávání.
Pokud se navíc rozhodnete, že Databricks počítá vkládání, musíte také vytvořit koncový bod obsluhující model pro model vkládání. Pokyny najdete v tématu Vytvoření základního modelu obsluhující koncové body .
K dotazování koncového bodu obsluhy modelu použijete buď rozhraní REST API, nebo sadu Python SDK. Dotaz může definovat filtry na základě libovolného sloupce v tabulce Delta. Podrobnosti najdete v tématu Použití filtrů pro dotazy, reference k rozhraní API nebo referenční informace k sadě Python SDK.
Požadavky
- Pracovní prostor s povoleným katalogem Unity
- Bezserverové výpočetní prostředky jsou povolené.
- Zdrojová tabulka musí mít povolenou změnu datového kanálu.
- Oprávnění CREATE TABLE pro schémata katalogu k vytváření indexů.
- Povoleny osobní přístupové tokeny.
Ochrana a ověřování dat
Databricks implementuje následující bezpečnostní prvky, které chrání vaše data:
- Každá žádost zákazníka o vektorové vyhledávání je logicky izolovaná, ověřená a autorizovaná.
- Vektorové vyhledávání Databricks šifruje všechna neaktivní uložená data (AES-256) a přenášená data (TLS 1.2+).
Databricks Vector Search podporuje dva režimy ověřování:
- Osobní přístupový token – K ověření pomocí vektorového vyhledávání můžete použít osobní přístupový token. Viz token patového ověřování. Pokud používáte sadu SDK v prostředí poznámkového bloku, automaticky vygeneruje token PAT pro ověřování.
- Token instančního objektu – Správce může vygenerovat token instančního objektu a předat ho sadě SDK nebo rozhraní API. Viz použití instančních objektů. Pro případy použití v produkčním prostředí doporučuje Databricks použít token instančního objektu.
Omezení velikosti prostředků a dat
Následující tabulka shrnuje omezení velikosti prostředků a dat pro koncové body a indexy vektorového vyhledávání:
Prostředek | Členitost | Limit |
---|---|---|
Koncové body vektorového vyhledávání | Na pracovní prostor | 10 |
Vkládání | Na koncový bod | 100,000,000 |
Dimenze vložení | Na index | 4096 |
Indexy | Na koncový bod | 20 |
Sloupce | Na index | 20 |
Sloupce | Podporované typy: Bajty, krátké, celé číslo, long, float, double, boolean, string, timestamp, date | |
Pole metadat | Na index | 20 |
Název indexu | Na index | 128 znaků |
Následující omezení platí pro vytváření a aktualizaci indexů vektorového vyhledávání:
Prostředek | Členitost | Limit |
---|---|---|
Velikost řádku pro rozdílový synchronizační index | Na index | 100 kB |
Vložení velikosti zdrojového sloupce pro index Delta Sync | Na index | 32764 bajtů |
Hromadný limit velikosti požadavku upsertu pro index direct vector | Na index | 10 MB |
Hromadný limit velikosti žádosti o odstranění indexu Direct Vector | Na index | 10 MB |
Následující omezení platí pro rozhraní API dotazu pro vektorové vyhledávání.
Prostředek | Členitost | Limit |
---|---|---|
Délka textu dotazu | Na dotaz | 32764 |
Výsledky čísel | Na dotaz | 50 |
Omezení
- Podporaseznamůch Pokud chcete tuto funkci používat se seznamy přístupu PrivateLink nebo IP, obraťte se na podporu Databricks.
- Klíče spravované zákazníkem (CMK) nejsou ve verzi Public Preview podporované.
- Regulované pracovní prostory nejsou podporované, proto tato funkce nedodržuje předpisy HIPAA.
- Oprávnění na úrovni řádků a sloupců nejsou podporována. Můžete ale implementovat vlastní seznamy ACL na úrovni aplikace pomocí rozhraní API filtru.