Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Databricks AI Search (tidigare Databricks Vector Search) är en söklösning som är inbyggd i Databricks Data Intelligence Platform och integrerad med dess styrnings- och produktivitetsverktyg. Den driver hämtning för generativa AI-program som RAG-system, rekommenderade system och bild- och videoigenkänning genom att hitta de inbäddningar som mest liknar en fråga.
Vektorsökning är en typ av sökning som är optimerad för att 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 generativa AI-program som är beroende av att hitta dokument eller bilder som liknar varandra.
Med Databricks AI Search skapar du ett AI Search-index 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.
AI Search stöder följande:
- Hybridsök med nyckelordslikhet.
- Nyckelordssökning i fulltext (Beta) på valfri slutpunkt eller dedikerade fulltextindex (Beta) på lagringsoptimerade slutpunkter.
- Filtrering
- Ändra rangordning.
- Åtkomstkontrollistor (ACL: er) för att hantera AI Search-slutpunkter.
- Synkronisera endast markerade kolumner.
- Spara och synkronisera genererade inbäddningar.
Hur fungerar AI Search?
AI Search använder HNSW-algoritmen (Hierarchical Navigable Small World) för sina ungefärliga närmsta grannsökningar (ANN) och L2-avståndsmåttet för att mäta inbäddningsvektorlikhet. Om du vill använda cosinélikhet måste du normalisera dina inbäddningar av datapunkter innan du matar in dem i vektorsökningsalgoritmen. När datapunkterna normaliseras är rangordningen som genereras av L2-avståndet samma som rangordningen som produceras av cosinélikhet.
AI Search stöder även sökning med hybridnyckelordslikhet, som kombinerar vektorbaserad inbäddningssökning med traditionella nyckelordsbaserade söktekniker. Den här metoden matchar exakta ord i frågan samtidigt som en vektorbaserad likhetssökning används för att samla in frågans semantiska relationer och kontext.
Genom att integrera dessa två tekniker hämtar hybridsök med nyckelordslikhet dokument som inte bara innehåller de exakta nyckelorden utan även de som är konceptuellt lika, vilket ger mer omfattande och relevanta sökresultat. Den här metoden är särskilt användbar i RAG-program där källdata har unika nyckelord som SKU:er eller identifierare som inte passar bra för ren likhetssökning.
Mer information om API:et finns i referensen för Python SDK och Fråga efter ett AI Search-index.
Beräkning av likhetssökning
Likhetssökningsberäkningen använder följande formel:
där dist är euklidiska avståndet mellan frågan q och indexposten x:
Algoritm för nyckelordssökning
Relevanspoäng beräknas med okapi BM25. Alla text- eller strängkolumner genomsöks, inklusive inbäddning av källtext och metadatakolumner i text- eller strängformat. Tokeniseringsfunktionen delar upp vid ordgränser, tar bort skiljetecken och konverterar all text till gemener.
Hur likhetssökning och nyckelordssökning kombineras
Sökresultaten för likhetssökning och nyckelord kombineras med funktionen Reciprocal Rank Fusion (RRF).
RRF gör först om varje dokument från varje metod med hjälp av poängen:
rrf_param styr den relativa betydelsen av högre rankade och lägre rankade dokument. Baserat på litteraturen är rrf_param satt till 60.
Poängen normaliseras så att högsta möjliga poäng är 1 med hjälp av följande normaliseringsfaktor:
Slutpoängen för varje dokument beräknas på följande sätt:
Dokumenten med de högsta slutpoängen returneras.
Alternativ för att tillhandahålla vektorbäddningar
Om du vill skapa ett AI Search-index i Databricks måste du först bestämma hur vektorinbäddningar ska tillhandahållas. Databricks stöder tre alternativ.
Alternativ 1: Delta Sync Index med inbäddningar som beräknas av Databricks
Med det här alternativet anger du 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:
- Beräkna frågeinbäddningar. Frågan kan innehålla metadatafilter.
- 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.
Alternativ 2: Delta Sync Index med självhanterade inbäddningar
Med det här alternativet anger du en Delta-källtabell som innehåller förberäknade inbäddningar. När deltatabellen uppdateras förblir indexet synkroniserat med Delta-tabellen.
Note
Det går inte att konvertera ett självhanterat inbäddningsindex till ett Databricks-hanterat index. Om du senare bestämmer dig för att använda hanterade inbäddningar måste du skapa ett nytt index och omkomputera inbäddningar.
Följande diagram illustrerar processen:
- Frågan består av inbäddningar och kan innehålla metadatafilter.
- 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.
Alternativ 3: Direktvektoråtkomstindex
Med det här alternativet måste du uppdatera indexet manuellt med rest-API:et när inbäddningstabellen ändras.
Följande diagram illustrerar processen:
Alternativ 4: Fulltextsökningsindex för lagringsoptimerade slutpunkter (Beta)
Med det här alternativet skapar du ett Delta Sync-index på en lagringsoptimerad slutpunkt utan några inbäddningskolumner. Indexet stöder nyckelordsbaserad fulltextsökning med BM25-bedömning, utan att vektorinbäddningar krävs. Detta är användbart för att söka efter exakta termer, identifierare eller nyckelord i textdata.
Note
Du kan också använda query_type="FULL_TEXT" för att utföra nyckelordssökningar på befintliga AI Search-index på både standard- och lagringsoptimerade slutpunkter. Det här alternativet är för att skapa ett dedikerat index som inte innehåller några inbäddningar alls.
Dedikerade fulltextsökningsindex är endast tillgängliga på lagringsoptimerade slutpunkter och kräver utlöst synkroniseringsläge. Se Skapa ett fulltextsökningsindex (Beta) för instruktioner.
Alternativ för slutpunkter
AI Search innehåller följande alternativ så att du kan välja den slutpunktskonfiguration som uppfyller programmets behov.
Note
Hög QPS är endast tillgängligt för standardslutpunkter.
-
Standardslutpunkter har en kapacitet på 320 miljoner vektorer vid dimension 768.
- Med standardslutpunkter kan du använda hög QPS för att stödja högt ihållande dataflöde. Mer information finns i Skala dataflöde för AI-sökningsslutpunkter med hög QPS.
- Lagringsoptimerade slutpunkter har en större kapacitet (över en miljard vektorer vid dimension 768) och ger 10–20 x snabbare indexering. Frågor på lagringsoptimerade slutpunkter har en något ökad svarstid på cirka 250 msek. Prissättningen för det här alternativet är optimerad för det större antalet vektorer. Prisinformation finns på prissättningssidan för AI Search. Information om hur du hanterar AI Search-kostnader finns i kostnadshanteringsguiden för AI Search.
Du anger slutpunktstypen när du skapar slutpunkten.
Se även Begränsningar för lagringsoptimerade slutpunkter.
Så här konfigurerar du AI Search
Om du vill använda AI Search måste du skapa följande:
En slutpunkt för AI Search. Den här slutpunkten betjänar AI Search-indexet. Du kan fråga och uppdatera slutpunkten med hjälp av REST-API:et eller SDK:n. Anvisningar finns i Skapa en AI Search-slutpunkt .
Slutpunkter skalas upp automatiskt för att stödja indexets storlek eller antalet samtidiga begäranden. Slutpunkter skalas ned automatiskt när ett index tas bort.
Ett AI Search-index. AI Search-indexet skapas från en Delta-tabell och är optimerat för att tillhandahålla approximate nearest neighbor-sökningar (ANN) i realtid. Målet med sökningen är att identifiera dokument som liknar frågan. AI Search-index visas i och styrs av Unity Catalog. Anvisningar finns i Skapa ett AI Search-index .
Om du väljer att låta Databricks beräkna inbäddningarna kan du dessutom använda en förkonfigurerad Foundation Model-API:er-slutpunkt eller skapa en modell som betjänar slutpunkten för att hantera den inbäddningsmodell du väljer. För instruktioner, se API:er för betalt per token-grundmodell eller Skapa slutpunkter för betjäning av grundmodeller.
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.
Kravspecifikation
- Unity Catalog-aktiverad arbetsyta
- Serverlös beräkning aktiverad. Anvisningar finns i Ansluta till serverlös beräkning.
- För standardslutpunkter måste källtabellen ha Ändringsdataflöde aktiverat. Se Använda ändringsdataflöde på Azure Databricks.
- Om du vill skapa ett AI Search-index måste du ha CREATE TABLE behörigheter i katalogschemat där indexet skapas.
Behörighet att skapa och hantera AI Search-slutpunkter konfigureras med hjälp av åtkomstkontrollistor. Se ACL:er för AI-sökningsslutpunkter.
Dataskydd och autentisering
Databricks implementerar följande säkerhetskontroller för att skydda dina data:
- Varje kundbegäran till AI Search är logiskt isolerad, autentiserad och auktoriserad.
- AI Search krypterar alla vilande data (AES-256) och under överföring (TLS 1.2+).
AI Search stöder två autentiseringslägen, tjänstens huvudnamn och personliga åtkomsttoken (PAT). För produktionsprogram rekommenderar Databricks att du använder tjänsteprincipaler, vilket kan ha en hastighet per förfrågan upp till 100 ms snabbare i förhållande till personliga åtkomsttoken.
Token för tjänstens huvudidentitet. 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 användningsfall i produktion rekommenderar Databricks att du använder en service principal-token.
# Pass in a service principal vsc = AISearchClient(workspace_url="...", service_principal_client_id="...", service_principal_client_secret="..." )Personlig åtkomsttoken. Du kan använda en personlig åtkomsttoken för att autentisera med AI Search. Se autentiseringstoken för personlig åtkomst. Om du använder SDK:t i en notebook-miljö genererar SDK automatiskt en PAT-token för autentisering.
# Pass in the PAT token client = AISearchClient(workspace_url="...", personal_access_token="...")
Kundhanterade nycklar (CMK) stöds på slutpunkter som skapats den 8 maj 2024 eller senare.
Övervaka användning och kostnader
Information om övervakning av användning och kostnader som är associerade med AI Search-index och slutpunkter finns i kostnadshanteringsguiden för AI Search.
Du kan också söka efter användning utifrån användningspolicy. Se Användningsprinciper för AI-sökning.
Begränsningar för resurs- och datastorlek
I följande tabell sammanfattas resurs- och datastorleksgränser för AI Search-slutpunkter och index:
| Resource | Detaljeringsgrad | Limit |
|---|---|---|
| SLUTpunkter för AI-sökning | Per arbetsyta | 500 |
| Inbäddningar (Delta Sync-index) | Per standardslutpunkt | ~ 320 000 000 vid 768 inbäddningsdimension ~ 160 000 000 vid 1536 inbäddningsdimension ~ 80 000 000 med 3 072 dimensioner för inbäddning (skalas ungefär linjärt) |
| Inbäddningar (Direct Vector Access-index) | Per standardslutpunkt | ~ 2 000 000 vid 768 inbäddningsdimensioner |
| Inbäddningar (lagringsoptimerad slutpunkt) | Per lagringsoptimerad slutpunkt | ~ 1 000 000 000 vid 768 inbäddningsdimension |
| Inbäddningsdimension | Per indexen | 4096 |
| Indexen | Per slutpunkt | 50 |
| Columns | Per indexen | 50 |
| Columns | Typer som stöds: Byte, kort, heltal, lång, flyttal, dubbel, boolesk, sträng, tidsstämpel, datum, matris | |
| Metadatafält | Per indexen | 50 |
| Indexnamn | Per indexen | 128 tecken |
Följande begränsningar gäller för skapande och uppdatering av AI Search-index:
| Resource | Detaljeringsgrad | Limit |
|---|---|---|
| Radstorlek för Delta Sync Index | Per indexen | 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.
| Resource | Detaljeringsgrad | Limit |
|---|---|---|
| Frågetextlängd | Per begäran | 32764 tecken |
| Token när du använder hybridsökning | Per begäran | 1 024 ord eller 2 byte tecken |
| Filtervillkor | Per filter-klausul | 1024-element |
| Maximalt antal returnerade resultat (ungefärlig sökning efter närmaste granne) | Per begäran | 10 000 |
| Maximalt antal returnerade resultat (hybridsökning med nyckelordslikhet) | Per begäran | 200 |
| Maximalt antal returnerade resultat (fulltextsökning) | Per begäran | 200 |
| Svarsstorlek | Per begäran | 10 MB |
Limitations
- Kolumnnamnet
_idär reserverat. Om källtabellen har en kolumn med namnet_idbyter du namn på den innan du skapar ett AI Search-index. - 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.
- Du kan inte klona ett index till en annan arbetsyta. Du kan göra begäranden mellan arbetsytor med hjälp av Databricks SDK eller REST API.
- Indexkapaciteten etableras baserat på källtabellens storlek när indexet skapas. Från och med en liten källtabell begränsas hur mycket indexet kan växa och kan resultera i kapacitetsuttömda fel, så storleksanpassa källtabellen så att den matchar den förväntade datavolymen innan du skapar indexet.
Begränsningar för lagringsoptimerade slutpunkter
Begränsningarna i det här avsnittet gäller endast för lagringsoptimerade slutpunkter.
- Kontinuerlig synkläge stöds inte.
- Kolumner som ska synkroniseras stöds inte.
- Inbäddningsdimensionen måste vara delbar med 16.
- Inkrementell uppdatering stöds delvis. Varje synkronisering måste återskapa delar av AI Search-indexet.
- För hanterade index återanvänds alla inbäddningar som tidigare beräknats om källraden inte har ändrats.
- Du bör förvänta dig en betydande minskning av tiden från slutpunkt till slutpunkt som krävs för en synkronisering jämfört med standardslutpunkterna. Datauppsättningar med 1 miljard inbäddningar bör slutföra en synkronisering på under 8 timmar. Mindre datauppsättningar tar mindre tid att synkronisera.
- FedRAMP-kompatibla arbetsytor stöds inte.
- Kundhanterade nycklar (CMK) stöds inte.
- Om du vill använda en anpassad inbäddningsmodell för ett hanterat Delta Sync-index måste förhandsversionen av AI-frågan för anpassade modeller och externa modeller vara aktiverad. Se Hantera Azure Databricks förhandsversioner för att lära dig hur du aktiverar förhandsversioner.
- Lagringsoptimerade slutpunkter stöder upp till 1 miljard inbäddningar av vektorer med 768 dimensioner. Om du har ett användningsfall i större skala, kontakta ditt kontoteam.