Mozaïek AI Vector Search
Dit artikel bevat een overzicht van de vectordatabaseoplossing van Databricks, Mozaïek AI Vector Search, inclusief wat het is en hoe het werkt.
Wat is Mozaïek AI Vector Search?
Mozaïek AI Vector Search is een vectordatabase die is ingebouwd in het Databricks Data Intelligence Platform en geïntegreerd met de governance- en productiviteitsprogramma's. Een vectordatabase is een database die is geoptimaliseerd voor het opslaan en ophalen van insluitingen. Insluitingen zijn wiskundige weergaven van de semantische inhoud van gegevens, meestal tekst- of afbeeldingsgegevens. Insluitingen worden gegenereerd door een groot taalmodel en vormen een belangrijk onderdeel van veel GenAI-toepassingen die afhankelijk zijn van het vinden van documenten of afbeeldingen die vergelijkbaar zijn met elkaar. Voorbeelden zijn RAG-systemen, aanbevelingssystemen en beeld- en videoherkenning.
Met Mosaic AI Vector Search maakt u een vectorzoekindex van een Delta table. De index bevat ingesloten gegevens met metagegevens. Vervolgens kunt u een query uitvoeren op de index met behulp van een REST API om de meest vergelijkbare vectoren te identificeren en de bijbehorende documenten te retourneren. U kunt de index zo structureren dat deze automatisch sync doet wanneer de onderliggende Delta table wordt bijgewerkt.
Mozaïek AI Vector Search ondersteunt het volgende:
- Hybride trefwoord-overeenkomsten zoeken.
- Filteren.
- Toegangsbeheerlijsten (ACL's) voor het beheren van eindpunten voor vectorzoekopdrachten.
- Sync alleen geselecteerde columns.
- Opslaan en sync gegenereerde insluitingen.
Hoe werkt Mozaïek AI Vector Search?
Mozaïek AI Vector Search maakt gebruik van het HNSW-algoritme (Hierarchical Navigable Small World) voor de dichtstbijzijnde burenzoekopdrachten en de metrische L2-afstandsafstand om de insluitingsvector-gelijkenis te meten. Als u cosinus-overeenkomsten wilt gebruiken, moet u de insluitingen van uw gegevenspunten normaliseren voordat u ze invoert in vectorzoekopdrachten. Wanneer de gegevenspunten worden genormaliseerd, is de rangorde die wordt geproduceerd door L2-afstand hetzelfde als de rangschikking veroorzaakt door cosinus-gelijkenis.
Mozaïek AI Vector Search biedt ook ondersteuning voor hybride zoekopdrachten op trefwoorden, waarbij vectorgebaseerde insluitingszoekopdrachten worden gecombineerd met traditionele zoektechnieken op basis van trefwoorden. Deze benadering komt overeen met exacte woorden in de query, terwijl ook een op vector gebaseerde overeenkomsten worden gebruikt om de semantische relaties en context van de query vast te leggen.
Door deze twee technieken te integreren, haalt hybride trefwoord-overeenkomsten zoeken documenten op die niet alleen de exacte trefwoorden bevatten, maar ook documenten die conceptueel vergelijkbaar zijn, waardoor uitgebreidere en relevante zoekresultaten worden geboden. Deze methode is met name nuttig in RAG-toepassingen where brongegevens unieke trefwoorden hebben, zoals SKU's of id's die niet geschikt zijn voor pure overeenkomsten.
Zie de Python SDK-verwijzing en een vectorzoekeindpunt opvragen voor meer informatie over de API.
Berekening van overeenkomsten zoeken
In de berekening voor overeenkomsten zoeken wordt de volgende formule gebruikt:
where
dist
is de Euclidean-afstand tussen de query q
en de indexvermelding x
:
Zoekalgoritmen voor trefwoorden
Relevantiescores worden berekend met okapi BM25. Alle tekst of tekenreeksen columns worden doorzocht, inclusief de inbedding van de brontekst en metagegevens columns in de vorm van tekst of tekenreeks. De tokenisatiefunctie splitst op woordgrenzen, verwijdert interpunctie en converteert alle tekst naar kleine letters.
Hoe overeenkomsten zoeken en zoeken op trefwoorden worden gecombineerd
De zoekresultaten voor overeenkomsten en trefwoorden worden gecombineerd met behulp van de functie Wederzijdse Rank Fusion (RRF).
RRF herscoret elk document van elke methode met behulp van de score:
In de bovenstaande vergelijking begint rang bij 0, worden de scores voor elk document opgeteld en worden de hoogste scoredocumenten geretourneerd.
rrf_param
bepaalt het relatieve belang van documenten met een hogere rang en een lagere rangschikking. Op basis van de literatuur is rrf_param
set tot 60.
Scores worden genormaliseerd zodat de hoogste score 1 is en de laagste score 0 is met behulp van de volgende vergelijking:
Opties voor het bieden van vector-insluitingen
Als u een vectordatabase wilt maken in Databricks, moet u eerst beslissen hoe vector-insluitingen moeten worden geboden. Databricks ondersteunt drie opties:
Optie 1: Delta Sync Index met embeddings berekend door Databricks U levert een Delta-bron table die gegevens in tekstformaat bevat. Databricks berekent de insluitingen, met behulp van een model dat u opgeeft en slaat de insluitingen desgewenst op in een table in Unity Catalog. Wanneer de Delta-table wordt bijgewerkt, blijft de index gesynchroniseerd met de Delta-table.
In het volgende diagram ziet u het proces:
- Query-insluitingen berekenen. Query kan metagegevensfilters bevatten.
- Zoek naar overeenkomsten om de meest relevante documenten te identificeren.
- Retourneer de meest relevante documenten en voeg ze toe aan de query.
optie 2: Delta Sync Index met zelfbeheerde insluitingen U geeft een deltabron table die vooraf berekende insluitingen bevat. Wanneer de Delta-table wordt bijgewerkt, blijft de index gesynchroniseerd met de Delta-table.
In het volgende diagram ziet u het proces:
- Query bestaat uit insluitingen en kan metagegevensfilters bevatten.
- Zoek naar overeenkomsten om de meest relevante documenten te identificeren. Retourneer de meest relevante documenten en voeg ze toe aan de query.
Optie 3: Direct Vector Access Index U moet de index handmatig update met behulp van de REST API wanneer de insluitingen table veranderen.
In het volgende diagram ziet u het proces:
Hoe set Mozaïek AI Vector Search op te zetten
Als u Mozaïek AI Vector Search wilt gebruiken, moet u het volgende maken:
Een vectorzoekeindpunt. Dit eindpunt dient voor de vectorzoekindex. U kunt het eindpunt update opvragen met behulp van de REST API of de SDK. Zie Een vectorzoekeindpunt maken voor instructies.
Eindpunten worden automatisch opgeschaald om de grootte van de index of het aantal gelijktijdige aanvragen te ondersteunen. Eindpunten worden niet automatisch omlaag geschaald.
Een vectorzoekindex. De vectorzoekindex is gemaakt uit een Delta table en is geoptimaliseerd voor realtime zoekopdrachten naar dichtstbijzijnde buren. Het doel van de zoekopdracht is om documenten te identificeren die vergelijkbaar zijn met de query. Vectorzoekindexen worden weergegeven in en worden beheerd door Unity Catalog. Zie Een vectorzoekindex maken voor instructies.
Als u ervoor kiest om databricks de insluitingen te laten berekenen, kunt u bovendien een vooraf geconfigureerd Foundation Model-API-eindpunt gebruiken of een model voor eindpunten maken om het insluitmodel van uw keuze te leveren. Zie Api's voor betalen per token Foundation-model of Basismodel maken voor eindpunten voor instructies.
Als u een query wilt uitvoeren op het eindpunt van het model, gebruikt u de REST API of de Python SDK. Uw query kan filters definiëren op basis van elke column in de Delta-table. Zie Filters gebruiken voor query's, de API-verwijzing of de Python SDK-verwijzing voor meer informatie.
Vereisten
- Unity Catalog de werkruimte ingeschakeld.
- Serverloze rekenkracht ingeschakeld. Zie Verbinding maken met serverloze berekeningen voor instructies.
- Voor bron table moet de functie 'Wijzigingengegevensfeed' zijn ingeschakeld. Zie Delta Lake-wijzigingenfeed gebruiken in Azure Databricks voor instructies.
- Om een vectorzoekindex te maken, moet u CREATE TABLE bevoegdheden hebben op de catalogschemawhere waar de index zal worden aangemaakt.
De machtiging voor het maken en beheren van vectorzoekeindpunten wordt geconfigureerd met behulp van toegangsbeheerlijsten. Zie ACL's voor vectorzoekeindpunten.
gegevensbescherming en -verificatie
Databricks implementeert de volgende beveiligingsmechanismen om uw gegevens te beveiligen:
- Elke klantaanvraag bij Mosaic AI Vector Search is logisch geïsoleerd, geverifieerd en geautoriseerd.
- Mozaïek AI Vector Search versleutelt alle data-at-rest (AES-256) en in transit (TLS 1.2+).
Mozaïek AI Vector Search ondersteunt twee verificatiemodi:
Token voor service-principal. Een beheerder kan een service-principal-token generate en deze doorgeven aan de SDK of API. Zie service-principals gebruiken. Voor productiegebruiksscenario's raadt Databricks aan om een service-principal-token te gebruiken.
# Pass in a service principal vsc = VectorSearchClient(workspace_url="...", service_principal_client_id="...", service_principal_client_secret="..." )
Persoonlijk toegangstoken. U kunt een persoonlijk toegangstoken gebruiken om te verifiëren met Mosaic AI Vector Search. Zie het verificatietoken voor persoonlijke toegang. Als u de SDK in een notebookomgeving gebruikt, genereert de SDK automatisch een PAT-token voor verificatie.
# Pass in the PAT token client = VectorSearchClient(workspace_url="...", personal_access_token="...")
Cmk (Door klant beheerde sleutels) worden ondersteund op eindpunten die zijn gemaakt op of na 8 mei 2024.
Gebruik en kosten controleren
Met het factureerbare gebruikssysteem table kunt u het gebruik en de kosten bewaken die zijn gekoppeld aan vectorzoekindexen en eindpunten. Hier volgt een voorbeeld van een query:
WITH all_vector_search_usage (
SELECT *,
CASE WHEN usage_metadata.endpoint_name IS NULL
THEN 'ingest'
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,
SUM(usage_quantity) as dbus
FROM all_vector_search_usage
GROUP BY all
ORDER BY 1,2,3,4,5 DESC
)
SELECT * FROM daily_dbus
Zie tablevoor meer informatie over de inhoud van het factureringsgebruik table. Aanvullende query's bevinden zich in het volgende voorbeeldnotebook.
Vectorzoeksysteem tables vraagt notitieboek aan
Limieten voor resource- en gegevensgrootte
In de volgende table worden de limieten voor resources en gegevensgrootten voor eindpunten en indexen voor vectorzoekopdrachten samengevat:
Bron | Granulariteit | Limit |
---|---|---|
Eindpunten voor vectorzoekopdrachten | Per werkruimte | 100 |
Insluitingen | Per eindpunt | 320,000,000 |
Dimensie voor insluiten | Per index | 4096 |
Indexen | Per eindpunt | 50 |
Columns | Per index | 50 |
Columns | Ondersteunde typen: Bytes, short, integer, long, float, double, booleaanse waarde, tekenreeks, tijdstempel, datum | |
Metagegevensvelden | Per index | 50 |
Naam van de index | Per index | 128 tekens |
De volgende limieten zijn van toepassing op het aanmaken en update van vectorzoekindexen:
Bron | Granulariteit | Limit |
---|---|---|
Rijgrootte voor Delta Sync Index | Per index | 100 KB |
Bron column grootte insluiten voor Delta-index Sync | Per Index | 32764 bytes |
Bulk upsert-aanvraaggrootte limit voor Directe Vector-index | Per Index | 10 MB |
Omvang van bulkverwijderingsverzoek limit voor Direct Vector-index | Per Index | 10 MB |
De volgende limieten zijn van toepassing op de query-API.
Bron | Granulariteit | Limit |
---|---|---|
Lengte van querytekst | Per query | 32764 bytes |
Maximum aantal geretourneerde resultaten | Per query | 10,000 |
Beperkingen
- Machtigingen op rij- en column-niveau worden niet ondersteund. U kunt echter uw eigen ACL's op toepassingsniveau implementeren met behulp van de filter-API.
Aanvullende bronnen
- Implementeer uw LLM-chatbot met het ophalen van Augmented Generation (RAG), Foundation Models en Vector Search.
- Een vectorzoekindex maken en er query's op uitvoeren.
- Voorbeeldnotebooks