Vektoreinbettungen generieren und verwalten

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