Diese Seite enthält ein Beispiel für einen Workflow, der zeigt, wie die embedding()
-Funktion mit Ihren in Tabellen gespeicherten Daten und pgvector
-Funktionen funktioniert. In diesem Beispiel wird eine Nur-Text-Eingabe verwendet, um ein Ergebnis aus einer Datenbank abzurufen, die auf dem semantischen Parsen der Textbedeutung Durch eine LLM (Large Language Model) basiert.
Beispielszenario
Stellen Sie sich eine Datenbank vor, die auf AlloyDB ausgeführt wird und die folgenden Aspekte aufweist:
Die Datenbank enthält die Tabelle
items
. In jeder Zeile dieser Tabelle wird ein Artikel beschrieben, den Ihr Unternehmen verkauft.Die Tabelle
items
enthält die Spaltecomplaints
. In dieserTEXT
-Spalte werden Käuferbeschwerden gespeichert, die zu den einzelnen Artikeln protokolliert wurden.Die Datenbank kann in den Vertex AI Model Garden eingebunden werden und ermöglicht so Zugriff auf die
text-embedding-005
-Modelle für die englische Sprache.
In dieser Datenbank werden zwar Beschwerden zu Artikeln gespeichert, diese Beschwerden werden jedoch als Nur-Text gespeichert, was Abfragen erschwert. Wenn Sie beispielsweise sehen möchten, welche Artikel die meisten Beschwerden von Kunden haben, die eine falsche Farbversion erhalten haben, können Sie normale SQL-Abfragen auf der Tabelle ausführen und nach verschiedenen Schlüsselwortübereinstimmungen suchen. Bei diesem Ansatz werden jedoch nur Zeilen abgeglichen, die genau diese Keywords enthalten.
Eine einfache SQL-Abfrage wie SELECT * FROM item WHERE complaints LIKE
"%wrong color%"
gibt beispielsweise keine Zeile zurück, in der das Feld complaints
nur The picture shows a blue one, but the one I received was red
enthält.
SQL-Abfragen mit LLM-gestützten Einbettungen können diese Lücke schließen. Wenn Sie Einbettungen anwenden, können Sie die Tabelle in diesem Beispiel nach Elementen abfragen, in denen Beschwerden eine semantische Ähnlichkeit mit einem bestimmten Text-Prompt haben, beispielsweise: „Es hatte die falsche Farbe“.
In den folgenden Schritten wird beschrieben, wie Sie dies in der oben beschriebenen Beispieleinrichtung aktivieren.
Hinweise
Sie müssen die folgenden Anforderungen erfüllen:
Erforderliche Datenbankerweiterung
Die folgenden Erweiterungen müssen in Ihrer AlloyDB-Datenbank installiert sein.
google_ml_integration
-Erweiterung, Version1.2
oder höhervector
-Erweiterung, Version0.5.0.google-1
oder höher
Weitere Informationen zum Installieren und Verwalten von Erweiterungen finden Sie unter Datenbankerweiterungen konfigurieren.
- Legen Sie das Datenbank-Flag
google_ml_integration.enable_model_support
aufoff
fest.
Zugriff auf Modell einrichten
Bevor Sie Einbettungen aus einer AlloyDB-Datenbank generieren können, müssen Sie AlloyDB für die Verwendung mit einem Text-Embedding-Modell konfigurieren.
Wenn Sie mit dem cloudbasierten text-embedding-005
-Modell arbeiten möchten, müssen Sie Ihre Datenbank in Vertex AI einbinden.
Tabelle vorbereiten
Bevor Sie LLM-basierte Abfragen auf den Inhalt der Tabelle items
ausführen, müssen Sie die Tabelle so vorbereiten, dass Einbettungen basierend auf Ihren vorhandenen Daten gespeichert und indexiert werden können.
Spalte zum Speichern von Einbettungen erstellen
Fügen Sie der Tabelle eine Spalte zum Speichern von Einbettungen hinzu.
ALTER TABLE items ADD COLUMN complaint_embedding vector(768);
In diesem Beispiel wird 768
als Argument angegeben, da die text-embedding-005
-Englisch-Modelle diese Anzahl an Dimensionen unterstützen. Weitere Informationen finden Sie unter Embeddings generieren.
Im Beispiel wird der Datentyp vector
auf die Spalte angewendet, damit pgvector
-Funktionen und pgvector
-Operatoren mit den Werten verwendet werden können.
Neue Spalte füllen
Wenn Sie bereits Einbettungen im CSV-Format haben, folgen Sie der Anleitung unter Vektoreinbettungen speichern, um sie zu speichern.
Optional können Sie die Funktion embedding()
verwenden, um diese neue Spalte mit Einbettungen zu füllen, falls in der Spalte complaints
Text gespeichert ist. In dieser Beispielkonfiguration generiert AlloyDB die Einbettungen mit dem text-embedding
-Modell, Version 005
.
UPDATE items SET complaint_embedding = embedding('text-embedding-005', complaints);
In diesem Beispiel wird der real[]
-Rückgabewert von embedding()
implizit in einen vector
-Wert umgewandelt, um den Wert in der zuvor erstellten vector
-Spalte zu speichern.
Index erstellen
Um die Leistung zu verbessern, fügen Sie items
einen Index hinzu, der die Skalarquantisierungstechniken verwendet.
CREATE INDEX complaint_embed_idx ON items
USING ivf (complaint_embedding vector_l2_ops)
WITH (lists = 20, quantizer = 'SQ8');
Weitere Informationen zum Erstellen von ungefähren nächsten Nachbar-Indexen finden Sie unter Indexierung.
LLM-gestützte Abfragen mit bereitgestelltem Text ausführen
Sie können jetzt semantische Abfragen nach nächsten Nachbarn für die Tabelle items
erstellen. In der folgenden Abfrage wird der von pgvector
bereitgestellte Operator <->
verwendet, um die Zeilen der Tabelle nach semantischer Nähe zum Text It was the wrong color
zu sortieren und die zehn häufigsten Beschwerden zurückzugeben. In der Abfrage werden die Werte id
und name
der ersten sortierten Zeile angezeigt.
SELECT id, name FROM items
ORDER BY complaint_embedding::vector
<-> embedding('text-embedding-005', 'It was the wrong color') LIMIT 10;
Nächste Schritte
- Informationen zum Erstellen von KI-gestützten Anwendungen in Google Cloud -Datenbanken mithilfe von pgvector, LLMs und LangChain
- Informationen zum Erstellen eines intelligenten Shopping-Assistenten mit AlloyDB, pgvector und der Modellendpunktverwaltung