Questa pagina descrive come generare e archiviare gli embedding vettoriali. Per una panoramica, consulta Archiviazione di vector embedding.
Prima di iniziare
Se utilizzi Cloud SQL per MySQL 8.4 o versioni precedenti, devi avere
un'istanza Cloud SQL con il flag di database
cloudsql_vector abilitato per
generare e archiviare gli embedding vettoriali.
Se utilizzi Cloud SQL per MySQL 9.7 o versioni successive, puoi generare e archiviare gli embedding vettoriali senza impostare il flag di database cloudsql_vector sull'istanza Cloud SQL.
Tuttavia, non puoi creare indici vettoriali o eseguire ricerche ANN
sui dati vettoriali.
Generare 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 text embedding con gli embedding vettoriali di Cloud SQL. Tuttavia, devi utilizzare la stessa API di text embedding per la generazione di vettori di stringhe di query. Non puoi combinare API diverse per la vettorializzazione dei dati di origine e 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()
Archiviare gli embedding vettoriali
Questa sezione fornisce esempi di istruzioni per l'archiviazione di embedding vettoriali in Cloud SQL.
Creare una nuova tabella con una colonna di vector embedding
Utilizza l'istruzione CREATE TABLE con una colonna che utilizza il tipo di dati VECTOR.
Utilizza la seguente sintassi per creare la tabella.
Per Cloud SQL per MySQL 8.4 e versioni precedenti, utilizza la seguente sintassi:
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 archiviare gli embedding.EMBEDDING_COLUMN_NAME: il nome della colonna che memorizza l'embedding.VECTOR_DIMENSIONS: il numero di dimensioni da utilizzare per l'embedding.
Nell'esempio seguente, la colonna di embedding 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);
Per Cloud SQL per MySQL 9.7 e versioni successive, la dichiarazione della parola chiave VARBINARY è facoltativa e supportata per la compatibilità con le versioni precedenti. Inoltre, non devi specificare le dimensioni del vettore, che per impostazione predefinita è 2048.
Per Cloud SQL per MySQL 9.7 e versioni successive, puoi utilizzare la seguente sintassi:
CREATE TABLE TABLE_NAME(
id INTEGER
PRIMARY KEY
AUTO_INCREMENT,
title VARCHAR(60),
EMBEDDING_COLUMN_NAME
VECTOR([VECTOR_DIMENSIONS])
[USING VARBINARY]);
Per saperne di più, consulta la sezione Il tipo VECTOR nella documentazione di MySQL.
Aggiungere una colonna di vector embedding a una tabella esistente
Utilizza l'istruzione ALTER TABLE per aggiungere una colonna di vector embedding 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 con un vettore con tre dimensioni.
ALTER TABLE books
ADD COLUMN embedding
VECTOR(3)
USING VARBINARY;
Per MySQL 9.7:
ALTER TABLE books
ADD COLUMN embedding
VECTOR(3);
Inserire un embedding vettoriale
Utilizza INSERT con la string_to_vector funzione per inserire i valori di embedding
vettoriali in una tabella.
Nell'esempio seguente, nella colonna di embedding viene inserito un vettore con tre dimensioni.
INSERT INTO books
(
title,
embedding)
VALUES (('book title', string_to_vector('[1,2,3]')));
Inserire più embedding vettoriali
Utilizza INSERT con la
string_to_vector funzione
per inserire un elenco separato da virgole di embedding vettoriali.
Nell'istruzione seguente, nella colonna di embedding vengono inseriti due embedding, ognuno contenente un vettore con tre dimensioni.
INSERT INTO books
(
title,
embedding)
VALUES
(
(
'book title',
string_to_vector('[1,2,3]')),
('book title', string_to_vector('[4,5,6]')));
Eseguire 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 vector embedding, utilizzando la seguente sintassi.
Nell'istruzione seguente, viene utilizzato un upsert per inserire o aggiornare la colonna di embedding con un embedding che contiene 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
string_to_vector funzione
per aggiornare un embedding vettoriale.
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;
Recuperare gli embedding vettoriali
Per recuperare gli embedding vettoriali, utilizza la funzione Cloud SQL
vector_to_stringinsieme al nome dell'embedding.
Nell'istruzione seguente, la colonna di embedding viene recuperata per la visualizzazione.
SELECT vector_to_string(embedding) FROM books WHERE id = 1;
Eliminare un embedding vettoriale
Utilizza DELETE con la
string_to_vector funzione
per rimuovere un embedding vettoriale da una tabella. Se è presente un indice vettoriale, devi prima eliminarlo. Per saperne di più, consulta
Eliminare un indice vettoriale.
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
- Leggi la panoramica sulla ricerca vettoriale in Cloud SQL.
- Scopri come attivare e disattivare gli embedding vettoriali sull'istanza.
- Scopri come creare indici vettoriali.
- Scopri come eseguire ricerche sugli embedding vettoriali.