Delen via


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.

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 Mozaïek AI Vector Search maakt u een vectorzoekindex van een Delta-tabel. 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 structuren dat deze automatisch wordt gesynchroniseerd wanneer de onderliggende Delta-tabel wordt bijgewerkt.

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 waarbij brongegevens unieke trefwoorden hebben, zoals SKU's of id's die niet geschikt zijn voor pure overeenkomsten zoeken.

Hybride zoekopdrachten zijn beschikbaar in openbare preview. 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:

wederkerig van 1 plus de kwadratische afstand

waar dist is de Euclidische afstand tussen de query q en de indexvermelding x:

Eucidische afstand, vierkantswortel van de som van kwadratische verschillen

Zoekalgoritmen voor trefwoorden

Relevantiescores worden berekend met okapi BM25. Alle tekst- of tekenreekskolommen worden doorzocht, inclusief het insluiten van brontekst en metagegevenskolommen in tekst- of tekenreeksindeling. 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:

RRF-vergelijking

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. Gebaseerd op de literatuur is rrf_param ingesteld op 60.

Scores worden genormaliseerd zodat de hoogste score 1 is en de laagste score 0 is met behulp van de volgende vergelijking:

normalisatie

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 U geeft een delta-brontabel op die gegevens in tekstindeling bevat. Databricks berekent de insluitingen met behulp van een model dat u opgeeft en slaat de insluitingen desgewenst op in een tabel in Unity Catalog. Wanneer de Delta-tabel wordt bijgewerkt, blijft de index gesynchroniseerd met de Delta-tabel.

    In het volgende diagram ziet u het proces:

    1. Query-insluitingen berekenen. Query kan metagegevensfilters bevatten.
    2. Zoek naar overeenkomsten om de meest relevante documenten te identificeren.
    3. Retourneer de meest relevante documenten en voeg ze toe aan de query.

    vectordatabase, Databricks berekent insluitingen

  • Optie 2 U geeft een delta-brontabel op die vooraf berekende insluitingen bevat. Wanneer de Delta-tabel wordt bijgewerkt, blijft de index gesynchroniseerd met de Delta-tabel.

    In het volgende diagram ziet u het proces:

    1. Query bestaat uit insluitingen en kan metagegevensfilters bevatten.
    2. Zoek naar overeenkomsten om de meest relevante documenten te identificeren. Retourneer de meest relevante documenten en voeg ze toe aan de query.

    vectordatabase, vooraf berekende insluitingen

  • Optie 3 (directe toegang) U geeft een delta-brontabel op die vooraf berekende insluitingen bevat. Er is geen automatische synchronisatie wanneer de Delta-tabel wordt bijgewerkt. U moet de index handmatig bijwerken met behulp van de REST API wanneer de tabel voor insluiten wordt gewijzigd.

    In het volgende diagram ziet u het proces, dat hetzelfde is als optie 2, behalve dat de vectorindex niet automatisch wordt bijgewerkt wanneer de Delta-tabel wordt gewijzigd:

    vectordatabase, vooraf berekende insluitingen zonder automatische synchronisatie

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 opvragen en bijwerken met behulp van de REST API of de SDK. Eindpunten worden automatisch geschaald ter ondersteuning van de grootte van de index of het aantal gelijktijdige aanvragen. Zie Een vectorzoekeindpunt maken voor instructies.
  • Een vectorzoekindex. De vectorzoekindex wordt gemaakt op basis van een Delta-tabel en is geoptimaliseerd voor zoekopdrachten in realtime dichtstbijzijnde buren. Het doel van de zoekopdracht is om documenten te identificeren die vergelijkbaar zijn met de query. Vectorzoekindexen worden weergegeven 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 maak een generatief AI-model 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 kolom in de Delta-tabel. Zie Filters gebruiken voor query's, de API-verwijzing of de Python SDK-verwijzing voor meer informatie.

Vereisten

  • Werkruimte met Unity Catalog ingeschakeld.
  • Serverloze rekenkracht ingeschakeld.
  • Voor de brontabel moet Wijzigingengegevensfeed zijn ingeschakeld.
  • CREATE TABLE-bevoegdheden voor catalogusschema('s) voor het maken van indexen.
  • Persoonlijke toegangstokens ingeschakeld.

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:

  • 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, wordt er automatisch een PAT-token gegenereerd voor verificatie.
  • Token voor service-principal: een beheerder kan een service-principal-token genereren en dit doorgeven aan de SDK of API. Zie service-principals gebruiken. Voor productiegebruiksscenario's raadt Databricks aan om een service-principal-token te gebruiken.

Cmk (Door klant beheerde sleutels) worden ondersteund op eindpunten die zijn gemaakt op of na 8 mei 2024.

Gebruik en kosten controleren

Met de factureerbare gebruikssysteemtabel kunt u het gebruik en de kosten bewaken die zijn gekoppeld aan vectorzoekindexen en eindpunten. Hier volgt een voorbeeld van een query:

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

Zie de naslaginformatie over factureerbare gebruikssysteemtabellen voor meer informatie over de inhoud van de tabel factureringsgebruik. Aanvullende query's bevinden zich in het volgende voorbeeldnotebook.

Query's voor tabellen in vectorzoeksysteemquery's

Notebook downloaden

Limieten voor resource- en gegevensgrootte

De volgende tabel bevat een overzicht van resource- en gegevensgroottelimieten voor vectorzoekeindpunten en -indexen:

Bron Granulariteit Grenswaarde
Eindpunten voor vectorzoekopdrachten Per werkruimte 100
Insluitingen Per eindpunt 100,000,000
Dimensie voor insluiten Per index 4096
Indexen Per eindpunt 50
Kolommen Per index 50
Kolommen Ondersteunde typen: Bytes, short, integer, long, float, double, booleaanse waarde, tekenreeks, tijdstempel, datum
Metagegevensvelden Per index 20
Naam van de index Per index 128 tekens

De volgende limieten zijn van toepassing op het maken en bijwerken van vectorzoekindexen:

Bron Granulariteit Grenswaarde
Rijgrootte voor Delta Sync-index Per index 100 KB
Grootte van bronkolommen insluiten voor Delta Sync-index Per Index 32764 bytes
Limiet voor bulksgewijs upsert-aanvraaggrootte voor Direct Vector-index Per Index 10 MB
Limiet voor aanvraaggrootte bulksgewijs verwijderen voor Direct Vector-index Per Index 10 MB

De volgende limieten zijn van toepassing op de query-API.

Bron Granulariteit Grenswaarde
Lengte van querytekst Per query 32764
Maximum aantal geretourneerde resultaten Per query 10,000

Beperkingen

  • PrivateLink is momenteel beperkt tot geselecteerde klanten. Als u geïnteresseerd bent in het gebruik van de functie met PrivateLink, neemt u contact op met uw Databricks-accountvertegenwoordiger.
  • Machtigingen op rij- en kolomniveau worden niet ondersteund. U kunt echter uw eigen ACL's op toepassingsniveau implementeren met behulp van de filter-API.

Aanvullende bronnen