Auf dieser Seite wird beschrieben, wie Sie Vektor-Embeddings generieren und speichern. Eine Übersicht finden Sie unter Speicher für Vektoreinbettungen.
Hinweise
Sie benötigen eine Cloud SQL-Instanz, für die die Flags für Vektordatenbanken aktiviert sind.
Vektoreinbettungen basierend auf Zeilendaten generieren
Sie können eine Vektoreinbettung für die Daten einer bestimmten Zeile mithilfe einer Texteinbettungs-API wie Vertex AI oder OpenAI generieren. Sie können jede Text-Embedding-API mit Cloud SQL-Vektoreinbettungen verwenden. Sie müssen jedoch dieselbe Text-Einbettungs-API für die Generierung des Suchstrings verwenden. Sie können verschiedene APIs für Quelldaten und die Abfragevektorisierung nicht kombinieren.
So können Sie beispielsweise eine Vektoreinbettung aus Vertex AI generieren:
from vertexai.language_models import TextEmbeddingModel
def text_embedding() -> list:
"""Text embedding with a Large Language Model."""
model = TextEmbeddingModel.from_pretrained("text-embedding-004")
embeddings = model.get_embeddings(["What is life?"])
for embedding in embeddings:
vector = embedding.values
print(f"Length of Embedding Vector: {len(vector)}")
return vector
if __name__ == "__main__":
text_embedding()
Vektoreinbettungen speichern
Dieser Abschnitt enthält Beispielanweisungen zum Speichern von Vektoreinbettungen in Cloud SQL.
Neue Tabelle mit einer Spalte für die Vektor-Embeddings erstellen
Verwenden Sie die Anweisung CREATE TABLE
mit einer Spalte, die den Datentyp VECTOR
verwendet.
Verwenden Sie die folgende Syntax, um die Tabelle zu erstellen:
CREATE TABLE TABLE_NAME(
id INTEGER
PRIMARY KEY
AUTO_INCREMENT,
title VARCHAR(60),
EMBEDDING_COLUMN_NAME
VECTOR(VECTOR_DIMENSIONS)
USING VARBINARY);
Ersetzen Sie die folgenden Parameter:
TABLE_NAME
: der Name der Tabelle, in der Sie die Einbettungen speichern möchten.EMBEDDING_COLUMN_NAME
: Der Name der Spalte, in der die Einbettung gespeichert wird.VECTOR_DIMENSIONS
: die Anzahl der Dimensionen, die für die Einbettung verwendet werden sollen.
Im folgenden Beispiel enthält die Einbettungsspalte einen Vektor mit drei Dimensionen. Die in dieser Spalte gespeicherten Daten haben den Datentyp VARBINARY
.
CREATE TABLE books(
id INTEGER PRIMARY KEY AUTO_INCREMENT, title VARCHAR(60), embedding VECTOR(3) USING VARBINARY);
Einer vorhandenen Tabelle eine Spalte für die Vektoreinbettung hinzufügen
Verwenden Sie die Anweisung ALTER TABLE
, um einer vorhandenen Tabelle eine Vektor-Embedding-Spalte hinzuzufügen. Die Spalte muss den Datentyp VECTOR
verwenden, um das Einbetten zu ermöglichen.
Im folgenden Beispiel wird eine Einbettungsspalte mit einem Vektor mit drei Dimensionen in die Tabelle eingefügt. Die in dieser Spalte gespeicherten Daten haben den Datentyp VARBINARY
.
ALTER TABLE books
ADD COLUMN embedding
VECTOR(3)
USING VARBINARY;
Vektoreinbettung einfügen
Verwenden Sie INSERT
mit der Funktion string_to_vector
, um einen Vektor mit eingebetteten Werten in eine Tabelle einzufügen.
Im folgenden Beispiel wird ein Vektor mit drei Dimensionen in die Einbettungsspalte eingefügt.
INSERT INTO books
(
title,
embedding)
VALUES (('book title', string_to_vector('[1,2,3]')));
Mehrere Vektoreinbettungen einfügen
Verwenden Sie INSERT
mit der Funktion string_to_vector
, um eine durch Kommas getrennte Liste von Vektor-Embeddings einzufügen.
In der folgenden Anweisung werden zwei Einbettungen mit jeweils einem Vektor mit drei Dimensionen in die Einbettungsspalte eingefügt.
INSERT INTO books
(
title,
embedding)
VALUES
(
(
'book title',
string_to_vector('[1,2,3]')),
('book title', string_to_vector('[4,5,6]')));
Vektoreinbettung einfügen und aktualisieren
Verwenden Sie einen INSERT
- oder UPDATE
-Vorgang auf einer Tabelle mit der Funktion string_to_vector
, um eine Spalte für die Vektor-Embeddings mit der folgenden Syntax hinzuzufügen.
In der folgenden Anweisung wird ein Upsert verwendet, um die Einbettungsspalte mit einem Einbettungsvektor mit drei Dimensionen einzufügen oder zu aktualisieren.
INSERT INTO books
(
id,
title,
embedding)
VALUES
(
(
1,
'book title',
string_to_vector('[1,2,3]')))
ON DUPLICATE KEY UPDATE embedding = string_to_vector('[1,2,3]');
Vektoreinbettung aktualisieren
Verwenden Sie UPDATE
mit der Funktion string_to_vector
, um eine Vektoreinbettung zu aktualisieren.
In der folgenden Anweisung wird UPDATE
verwendet, um die Einbettungsspalte mit einem Vektor mit drei Dimensionen zu aktualisieren.
UPDATE books
SET embedding = string_to_vector('[7,8,9]')
WHERE id = 1;
Vektoreinbettungen abrufen
Verwenden Sie zum Abrufen von Vektoreinbettungen die Cloud SQL-Funktion vector_to_string
zusammen mit dem Namen der Einbettung.
In der folgenden Anweisung wird die Spalte „Einbetten“ abgerufen.
SELECT vector_to_string(embedding) FROM books WHERE id = 1;
Vektoreinbettung löschen
Verwenden Sie DELETE
mit der Funktion string_to_vector
, um eine Vektor-Embedding aus einer Tabelle zu entfernen. Falls ein Vektorindex vorhanden ist, müssen Sie ihn zuerst löschen. Weitere Informationen finden Sie unter Vektorindex löschen.
In der folgenden Anweisung wird DELETE
verwendet, um den Wert in der Spalte „Embedding“ zu löschen.
DELETE FROM books
WHERE embedding = string_to_vector('[1,2,3]');
Nächste Schritte
- Übersicht über die Vektorsuche in Cloud SQL
- Informationen zum Aktivieren und Deaktivieren von Vektoreinbettungen in Ihrer Instanz
- Weitere Informationen zum Erstellen von Vektorindexen
- Weitere Informationen zum Suchen in Vektoreinbettungen