Freigeben über


Mosaic AI-Vektorsuche

In diesem Artikel finden Sie eine Übersicht über die Databricks-Vektorsuche – Mosaic AI Vektorsuche. Sie erfahren u. a., worum es sich bei der Vektorsuche handelt und wie sie funktioniert.

Mosaic AI Vektorsuche ist eine Vektordatenbank, die in die Databricks Data Intelligence Platform und in deren Governance- und Produktivitätstools integriert ist. Eine Vektordatenbank ist eine Datenbank, die zum Speichern und Abrufen von Einbettungen optimiert ist. Einbettungen sind mathematische Darstellungen des semantischen Inhalts von Daten, in der Regel Text- oder Bilddaten. Einbettungen werden durch ein großes Sprachmodell generiert und sind eine Schlüsselkomponente vieler GenAI-Anwendungen, die von der Suche nach Dokumenten oder Bildern, die einander ähneln, abhängig sind. Beispiele sind RAG-Systeme, Empfehlungssysteme und Bild- und Videoerkennung.

Mit der Mosaic AI-Vektorsuche erstellen Sie einen Vektorsuchindex aus einer Delta-Tabelle. Der Index enthält eingebettete Daten mit Metadaten. Anschließend können Sie den Index mithilfe einer REST-API abfragen, um die ähnlichsten Vektoren zu identifizieren und die zugehörigen Dokumente zurückzugeben. Sie können den Index so strukturieren, dass er automatisch synchronisiert wird, wenn die zugrunde liegende Delta-Tabelle aktualisiert wird.

Wie funktioniert die Mosaic AI-Vektorsuche?

Mosaic AI Vektorsuche verwendet den hierarchischen Navigable Small World (HNSW)-Algorithmus für seine ungefähre Pixelwiederholungssuche und die L2-Entfernungsmetrik zum Messen der Einbettungsvektorähnlichkeit. Wenn Sie Kosinusgleichheit verwenden möchten, müssen Sie Ihre Datenpunkteinbettungen normalisieren, bevor Sie sie in die Vektorsuche einbetten. Wenn die Datenpunkte normalisiert werden, ist die von L2-Entfernung erzeugte Rangfolge identisch mit der Rangfolge, die durch Kosinusgleichheit erzeugt wird.

Die Mosaic AI-Vektorsuche unterstützt auch eine hybride Suchfunktion zur Ähnlichkeit mit Schlüsselwörtern, die die vektorbasierte Einbettungssuche mit herkömmlichen schlüsselwortbasierten Suchtechniken kombiniert. Dieser Ansatz entspricht exakten Wörtern in der Abfrage und verwendet gleichzeitig eine vektorbasierte Ähnlichkeitssuche, um die semantischen Beziehungen und den Kontext der Abfrage zu erfassen.

Durch die Integration dieser beiden Techniken ruft die Hybrid-Stichwort-Ähnlichkeitssuche Dokumente ab, die nicht nur die genauen Schlüsselwörter enthalten, sondern auch solche, die konzeptionell ähnlich sind und umfassendere und relevante Suchergebnisse bereitstellen. Diese Methode ist besonders bei RAG-Anwendungen nützlich, bei denen Quelldaten eindeutige Schlüsselwörter wie SKUs oder Bezeichner aufweisen, die nicht gut für die reine Ähnlichkeitssuche geeignet sind.

Die Hybridsuche befindet sich derzeit in der Public Preview. Ausführliche Informationen zur API finden Sie in der Python SDK-Referenz und unter Abfrage eines Vektorsuchendpunkts.

Berechnung der Ähnlichkeitssuche

Die Berechnung der Ähnlichkeitssuche verwendet die folgende Formel:

Kehrwert von 1 plus Abstand im Quadrat

wobei dist der euklidische Abstand zwischen der Abfrage q und dem Indexeintrag x ist:

Euklidischer Abstand, Quadratwurzel der Summe der Quadratunterschiede

Stichwortsuchalgorithmus

Relevanzbewertungen werden mit Okapi BM25 berechnet. Alle Text- oder Zeichenfolgenspalten werden durchsucht, einschließlich der Quelltexteinbettung und Metadatenspalten im Text- oder Zeichenfolgenformat. Die Tokenisierungsfunktion teilt sich an Wortgrenzen, entfernt Interpunktion und konvertiert den gesamten Text in Kleinbuchstaben.

Wie Ähnlichkeitssuche und Stichwortsuche kombiniert werden

Die Ähnlichkeitssuche und die Schlüsselwortsuchergebnisse werden mithilfe der Funktion Reciprocal Rank Fusion (RRF) kombiniert.

