Cette page explique comment générer et stocker des embeddings vectoriels. Pour obtenir une vue d'ensemble, consultez Stockage des embeddings vectoriels.
Avant de commencer
Si vous utilisez Cloud SQL pour MySQL 8.4 ou une version antérieure, vous avez besoin
d'une instance Cloud SQL avec l'
cloudsql_vectorindicateur de base de données activé pour
générer et stocker des embeddings vectoriels.
Si vous utilisez Cloud SQL pour MySQL 9.7 ou une version ultérieure, vous pouvez générer et stocker des embeddings vectoriels sans définir l'indicateur de base de données cloudsql_vector sur votre instance Cloud SQL.
Toutefois, vous ne pouvez pas créer d'index vectoriels ni effectuer de recherches ANN
sur vos données vectorielles.
Générer des embeddings basés sur des données de ligne
Vous pouvez générer un embedding vectoriel pour les données d'une ligne spécifique, à l'aide d'une API d'embedding de texte telle que Vertex AI ou OpenAI. Vous pouvez utiliser n'importe quelle API d'embedding de texte avec des embeddings vectoriels Cloud SQL. Toutefois, vous devez utiliser la même API d'embedding textuel pour la génération de vecteurs de chaîne de requête. Vous ne pouvez pas combiner différentes API pour les données sources et la vectorisation des requêtes.
Par exemple, vous pouvez générer un embedding vectoriel à partir de 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()
Stocker les embeddings vectoriels
Cette section fournit des exemples d'instructions permettant de stocker des embeddings vectoriels dans Cloud SQL.
Créer une table avec une colonne d'embeddings vectoriels
Utilisez l'instruction CREATE TABLE avec une colonne qui utilise le type de données VECTOR.
Utilisez la syntaxe suivante pour créer la table.
Pour Cloud SQL pour MySQL 8.4 et versions antérieures, utilisez la syntaxe suivante :
CREATE TABLE TABLE_NAME(
id INTEGER
PRIMARY KEY
AUTO_INCREMENT,
title VARCHAR(60),
EMBEDDING_COLUMN_NAME
VECTOR(VECTOR_DIMENSIONS)
USING VARBINARY);
Remplacez les paramètres suivants :
TABLE_NAME: nom de la table dans laquelle vous souhaitez stocker les embeddings.EMBEDDING_COLUMN_NAME: nom de la colonne qui stocke l'embedding.VECTOR_DIMENSIONS: nombre de dimensions à utiliser pour l'embedding.
Dans l'exemple suivant, la colonne d'embedding comporte un vecteur à trois dimensions. Les données stockées dans cette colonne sont de type VARBINARY.
CREATE TABLE books(
id INTEGER PRIMARY KEY AUTO_INCREMENT, title VARCHAR(60), embedding VECTOR(3) USING VARBINARY);
Pour Cloud SQL pour MySQL 9.7 et versions ultérieures, la déclaration du mot clé VARBINARY est facultative et compatible avec les versions antérieures. Vous n'avez pas non plus besoin de spécifier les dimensions du vecteur, qui sont définies par défaut sur 2048.
Pour Cloud SQL pour MySQL 9.7 et versions ultérieures, vous pouvez utiliser la syntaxe suivante :
CREATE TABLE TABLE_NAME(
id INTEGER
PRIMARY KEY
AUTO_INCREMENT,
title VARCHAR(60),
EMBEDDING_COLUMN_NAME
VECTOR([VECTOR_DIMENSIONS])
[USING VARBINARY]);
Pour en savoir plus, consultez la section Type VECTOR dans la documentation MySQL.
Ajouter une colonne d'embeddings vectoriels à une table existante
Utilisez l'instruction ALTER TABLE pour ajouter une colonne d'embeddings vectoriels à une table existante. La colonne doit utiliser le type de données VECTOR pour contenir l'embedding.
Dans l'exemple suivant, une colonne d'embedding comportant un vecteur à trois dimensions est insérée dans la table.
ALTER TABLE books
ADD COLUMN embedding
VECTOR(3)
USING VARBINARY;
Pour MySQL 9.7 :
ALTER TABLE books
ADD COLUMN embedding
VECTOR(3);
Insérer un embedding vectoriel
Utilisez INSERT avec la string_to_vector fonction pour insérer des valeurs d'embedding vectoriel
dans une table.
Dans l'exemple suivant, un vecteur à trois dimensions est inséré dans la colonne d'embedding.
INSERT INTO books
(
title,
embedding)
VALUES (('book title', string_to_vector('[1,2,3]')));
Insérer plusieurs embeddings vectoriels
Utilisez INSERT avec la
string_to_vector fonction
pour insérer une liste d'embeddings vectoriels séparés par des virgules.
Dans l'instruction suivante, deux embeddings, contenant chacun un vecteur à trois dimensions, sont insérés dans la colonne d'embedding.
INSERT INTO books
(
title,
embedding)
VALUES
(
(
'book title',
string_to_vector('[1,2,3]')),
('book title', string_to_vector('[4,5,6]')));
Effectuer une opération upsert sur un embedding vectoriel
Utilisez une opération INSERT ou UPDATE sur une table avec la fonction
string_to_vector
pour ajouter une colonne d'embedding vectoriel, en utilisant la syntaxe suivante.
Dans l'instruction suivante, une opération upsert est utilisée pour insérer ou mettre à jour la colonne d'embedding avec un embedding contenant un vecteur à trois dimensions.
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]');
Mettre à jour un embedding vectoriel
Utilisez UPDATE avec la
string_to_vector fonction
pour mettre à jour un embedding vectoriel.
Dans l'instruction suivante, UPDATE est utilisé pour mettre à jour la colonne d'embedding avec un vecteur à trois dimensions.
UPDATE books
SET embedding = string_to_vector('[7,8,9]')
WHERE id = 1;
Récupérer des embeddings vectoriels
Pour récupérer des embeddings vectoriels, utilisez la fonction Cloud SQL
vector_to_stringavec le nom de l'embedding.
Dans l'instruction suivante, la colonne d'embedding est récupérée pour être affichée.
SELECT vector_to_string(embedding) FROM books WHERE id = 1;
Supprimer un embedding vectoriel
Utilisez DELETE avec la
string_to_vector fonction
pour supprimer un embedding vectoriel d'une table. S'il existe un index vectoriel, vous devez d'abord le supprimer. Pour en savoir plus, consultez
Supprimer un index vectoriel.
Dans l'instruction suivante, DELETE est utilisé pour supprimer la valeur de la colonne d'embedding.
DELETE FROM books
WHERE embedding = string_to_vector('[1,2,3]');
Étape suivante
- Consultez la présentation de la recherche vectorielle sur Cloud SQL.
- Découvrez comment activer et désactiver les embeddings vectoriels sur votre instance.
- Découvrez comment créer des index vectoriels.
- Découvrez comment effectuer des recherches sur des embeddings vectoriels.