Cette page explique comment générer et stocker des embeddings vectoriels. Pour obtenir un aperçu, consultez Stockage de représentations vectorielles continues.
Avant de commencer
Vous devez disposer d'une instance Cloud SQL avec les options de base de données vectorielles activées.
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 de texte 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 :
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'intégration 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);
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. Les données stockées dans cette colonne sont de type VARBINARY
.
ALTER TABLE books
ADD COLUMN embedding
VECTOR(3)
USING VARBINARY;
Insérer un embedding vectoriel
Utilisez INSERT
avec la fonction string_to_vector
pour insérer des valeurs d'embedding de vecteur dans un tableau.
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 fonction string_to_vector
pour insérer une liste d'embeddings vectoriels séparés par des virgules.
Dans l'instruction suivante, deux embeddings, chacun contenant 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 d'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 fonction string_to_vector
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 vectorielles, utilisez la fonction vector_to_string
de Cloud SQL avec 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 fonction string_to_vector
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'intégration.
DELETE FROM books
WHERE embedding = string_to_vector('[1,2,3]');
Étapes suivantes
- 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 de vecteurs.
- Découvrez comment effectuer des recherches sur les embeddings.