RRF bewertet jedes Dokument aus jeder Methode anhand der Bewertung neu:

RRF Formel

In der obigen Gleichung beginnt der Rang bei 0, addiert die Bewertungen für jedes Dokument und gibt die höchsten Bewertungsdokumente zurück.

rrf_param steuert die relative Wichtigkeit höher bewerteter und niedriger bewerteter Dokumente. Basierend auf der Literatur ist rrf_param auf 60 festgelegt.

Die Bewertungen werden normalisiert, sodass der höchste Wert 1 ist und der niedrigste Wert 0 mit der folgenden Gleichung ist:

Normalisierung

Optionen zum Bereitstellen von Vektoreinbettungen

Um eine Vektordatenbank in Databricks zu erstellen, müssen Sie zuerst entscheiden, wie Vektoreinbettungen bereitgestellt werden sollen. Databricks unterstützt drei Optionen:

  • Option 1: Sie stellen eine Delta-Quelltabelle bereit, die Daten im Textformat enthält. Databricks berechnet die Einbettungen mithilfe eines von Ihnen angegebenen Modells und speichert optional die Einbettungen in einer Tabelle im Unity-Katalog. Wenn die Delta-Tabelle aktualisiert wird, bleibt der Index mit der Delta-Tabelle synchronisiert.

    Das folgende Diagramm veranschaulicht diesen Prozess:

    1. Berechnen von Abfrageeinbettungen. Abfrage kann Metadatenfilter enthalten.
    2. Durchführen der Ähnlichkeitssuche zur Identifizierung der relevantesten Dokumente.
    3. Rückgabe der relevantesten Dokumente und Anfügen an die Abfrage.

    Vektordatenbank, Databricks berechnet Einbettungen

  • Option 2: Sie stellen eine Delta-Quelltabelle bereit, die vorab berechnete Einbettungen enthält. Wenn die Delta-Tabelle aktualisiert wird, bleibt der Index mit der Delta-Tabelle synchronisiert.

    Das folgende Diagramm veranschaulicht diesen Prozess:

    1. Abfrage besteht aus Einbettungen und kann Metadatenfilter enthalten.
    2. Durchführen der Ähnlichkeitssuche zur Identifizierung der relevantesten Dokumente. Rückgabe der relevantesten Dokumente und Anfügen an die Abfrage.

    Vektordatenbank, vorab berechnete Einbettungen

  • Option 3 (direkter Zugriff): Sie stellen eine Delta-Quelltabelle bereit, die vorab berechnete Einbettungen enthält. Es gibt keine automatische Synchronisierung, wenn die Delta-Tabelle aktualisiert wird. Sie müssen den Index manuell mithilfe der REST-API aktualisieren, wenn sich die Tabelle einbettet.

    In der folgenden Abbildung wird der Prozess veranschaulicht. Er ist mit Option 2 identisch, mit der Ausnahme, dass der Vektorindex nicht automatisch aktualisiert wird, wenn sich die Delta-Tabelle ändert:

    Vektordatenbank, vorab berechnete Einbettungen ohne automatische Synchronisierung

Um die Mosaic AI-Vektorsuche zu verwenden, müssen Sie Folgendes erstellen:

  • Ein Vektorsuchendpunkt. Dieser Endpunkt dient dem Vektorsuchindex. Sie können den Endpunkt mithilfe der REST-API oder des SDK abfragen und aktualisieren. Endpunkte werden automatisch skaliert, um die Größe des Indexes oder die Anzahl gleichzeitiger Anforderungen zu unterstützen. Anweisungen finden Sie unter Erstellen eines Vektorsuchendpunkts.
  • Ein Vektorsuchindex. Der Vektorsuchindex wird aus einer Delta-Tabelle erstellt und ist für die Bereitstellung ungefährer Pixelwiederholungssuchen in Echtzeit optimiert. Ziel der Suche ist es, Dokumente zu identifizieren, die der Abfrage ähneln. Vektorsuchindizes werden im Unity-Katalog angezeigt und unterliegen diesem. Anweisungen finden Sie unter Erstellen eines Vektorsuchindex.

Wenn die Einbettungen von Databricks berechnet werden sollen, können Sie darüber hinaus einen vordefinierten Foundation Model-APIs-Endpunkt verwenden oder ein Modell erstellen, das den Einbettungsmodell Ihrer Wahl bedient. Anweisungen hierzu finden Sie unter Foundation Model-APIs mit tokenbasierter Bezahlung oder Erstellen von Dienstendpunkten für Modelle der generativen KI.

