Share via


Databricks-vektorsökning

Den här artikeln ger en översikt över Databricks vektordatabaslösning, Databricks Vector Search, inklusive vad den är och hur den fungerar.

Databricks Vector Search är en vektordatabas som är inbyggd i Databricks Data Intelligence Platform och integrerad med dess styrnings- och produktivitetsverktyg. En vektordatabas är en databas som är optimerad för att lagra och hämta inbäddningar. Inbäddningar är matematiska representationer av det semantiska innehållet i data, vanligtvis text- eller bilddata. Inbäddningar genereras av en stor språkmodell och är en viktig komponent i många GenAI-program som är beroende av att hitta dokument eller bilder som liknar varandra. Exempel är RAG-system, rekommenderade system samt bild- och videoigenkänning.

Med Vector Search skapar du ett vektorsökningsindex från en Delta-tabell. Indexet innehåller inbäddade data med metadata. Du kan sedan köra frågor mot indexet med hjälp av ett REST-API för att identifiera de mest liknande vektorerna och returnera de associerade dokumenten. Du kan strukturera indexet så att det synkroniseras automatiskt när den underliggande Delta-tabellen uppdateras.

Databricks Vector Search använder HNSW-algoritmen (Hierarchical Navigable Small World) för sina ungefärliga närmaste grannsökningar och måttet L2-avståndsavstånd för att mäta inbäddningsvektorlikhet. Om du vill använda cosinélikhet måste du normalisera dina inbäddningar för datapunkter innan du matar in dem i Vector Search. När datapunkterna normaliseras är rangordningen som genereras av L2-avståndet samma som rangordningen ger av cosinélikhet.

Hur fungerar vektorsökning?

Om du vill skapa en vektordatabas i Databricks måste du först bestämma hur vektorbäddningar ska tillhandahållas. Databricks har stöd för tre alternativ:

  • Alternativ 1 Du anger en Delta-källtabell som innehåller data i textformat. Databricks beräknar inbäddningarna med hjälp av en modell som du anger och kan också spara inbäddningarna i en tabell i Unity Catalog. När deltatabellen uppdateras förblir indexet synkroniserat med Delta-tabellen.

    Följande diagram illustrerar processen:

    1. Beräkna inbäddningar av frågor. Frågan kan innehålla metadatafilter.
    2. Utför likhetssökning för att identifiera de mest relevanta dokumenten.
    3. Returnera de mest relevanta dokumenten och lägg till dem i frågan.

    vektordatabas beräknar Databricks inbäddningar

  • Alternativ 2 Du anger en Delta-källtabell som innehåller förberäknade inbäddningar. När deltatabellen uppdateras förblir indexet synkroniserat med Delta-tabellen.

    Följande diagram illustrerar processen:

    1. Frågan består av inbäddningar och kan innehålla metadatafilter.
    2. Utför likhetssökning för att identifiera de mest relevanta dokumenten. Returnera de mest relevanta dokumenten och lägg till dem i frågan.

    vektordatabas, förberäknade inbäddningar

  • Alternativ 3 Du anger en Delta-källtabell som innehåller förberäknade inbäddningar. Det sker ingen automatisk synkronisering när Delta-tabellen uppdateras. Du måste uppdatera indexet manuellt med hjälp av REST-API:et när inbäddningstabellen ändras.

    Följande diagram illustrerar processen, som är samma som alternativ 2, förutom att vektorindexet inte uppdateras automatiskt när Delta-tabellen ändras:

    vektordatabas, förberäknade inbäddningar utan automatisk synkronisering

Beräkning av likhetssökning

Likhetssökningsberäkningen använder följande formel:

reciprocal av 1 plus kvadratavståndet

där dist är euklidiska avståndet mellan frågan q och indexposten x:

Eucidean avstånd, kvadratrot av summan av kvadratiska skillnader

Om du vill använda Databricks Vector Search måste du skapa följande:

  • En slutpunkt för vektorsökning. Den här slutpunkten hanterar vektorsökningsindexet. Du kan fråga och uppdatera slutpunkten med hjälp av REST-API:et eller SDK:n. Slutpunkter skalas automatiskt för att stödja indexets storlek eller antalet samtidiga begäranden. Anvisningar finns i Skapa en slutpunkt för vektorsökning.
  • Ett vektorsökningsindex. Vektorsökningsindexet skapas från en Delta-tabell och är optimerat för att ge ungefärliga närmsta grannsökningar i realtid. Målet med sökningen är att identifiera dokument som liknar frågan. Vektorsökningsindex visas i och styrs av Unity Catalog. Anvisningar finns i Skapa ett vektorsökningsindex .

