Auf dieser Seite wird beschrieben, wie Sie Vektoreinbettungen generieren und speichern. Eine Übersicht finden Sie unter Vektoreinbettungsspeicher.
Hinweis
Wenn Sie Cloud SQL for MySQL 8.4 oder eine frühere Version verwenden, benötigen Sie
eine Cloud SQL-Instanz, bei der das
cloudsql_vector Datenbank-Flag aktiviert ist, um
Vektoreinbettungen zu generieren und zu speichern.
Wenn Sie Cloud SQL for MySQL 9.7 oder höher verwenden, können Sie Vektoreinbettungen generieren und speichern, ohne das Datenbank-Flag cloudsql_vector für Ihre Cloud SQL-Instanz festzulegen.
Sie können jedoch keine Vektorindizes erstellen oder ANN-Suchen
in Ihren Vektordaten durchführen.
Vektoreinbettungen auf Basis von Zeilendaten generieren
Sie können eine Vektoreinbettung für die Daten einer bestimmten Zeile generieren, indem Sie eine Text Einbettungs-API wie Vertex AI oder OpenAI verwenden. Sie können jede Text-Einbettungs-API mit Cloud SQL-Vektoreinbettungen verwenden. Sie müssen jedoch dieselbe Texteinbettungs-API für die Vektorgenerierung von Abfragestrings verwenden. Sie können keine verschiedenen APIs für Quelldaten und Vektorisierung von Suchanfragen kombinieren.
Sie können 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
In diesem Abschnitt finden Sie Beispielanweisungen zum Speichern von Vektoreinbettungen in Cloud SQL.
Neue Tabelle mit einer Spalte für Vektoreinbettungen 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.
Verwenden Sie für Cloud SQL for MySQL 8.4 und früher die folgende Syntax:
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 hat 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);
Für Cloud SQL for MySQL 9.7 und höher ist die Deklaration des Schlüsselworts VARBINARY optional und wird zur Abwärtskompatibilität unterstützt. Sie müssen auch die Dimensionen für den Vektor nicht angeben. Der Standardwert ist 2048.
Für Cloud SQL for MySQL 9.7 und höher können Sie die folgende Syntax verwenden:
CREATE TABLE TABLE_NAME(
id INTEGER
PRIMARY KEY
AUTO_INCREMENT,
title VARCHAR(60),
EMBEDDING_COLUMN_NAME
VECTOR([VECTOR_DIMENSIONS])
[USING VARBINARY]);
Weitere Informationen finden Sie unter VECTOR Type in der MySQL-Dokumentation.
Spalte für Vektoreinbettungen zu einer vorhandenen Tabelle hinzufügen
Verwenden Sie die Anweisung ALTER TABLE, um einer vorhandenen Tabelle eine Spalte für Vektoreinbettungen hinzuzufügen. Die Spalte muss den Datentyp VECTOR verwenden, um die Einbettung zu enthalten.
Im folgenden Beispiel wird eine Einbettungsspalte mit einem Vektor mit drei Dimensionen in die Tabelle eingefügt.
ALTER TABLE books
ADD COLUMN embedding
VECTOR(3)
USING VARBINARY;
Für MySQL 9.7:
ALTER TABLE books
ADD COLUMN embedding
VECTOR(3);
Vektoreinbettung einfügen
Verwenden Sie INSERT mit der Funktion string_to_vector, um Werte für Vektoreinbettungen
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
string_to_vector Funktion
um eine durch Kommas getrennte Liste von Vektoreinbettungen einzufügen.
In der folgenden Anweisung werden zwei Einbettungen, die jeweils einen Vektor mit drei Dimensionen enthalten, 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 oder aktualisieren
Verwenden Sie einen INSERT oder UPDATE Vorgang für eine Tabelle mit der
string_to_vector Funktion
um eine Spalte für Vektoreinbettungen hinzuzufügen. Verwenden Sie dazu die folgende Syntax.
In der folgenden Anweisung wird ein Upsert verwendet, um die Einbettungsspalte mit einer Einbettung einzufügen oder zu aktualisieren, die einen Vektor mit drei Dimensionen enthält.
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
string_to_vector Funktion
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
vector_to_string Funktion
zusammen mit dem Namen der Einbettung.
In der folgenden Anweisung wird die Einbettungsspalte abgerufen, um sie anzusehen.
SELECT vector_to_string(embedding) FROM books WHERE id = 1;
Vektoreinbettung löschen
Verwenden Sie DELETE mit der
string_to_vector Funktion
um eine Vektoreinbettung aus einer Tabelle zu entfernen. Wenn 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 Einbettungsspalte zu löschen.
DELETE FROM books
WHERE embedding = string_to_vector('[1,2,3]');
Nächste Schritte
- Lesen Sie die Übersicht zur Vektorsuche in Cloud SQL.
- Informationen zum Aktivieren und Deaktivieren von Vektoreinbettungen in Ihrer Instanz.
- Informationen zum Erstellen von Vektorindizes.
- Informationen zum Ausführen von Suchen in Vektoreinbettungen.