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.
Was ist die Mosaic AI-Vektorsuche?
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.
Die Mosaik-KI-Vektorsuche unterstützt Folgendes:
- Hybride Stichwort-Ähnlichkeitssuche.
- Filtern.
- Zugriffssteuerungslisten (ACCESS Control Lists, ACLs), um Vektorsuchendpunkte zu verwalten.
- Nur ausgewählte Spalten synchronisieren.
- Speichern und synchronisieren Sie generierte Einbettungen.
Wie funktioniert die Mosaik-KI-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.
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:
wobei dist
der euklidische Abstand zwischen der Abfrage q
und dem Indexeintrag x
ist:
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:
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:
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: Delta Sync Index mit von Databricks berechneten Einbettungen 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:
- Berechnen von Abfrageeinbettungen. Abfrage kann Metadatenfilter enthalten.
- Durchführen der Ähnlichkeitssuche zur Identifizierung der relevantesten Dokumente.
- Rückgabe der relevantesten Dokumente und Anfügen an die Abfrage.
Option 2: Delta Sync Index mit selbstverwalteten Einbettungen 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:
- Abfrage besteht aus Einbettungen und kann Metadatenfilter enthalten.
- Durchführen der Ähnlichkeitssuche zur Identifizierung der relevantesten Dokumente. Rückgabe der relevantesten Dokumente und Anfügen an die Abfrage.
Option 3: Direkter Vector Access Index Sie müssen den Index manuell mithilfe der REST-API aktualisieren, wenn sich die Tabelle einbettet.
Das folgende Diagramm veranschaulicht diesen Prozess:
Einrichten der Mosaic AI-Vektorsuche
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. Anweisungen finden Sie unter Erstellen eines Vektorsuchendpunkts.
Endpunkte skalieren automatisch, um sowohl die Größe des Indexes als auch die Anzahl paralleler Anfragen zu bewältigen. Endpunkte werden nicht automatisch herunterskalieren.
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 Anleitungen finden Sie unter Verbinden mit serverlosem Computing.
- Die Quelltabelle muss „Datenfeed ändern“ aktiviert haben. Weitere Anleitungen finden Sie unter Verwenden des Delta Lake-Änderungs-Datenfeeds in Azure Databricks.
- CREATE TABLE-Berechtigungen für Katalogschemas zum Erstellen von Indizes.
- Aktivierte persönliche Zugriffstoken
Die Berechtigung zum Erstellen und Verwalten von Vektorsuchendpunkten wird mithilfe von Zugriffssteuerungslisten konfiguriert. Siehe Vektorsuchendpunkt-ACLs.
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:
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
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
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 | 320.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.
Ressource | Granularität | Begrenzung |
---|---|---|
Länge des Abfragetexts | Pro Abfrage | 32764 |
Maximale Anzahl zurückgegebener Ergebnisse | Pro Abfrage | 10.000 |
Begrenzungen
- Berechtigungen auf Zeilen- und Spaltenebene werden nicht unterstützt. Sie können jedoch ihre eigenen ACLs auf Anwendungsebene mithilfe der Filter-API implementieren.