Mozaik AI-vektorkeresés
Ez a cikk áttekintést nyújt a Databricks vektoradatbázis-megoldásáról, a Mosaic AI Vector Search-ről, beleértve, hogy mi az és hogyan működik.
Mi az a Mosaic AI vektorkeresés?
A Mozaik AI Vector Search egy vektoradatbázis, amely a Databricks Adatintelligencia-platformba van beépítve, és integrálva van az irányítási és hatékonyságnövelő eszközeivel. A vektoradatbázis olyan adatbázis, amely beágyazások tárolására és lekérésére van optimalizálva. A beágyazások az adatok szemantikai tartalmának matematikai ábrázolásai, jellemzően szöveges vagy képadatok. A beágyazásokat egy nagy nyelvi modell hozza létre, és számos generatív AI-alkalmazás kulcsfontosságú összetevője, amelyek az egymáshoz hasonló dokumentumok vagy képek megtalálásától függenek. Ilyenek például a RAG-rendszerek, az ajánlórendszerek, valamint a kép- és videofelismerés.
A Mozaik AI Vektorkeresés funkcióval vektorkeresési indexet hozhat létre egy Delta-táblából. Az index metaadatokat tartalmazó beágyazott adatokat tartalmaz. Ezután egy REST API-val lekérdezheti az indexet a leginkább hasonló vektorok azonosításához és a kapcsolódó dokumentumok visszaadásához. Az indexet úgy strukturálhatja, hogy automatikusan szinkronizálja az alapul szolgáló Delta-tábla frissítésekor.
A Mozaik AI Vector Search a következőket támogatja:
- Hibrid kulcsszó-hasonlóság keresés.
- Szűrés.
- Hozzáférés-vezérlési listák (ACL-ek) a vektorkeresési végpontok kezeléséhez.
- Csak a kijelölt oszlopok szinkronizálása.
- Létrehozott beágyazások mentése és szinkronizálása.
Hogyan működik a Mozaik AI Vector Search?
A Mozaik AI Vector Search a hierarchikus Navigable Small World (HNSW) algoritmust használja a legközelebbi szomszédkeresésekhez, valamint az L2 távolságmetrikát a beágyazási vektor hasonlóságának méréséhez. Ha koszinusz-hasonlóságot szeretne használni, normalizálnia kell az adatpont-beágyazásokat, mielőtt vektorkereséshez adja őket. Az adatpontok normalizálása esetén az L2 távolság által előállított rangsor megegyezik a koszinusza hasonlóság által előállított rangsorolással.
A Mozaik AI Vector Search támogatja a hibrid kulcsszó-hasonlósági keresést is, amely a vektoralapú beágyazási keresést a hagyományos kulcsszóalapú keresési technikákkal kombinálja. Ez a megközelítés megfelel a lekérdezés pontos szavainak, miközben vektoralapú hasonlósági keresést is használ a lekérdezés szemantikai kapcsolatainak és kontextusának rögzítéséhez.
E két módszer integrálásával a hibrid kulcsszó-hasonlóság keresés olyan dokumentumokat kér le, amelyek nem csak a pontos kulcsszavakat tartalmazzák, hanem azokat is, amelyek fogalmilag hasonlóak, átfogóbb és relevánsabb keresési eredményeket biztosítva. Ez a módszer különösen hasznos a RAG-alkalmazásokban, ahol a forrásadatok egyedi kulcsszavakkal, például termékváltozatokkal vagy olyan azonosítókkal rendelkeznek, amelyek nem alkalmasak a tiszta hasonlóság keresésére.
Az API-val kapcsolatos részletekért tekintse meg a Python SDK-referencia és a vektorkeresési végpont lekérdezése című témakört.
Hasonlóság keresési számítása
A hasonlósági keresés kiszámítása a következő képletet használja:
ahol dist
a lekérdezési q
és az indexbejegyzés közötti euklideszi távolság x
:
Kulcsszókeresési algoritmus
A relevanciaértékek kiszámítása Okapi BM25 használatával történik. A rendszer az összes szöveg- vagy sztringoszlopot megkeresi, beleértve a forrásszöveg beágyazását és a metaadatoszlopokat szöveg- vagy sztringformátumban. A tokenizálási függvény a szavak határán oszlik el, eltávolítja az írásjeleket, és az összes szöveget kisbetűssé alakítja.
A hasonlóság keresése és a kulcsszókeresés kombinálva
A hasonlósági keresés és a kulcsszókeresési eredmények a Kölcsönös rangsor fúzió (RRF) függvény használatával vannak kombinálva.
Az RRF a pontszám alapján újraértékel minden dokumentumot az egyes módszerekből származóan.
A fenti egyenletben a rangsor 0-nál kezdődik, összegzi az egyes dokumentumok pontszámait, és a legmagasabb pontszámot adja vissza.
rrf_param
szabályozza a magasabb és az alacsonyabb rangsorban lévő dokumentumok relatív jelentőségét. A szakirodalom alapján a rrf_param
értékét 60-ra állapítják meg.
A pontszámok normalizálása úgy történik, hogy a legmagasabb pontszám 1, a legalacsonyabb pontszám pedig 0 legyen az alábbi egyenlet használatával:
Vektoros beágyazások biztosításának lehetőségei
Vektoradatbázis Databricksben való létrehozásához először el kell döntenie, hogyan biztosítson vektoros beágyazást. A Databricks három lehetőséget támogat:
1. lehetőség: A Databricks által kiszámított beágyazásokkal rendelkező deltaszinkronizálási index Szöveges formátumú adatokat tartalmazó forrás Delta-táblázatot ad meg. A Databricks kiszámítja a beágyazásokat egy ön által megadott modellel, és opcionálisan menti a beágyazásokat egy táblába a Unity Catalogban. A Delta-tábla frissítése során az index szinkronizálva marad a Delta táblával.
Az alábbi ábra a folyamatot szemlélteti:
- Lekérdezésbeágyazások kiszámítása. A lekérdezés metaadatszűrőket is tartalmazhat.
- A legtöbb releváns dokumentum azonosításához végezzen hasonlósági keresést.
- Adja vissza a legrelevánsabb dokumentumokat, és fűzze hozzá őket a lekérdezéshez.
2. lehetőség: Delta Sync Index ön által felügyelt beágyazásokkal Előre kiszámított beágyazásokat tartalmazó forrás Delta-táblázatot ad meg. A Delta-tábla frissítése során az index szinkronizálva marad a Delta táblával.
Az alábbi ábra a folyamatot szemlélteti:
- A lekérdezés beágyazásokból áll, és metaadatszűrőket is tartalmazhat.
- A legtöbb releváns dokumentum azonosításához végezzen hasonlósági keresést. Adja vissza a legrelevánsabb dokumentumokat, és fűzze hozzá őket a lekérdezéshez.
3. lehetőség: Közvetlen vektorelérési index Az indexet manuálisan kell frissítenie a REST API használatával, amikor a beágyazási tábla megváltozik.
Az alábbi ábra a folyamatot szemlélteti:
A Mozaik AI-vektorkeresés beállítása
A Mozaik AI Vector Search használatához a következőket kell létrehoznia:
Vektorkeresési végpont. Ez a végpont a vektorkeresési indexet szolgálja ki. A végpontot a REST API vagy az SDK használatával kérdezheti le és frissítheti. Útmutatásért lásd: Vektorkeresési végpont létrehozása.
A végpontok automatikusan felskálázhatók az index méretének vagy az egyidejű kérések számának támogatásához. A végpontok nem méreteznek le automatikusan.
Vektorkeresési index. A vektorkeresési index egy Delta-táblából jön létre, és úgy van optimalizálva, hogy valós időben közelítő közelítő szomszédkereséseket biztosítson. A keresés célja a lekérdezéshez hasonló dokumentumok azonosítása. A vektorkeresési indexek a Unity Katalógusban jelennek meg, és azokat szabályozzák. Útmutatásért lásd : Vektorkeresési index létrehozása.
Emellett, ha úgy dönt, hogy a Databricks kiszámítja a beágyazásokat, használhat egy előre konfigurált Foundation Model API-végpontot, vagy létrehozhat egy végpontot kiszolgáló modellt a választott beágyazási modell kiszolgálásához. Útmutatásért tekintse meg jogkivonatonkénti fizetéses alapmodell API-kat vagy Végpontokat kiszolgáló alapmodell létrehozása.
A végpontot kiszolgáló modell lekérdezéséhez használja a REST API-t vagy a Python SDK-t. A lekérdezés a Delta tábla bármely oszlopa alapján definiálhat szűrőket. További részletekért lásd: Szűrők használata lekérdezéseken, API-referencia vagy Python SDK-referencia.
Követelmények
- Unity Catalog-kompatibilis munkaterület.
- A kiszolgáló nélküli számítás engedélyezve van. Útmutatásért lásd : Csatlakozás kiszolgáló nélküli számításhoz.
- A forrástáblának engedélyezve kell lennie az Adatcsatorna módosítása funkcióval. Útmutatásért lásd: A Delta Lake változó adatfolyam használata az Azure Databricks rendszerben.
- Vektorkeresési index létrehozásához CREATE TABLE jogosultságokkal kell rendelkeznie azon a katalógussémán, ahol az index létrejön.
A vektorkeresési végpontok létrehozásának és kezelésének engedélyezése hozzáférés-vezérlési listák használatával van konfigurálva. Lásd: Vektorkeresési végpont ACL-ek.
adatvédelem és hitelesítés
A Databricks az alábbi biztonsági vezérlőket implementálja az adatok védelme érdekében:
- A Mozaik AI Vector Search szolgáltatáshoz érkező minden ügyfélkérés logikailag elkülönített, hitelesített és engedélyezett.
- A Mozaik AI Vector Search titkosítja az összes inaktív adatot (AES-256) és az átvitel alatt (TLS 1.2+).
A Mozaik AI Vector Search két hitelesítési módot támogat:
Szolgáltatásazonosító token. A rendszergazda létrehozhat egy szolgáltatás fő hitelesítési jogkivonatot, és átadhatja azt az SDK-nak vagy az API-nak. Lásd szolgáltatás-alapelvek használata. Éles környezetben való felhasználáshoz a Databricks a szolgáltatásazonosító főkulcs használatát javasolja.
# Pass in a service principal vsc = VectorSearchClient(workspace_url="...", service_principal_client_id="...", service_principal_client_secret="..." )
Személyes hozzáférési jogkivonat. Személyes hozzáférési jogkivonatot használhat a Mozaik AI-vektorkereséssel való hitelesítéshez. Tekintse meg a személyes hozzáférési hitelesítési jogkivonatot. Ha az SDK-t jegyzetfüzet-környezetben használja, az SDK automatikusan létrehoz egy PAT-jogkivonatot a hitelesítéshez.
# Pass in the PAT token client = VectorSearchClient(workspace_url="...", personal_access_token="...")
Az ügyfél által felügyelt kulcsok (CMK) támogatottak a 2024. május 8-án vagy azt követően létrehozott végpontokon.
Használat és költségek figyelése
A számlázható használati rendszer tábla lehetővé teszi a vektorkeresési indexekkel és végpontokkal kapcsolatos használat és költségek monitorozását. Itt láthat egy példalekérdezést:
WITH all_vector_search_usage (
SELECT *,
CASE WHEN usage_metadata.endpoint_name IS NULL THEN 'ingest'
WHEN usage_type = "STORAGE_SPACE" THEN 'storage'
ELSE 'serving'
END as workload_type
FROM system.billing.usage
WHERE billing_origin_product = 'VECTOR_SEARCH'
),
daily_dbus AS (
SELECT workspace_id,
cloud,
usage_date,
workload_type,
usage_metadata.endpoint_name as vector_search_endpoint,
CASE WHEN workload_type = 'serving' THEN SUM(usage_quantity)
WHEN workload_type = 'ingest' THEN SUM(usage_quantity)
ELSE null
END as dbus,
CASE WHEN workload_type = 'storage' THEN SUM(usage_quantity)
ELSE null
END as dsus
FROM all_vector_search_usage
GROUP BY all
ORDER BY 1,2,3,4,5 DESC
)
SELECT * FROM daily_dbus
A számlázási használati tábla tartalmával kapcsolatos részletekért lásd számlázható használati rendszer táblareferenciáját. A további lekérdezések a következő példajegyzetfüzetben találhatók.
Vektorkeresési rendszertáblák lekérdezései jegyzetfüzet
Erőforrás- és adatméretkorlátok
Az alábbi táblázat a vektorkeresési végpontok és indexek erőforrás- és adatméretkorlátjait foglalja össze:
Erőforrás | Részletesség | Határ |
---|---|---|
Vektorkeresési végpontok | Munkaterületenként | 100 |
Beágyazások | Végpontonként | 320 000 000 |
Beágyazási dimenzió | Indexenként | 4096 |
Indexek | Végpontonként | 50 |
Oszlopok | Indexenként | 50 |
Oszlopok | Támogatott típusok: bájtok, rövid, egész szám, hosszú, lebegőpontos, kettős, logikai, sztring, időbélyeg, dátum | |
Metaadatmezők | Indexenként | 50 |
Index neve | Indexenként | 128 karakter |
A vektorkeresési indexek létrehozására és frissítésére az alábbi korlátozások vonatkoznak:
Erőforrás | Részletesség | Határ |
---|---|---|
A Delta Sync Index sorméretének mérete | Indexenként | 100 KB |
Forrásoszlop méretének beágyazása a Delta Sync-indexhez | Indexenként | 32764 bájt |
Tömeges beszúrás/frissítés kérés méretkorlátja a Direct Vector indexhez | Indexenként | 10MB |
Direct Vector-index tömeges törlési kérésméretkorlátja | Indexenként | 10MB |
A lekérdezési API-ra az alábbi korlátozások vonatkoznak.
Erőforrás | Részletesség | Határ |
---|---|---|
Szöveghossz lekérdezése | Lekérdezésenként | 32764 bájt |
Visszaadott eredmények maximális száma | Lekérdezésenként | 10,000. |
Korlátozás
A sor- és oszlopszintű engedélyek nem támogatottak. A szűrő API használatával azonban saját alkalmazásszintű ACL-eket is implementálhat.