Vektoreinbettungen generieren und verwalten

Auf dieser Seite wird beschrieben, wie Sie Vektoreinbettungen generieren und speichern. Eine Übersicht finden Sie unter Vektoreinbettungsspeicher.

Hinweise

Sie benötigen eine Cloud SQL-Instanz, in der die Vektordatenbank-Flags aktiviert sind.

Vektoreinbettungen auf Grundlage von Zeilendaten generieren

Sie können eine Vektoreinbettung für die Daten einer bestimmten Zeile mit einer Texteinbettungs-API wie Vertex AI oder OpenAI generieren. Sie können eine beliebige Text Embedding API mit Cloud SQL-Vektoreinbettungen verwenden. Sie müssen jedoch dieselbe Text-Embedding-API für die Vektorgenerierung von Anfragestrings verwenden. Sie können keine verschiedenen APIs für Quelldaten und die Vektorisierung von Anfragen 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:

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);

Einer vorhandenen Tabelle eine Spalte für Vektoreinbettungen hinzufügen

Mit der Anweisung ALTER TABLE können Sie einer vorhandenen Tabelle eine Spalte für Vektoreinbettungen hinzufügen. Die Spalte muss den Datentyp VECTOR für das Einbettungs-Array verwenden.

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 string_to_vector-Funktion, um Vektoreinbettungswerte 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 Vektoreinbettungen einzufügen.

In der folgenden Anweisung werden zwei Einbettungen eingefügt, die jeweils einen Vektor mit drei Dimensionen enthalten.

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 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 „Einbettung“ abgerufen, um sie anzusehen.

SELECT vector_to_string(embedding) FROM books WHERE id = 1;

Vektoreinbettung löschen

Verwenden Sie DELETE mit der Funktion string_to_vector, 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 Spalte „Embedding“ zu löschen.

DELETE FROM books
WHERE embedding = string_to_vector('[1,2,3]');

Nächste Schritte