Um den Endpunkt des Modells abzufragen, verwenden Sie entweder die REST-API oder das Python SDK. Ihre Abfrage kann Filter basierend auf einer beliebigen Spalte in der Delta-Tabelle definieren. Ausführliche Informationen finden Sie unter Verwenden von Filtern für Abfragen, in der API-Referenz oder der Python SDK-Referenz.

Anforderungen

  • Arbeitsbereich mit Unity Catalog-Unterstützung
  • Aktiviertes serverloses Computing
  • Die Quelltabelle muss „Datenfeed ändern“ aktiviert haben.
  • CREATE TABLE-Berechtigungen für Katalogschemas zum Erstellen von Indizes.
  • Aktivierte persönliche Zugriffstoken

Datenschutz und Authentifizierung

Databricks implementiert die folgenden Sicherheitskontrollen zum Schutz Ihrer Daten:

  • Jede Kundenanforderung an die Mosaic AI-Vektorsuche ist logisch isoliert, authentifiziert und autorisiert.
  • Die Mosaic AI-Vektorsuche verschlüsselt alle ruhenden Daten (AES-256) und während der Übertragung (TLS 1.2+).

Die Mosaic AI-Vektorsuche unterstützt zwei Authentifizierungsmodi:

  • Persönliches Zugriffstoken – Sie können ein persönliches Zugriffstoken verwenden, um sich bei der Mosaic AI-Vektorsuche zu authentifizieren. Siehe Persönliches Zugriffstoken für die Authentifizierung. Wenn Sie das SDK in einer Notebookumgebung verwenden, wird automatisch ein PAT-Token für die Authentifizierung generiert.
  • Dienstprinzipaltoken – Ein*e Administrator*in kann ein Dienstprinzipaltoken generieren und an das SDK oder die API übergeben. Siehe Verwenden von Dienstprinzipalen. Für Produktionsanwendungsfälle empfiehlt Databricks die Verwendung eines Dienstprinzipaltokens.

vom Kunden verwaltete Schlüssel (Customer Managed Keys, CMK) werden auf Endpunkten unterstützt, die am oder nach dem 8. Mai 2024 erstellt wurden.

Nachverfolgen von Nutzung und Kosten

In der Tabelle mit dem abrechnungsfähigen Nutzungssystem können Sie die Nutzung und Kosten im Zusammenhang mit Vektorsuchindizes und Endpunkten überwachen. Dies ist eine Beispielabfrage:

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

Ausführliche Informationen zum Inhalt der Abrechnungsnutzungstabelle finden Sie in der Tabellenreferenz für das abrechnungsfähige Nutzungssystem. Weitere Abfragen befinden sich im folgenden Beispiel-Notebook.

Notebook für Vektorsuche-Systemtabellenabfragen

Notebook abrufen

Grenzwerte für die Ressourcen- und Datengröße

In der folgenden Tabelle sind Ressourcen- und Datengrößenbeschränkungen für Vektorsuchendpunkte und Indizes zusammengefasst:

Ressource Granularität Begrenzung
Vektorsuchendpunkte Pro Arbeitsbereich 100
Einbettungen Pro Endpunkt 100.000.000
Einbettungsdimension Pro Index 4096
Indizes Pro Endpunkt 50
Spalten Pro Index 50
Spalten Unterstützte Typen: Bytes, short, integer, long, float, double, boolean, string, timestamp, date
Metadatenfelder Pro Index 20
Indexname Pro Index 128 Zeichen

Die folgenden Grenzwerte gelten für die Erstellung und Aktualisierung von Vektorsuchindizes:

Ressource Granularität Begrenzung
Zeilengröße für Delta-Synchronisierungsindex Pro Index 100 KB
Spaltegröße der Einbettungsquelle für den Delta Sync-Index Pro Index 32764 Bytes
Größenbeschränkung für Massenupertanforderungen für den Direct Vector-Index Pro Index 10 MB
Größenbeschränkung für Massenlöschanforderungen für den Direct Vector-Index Pro Index 10 MB

Die folgenden Grenzwerte gelten für die Abfrage-API.

Resource Granularität Begrenzung
Länge des Abfragetexts Pro Abfrage 32764
Maximale Anzahl zurückgegebener Ergebnisse Pro Abfrage 10.000

Begrenzungen

  • PrivateLink ist derzeit auf ausgewählte Kundengruppen beschränkt. Wenn Sie sich für die Verwendung des Features mit PrivateLink interessieren, wenden Sie sich an Ihren Databricks-Kontovertreter.
  • Berechtigungen auf Zeilen- und Spaltenebene werden nicht unterstützt. Sie können jedoch ihre eigenen ACLs auf Anwendungsebene mithilfe der Filter-API implementieren.

Zusätzliche Ressourcen