Genera e gestisci gli embedding vettoriali

Questa pagina descrive come generare e archiviare gli embedding vettoriali. Per una panoramica, consulta Spazio di archiviazione per gli embedding di vettori.

Prima di iniziare

Devi disporre di un'istanza Cloud SQL con i flag di database vettoriale abilitati.

Genera embedding vettoriali in base ai dati delle righe

Puoi generare un embedding vettoriale per i dati di una determinata riga utilizzando un'API di embedding di testo come Vertex AI o OpenAI. Puoi utilizzare qualsiasi API di embedding del testo con gli embedding vettoriali Cloud SQL. Tuttavia, devi utilizzare la stessa API di embedding del testo per la generazione di vettori di stringhe di query. Non puoi combinare API diverse per i dati di origine e la vettorializzazione delle query.

Ad esempio, puoi generare un embedding vettoriale da Vertex AI:

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

Memorizza gli embedding vettoriali

Questa sezione fornisce istruzioni di esempio per archiviare gli incorporamenti vettoriali in Cloud SQL.

Creare una nuova tabella con una colonna di embedding di vettori

Utilizza l'istruzione CREATE TABLE con una colonna che utilizza il tipo di dati VECTOR.

Utilizza la seguente sintassi per creare la tabella:

CREATE TABLE TABLE_NAME(
  id INTEGER
  PRIMARY KEY
    AUTO_INCREMENT,
    title VARCHAR(60),
    EMBEDDING_COLUMN_NAME
      VECTOR(VECTOR_DIMENSIONS)
  USING VARBINARY);

Sostituisci i seguenti parametri:

  • TABLE_NAME: il nome della tabella in cui vuoi memorizzare gli embedding.
  • EMBEDDING_COLUMN_NAME: il nome della colonna che memorizza l'embedding.
  • VECTOR_DIMENSIONS: il numero di dimensioni da utilizzare per l'incorporamento.

Nell'esempio seguente, la colonna di incorporamento ha un vettore con tre dimensioni. I dati archiviati in questa colonna hanno il tipo di dati VARBINARY.

CREATE TABLE books(
  id INTEGER PRIMARY KEY AUTO_INCREMENT, title VARCHAR(60), embedding VECTOR(3) USING VARBINARY);

Aggiungere una colonna di embedding di vettori a una tabella esistente

Utilizza l'istruzione ALTER TABLE per aggiungere una colonna di embedding di vettori a una tabella esistente. La colonna deve utilizzare il tipo di dati VECTOR per contenere l'embedding.

Nell'esempio seguente, nella tabella viene inserita una colonna di embedding contenente un vettore con tre dimensioni. I dati archiviati in questa colonna hanno il tipo di dati VARBINARY.

ALTER TABLE books
ADD COLUMN embedding
  VECTOR(3)
USING VARBINARY;

Inserire un embedding vettoriale

Utilizza INSERT con la funzione string_to_vector per inserire un vettore con valori di embedding in una tabella.

Nell'esempio seguente, un vettore con tre dimensioni viene inserito nella colonna di incorporamento.

INSERT INTO books
  (
    title,
    embedding)
VALUES (('book title', string_to_vector('[1,2,3]')));

Inserire più incorporamenti vettoriali

Utilizza INSERT con la funzione string_to_vector per inserire un elenco di embedding di vettori separati da virgole.

Nella seguente dichiarazione, due embedding, ciascuno contenente un vettore con tre dimensioni, vengono inseriti nella colonna di embedding.

INSERT INTO books
  (
    title,
    embedding)
VALUES
  (
    (
      'book title',
      string_to_vector('[1,2,3]')),
    ('book title', string_to_vector('[4,5,6]')));

Esegui l'upsert di un embedding vettoriale

Utilizza un'operazione INSERT o UPDATE su una tabella con la funzione string_to_vector per aggiungere una colonna di embedding di vettori, utilizzando la seguente sintassi.

Nell'istruzione seguente viene utilizzato un upsert per inserire o aggiornare la colonna embedding con un embedding contenente un vettore con tre dimensioni.

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

Aggiornare un embedding vettoriale

Utilizza UPDATE con la funzione string_to_vector per aggiornare un embedding vettore.

Nell'istruzione seguente, UPDATE viene utilizzato per aggiornare la colonna di embedding con un vettore con tre dimensioni.

UPDATE books
SET embedding = string_to_vector('[7,8,9]')
WHERE id = 1;

Recupera gli embedding vettoriali

Per recuperare gli incorporamenti vettoriali, utilizza la funzione vector_to_string di Cloud SQL insieme al nome dell'embedding.

Nell'istruzione seguente, la colonna di incorporamento viene recuperata per la visualizzazione.

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

Eliminare un embedding vettoriale

Utilizza DELETE con la funzione string_to_vector per rimuovere un embedding vettore da una tabella. Se è presente un indice di vettore, devi prima eliminarlo. Per ulteriori informazioni, consulta la sezione Eliminare un indice di vettore.

Nell'istruzione seguente, DELETE viene utilizzato per eliminare il valore nella colonna di embedding.

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

Passaggi successivi