Databricks-Vektorsuche

Wichtig

Dieses Feature ist in den folgenden Regionen als Public Preview verfügbar: canadacentral, centralus, eastus, eastus2, northeurope, southeastasia, westeurope, westus, westus2.

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

Databricks Vector Search ist eine Vektordatenbank, die in die Databricks 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 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.

Databricks Vector Search 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.

Wie funktioniert die Vektorsuche?

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. 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: 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 Databricks-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.

Darüber hinaus müssen Sie, wenn Sie Databricks verwenden möchten, die Einbettungen berechnen lassen, und auch ein Modell erstellen, das den Endpunkt für das Einbettungsmodell bedient. Anweisungen finden Sie unter Erstellen von Foundation Model-Bereitstellungsendpunkten.

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 Vektorsuche ist logisch isoliert, authentifiziert und autorisiert.
  • Die Databricks-Vektorsuche verschlüsselt alle ruhenden Daten (AES-256) und während der Übertragung (TLS 1.2+).

Die Databricks-Vektorsuche unterstützt zwei Authentifizierungsmodi:

  • Persönliches Zugriffstoken – Sie können ein persönliches Zugriffstoken verwenden, um sich bei der 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.

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 10
Einbettungen Pro Endpunkt 100.000.000
Einbettungsdimension Pro Index 4096
Indizes Pro Endpunkt 20
Spalten Pro Index 20
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 für die Vektorsuche.

Ressource Granularität Begrenzung
Länge des Abfragetexts Pro Abfrage 32764
Zahlenergebnisse Pro Abfrage 50

Begrenzungen

  • Die Unterstützung für PrivateLink oder IP-Zugriffslisten ist derzeit auf ausgewählte Kundengruppen beschränkt. Wenn Sie die Funktion „PrivateLink“ oder „IP-Zugriffslisten“ verwenden möchten, wenden Sie sich an den Databricks-Support.
  • Kundenseitig verwaltete Schlüssel (Customer Managed Keys, CMKs)werden nicht für die öffentliche Vorschau unterstützt.
  • Regulierte Arbeitsbereiche werden nicht unterstützt, daher ist diese Funktion nicht HIPAA-konform.
  • 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