Om du väljer att låta Databricks beräkna inbäddningarna måste du också skapa en modell som betjänar slutpunkten för inbäddningsmodellen. Anvisningar finns i Skapa grundläggande modell som betjänar slutpunkter.

Om du vill köra frågor mot modellens serverslutpunkt använder du antingen REST-API:et eller Python SDK. Din fråga kan definiera filter baserat på valfri kolumn i Delta-tabellen. Mer information finns i Använda filter för frågor, API-referensen eller Python SDK-referensen.

Krav

  • Unity Catalog-aktiverad arbetsyta.
  • Serverlös beräkning aktiverad.
  • Källtabellen måste ha Ändringsdataflöde aktiverat.
  • SKAPA TABELLbehörigheter för katalogscheman för att skapa index.
  • Personliga åtkomsttoken har aktiverats.

Dataskydd och autentisering

Databricks implementerar följande säkerhetskontroller för att skydda dina data:

  • Varje kundbegäran till Vector Search är logiskt isolerad, autentiserad och auktoriserad.
  • Databricks-vektorsökning krypterar alla vilande data (AES-256) och under överföring (TLS 1.2+).

Databricks Vector Search stöder två autentiseringslägen:

  • Personlig åtkomsttoken – Du kan använda en personlig åtkomsttoken för att autentisera med Vector Search. Se autentiseringstoken för personlig åtkomst. Om du använder SDK:t i en notebook-miljö genereras automatiskt en PAT-token för autentisering.
  • Token för tjänstens huvudnamn – En administratör kan generera en token för tjänstens huvudnamn och skicka den till SDK:n eller API:et. Se använda tjänstens huvudnamn. För produktionsanvändningsfall rekommenderar Databricks att du använder en token för tjänstens huvudnamn.

Övervaka användning och kostnader för vektorsökning

Med den fakturerbara användningssystemtabellen kan du övervaka användning och kostnader som är associerade med vektorsökningsindex och slutpunkter. Här är en exempelfråga:

SELECT *
FROM system.billing.usage
WHERE billing_origin_product = 'VECTOR_SEARCH'
  AND usage_metadata.endpoint_name IS NOT NULL

Mer information om innehållet i tabellen för faktureringsanvändning finns i Tabellreferens för fakturerbart användningssystem. Ytterligare frågor finns i följande notebook-exempel.

Vektorsökningssystemtabeller frågar notebook-fil

Hämta notebook-fil

Begränsningar för resurs- och datastorlek

I följande tabell sammanfattas resurs- och datastorleksgränser för slutpunkter och index för vektorsökning:

Resurs Precision Gräns
Slutpunkter för vektorsökning Per arbetsyta 100
Inbäddningar Per slutpunkt 100,000,000
Inbäddningsdimension Per index 4096
Index Per slutpunkt 20
Kolumner Per index 20
Kolumner Typer som stöds: Bytes, short, integer, long, float, double, boolean, string, timestamp, date
Metadatafält Per index 20
Indexnamn Per index 128 tecken

Följande begränsningar gäller för skapande och uppdatering av vektorsökningsindex:

Resurs Precision Gräns
Radstorlek för Delta Sync Index Per index 100 KB
Bädda in källkolumnstorlek för Delta Sync-index Per Index 32764 byte
Storleksgräns för massuppsertbegäran för Direct Vector-index Per Index 10 MB
Storleksgräns för massborttagningsbegäran för Direct Vector-index Per Index 10 MB

Följande begränsningar gäller för fråge-API:et för vektorsökning.

Resurs Precision Gräns
Frågetextlängd Per fråga 32764
Maximalt antal returnerade resultat Per fråga 10,000

Begränsningar

  • PrivateLink är för närvarande begränsat till den valda uppsättningen kunder. Om du är intresserad av att använda funktionen med PrivateLink kontaktar du din Databricks-kontorepresentant.
  • Reglerade arbetsytor stöds inte, därför är den här funktionen inte HIPAA-kompatibel.
  • Behörigheter på rad- och kolumnnivå stöds inte. Du kan dock implementera dina egna ACL:er på programnivå med hjälp av filter-API:et.

Ytterligare resurser