En esta página, se describe cómo generar y almacenar embeddings de vectores. Para obtener una descripción general, consulta Almacenamiento de embeddings de vectores.
Antes de comenzar
Si usas Cloud SQL para MySQL 8.4 o versiones anteriores, necesitas
una instancia de Cloud SQL con la
cloudsql_vector marca de base de datos habilitada para
generar y almacenar embeddings de vectores.
Si usas Cloud SQL para MySQL 9.7 o versiones posteriores, puedes generar y almacenar embeddings de vectores sin configurar la marca de base de datos cloudsql_vector en tu instancia de Cloud SQL.
Sin embargo, no puedes crear índices de vectores ni realizar búsquedas ANN
en tus datos de vectores.
Genera embeddings de vectores según los datos de las filas
Puedes generar un embedding de vectores para los datos de una fila determinada mediante una API de embedding de texto, como Vertex AI o OpenAI. Puedes usar cualquier API de embedding de texto con embeddings de vector de Cloud SQL. Sin embargo, debes usar la misma API de embedding de texto para la generación de vectores de cadenas de consulta. No puedes combinar diferentes APIs para los datos de origen y la vectorización de consultas.
Por ejemplo, puedes generar un embedding de vectores desde 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()
Almacena embeddings de vectores
En esta sección, se proporcionan sentencias de ejemplo para almacenar embeddings de vector en Cloud SQL.
Crea una tabla nueva con una columna de embeddings de vectores
Usa la instrucción CREATE TABLE con una columna que use el tipo de datos VECTOR.
Usa la siguiente sintaxis para crear la tabla.
Para Cloud SQL para MySQL 8.4 y versiones anteriores, usa la siguiente sintaxis:
CREATE TABLE TABLE_NAME(
id INTEGER
PRIMARY KEY
AUTO_INCREMENT,
title VARCHAR(60),
EMBEDDING_COLUMN_NAME
VECTOR(VECTOR_DIMENSIONS)
USING VARBINARY);
Reemplaza los siguientes parámetros:
TABLE_NAME: Es el nombre de la tabla en la que deseas almacenar los embeddings.EMBEDDING_COLUMN_NAME: Es el nombre de la columna que almacena el embedding.VECTOR_DIMENSIONS: Es la cantidad de dimensiones que se usarán para el embedding.
En el siguiente ejemplo, la columna de embedding tiene un vector con tres dimensiones. Los datos almacenados en esta columna tienen el tipo de datos VARBINARY.
CREATE TABLE books(
id INTEGER PRIMARY KEY AUTO_INCREMENT, title VARCHAR(60), embedding VECTOR(3) USING VARBINARY);
Para Cloud SQL para MySQL 9.7 y versiones posteriores, declarar la palabra clave VARBINARY es opcional y compatible con versiones anteriores. Tampoco necesitas especificar las dimensiones del vector, que se establece de forma predeterminada en 2048.
Para Cloud SQL para MySQL 9.7 y versiones posteriores, puedes usar la siguiente sintaxis:
CREATE TABLE TABLE_NAME(
id INTEGER
PRIMARY KEY
AUTO_INCREMENT,
title VARCHAR(60),
EMBEDDING_COLUMN_NAME
VECTOR([VECTOR_DIMENSIONS])
[USING VARBINARY]);
Para obtener más información, consulta The VECTOR Type en la documentación de MySQL.
Agrega una columna de embeddings de vectores a una tabla existente
Usa la instrucción ALTER TABLE para agregar una columna de embeddings de vectores a una tabla existente. La columna debe usar el tipo de datos VECTOR para contener el embedding.
En el siguiente ejemplo, se inserta en la tabla una columna de embedding que tiene un vector con tres dimensiones.
ALTER TABLE books
ADD COLUMN embedding
VECTOR(3)
USING VARBINARY;
Para MySQL 9.7:
ALTER TABLE books
ADD COLUMN embedding
VECTOR(3);
Inserta un embedding de vectores
Usa INSERT con la funciónstring_to_vector para insertar valores de embeddings de vectores
en una tabla.
En el siguiente ejemplo, se inserta un vector con tres dimensiones en la columna de embedding.
INSERT INTO books
(
title,
embedding)
VALUES (('book title', string_to_vector('[1,2,3]')));
Inserta varios embeddings de vectores
Usa INSERT con la
string_to_vector función
para insertar una lista separada por comas de embeddings de vectores.
En la siguiente instrucción, se insertan dos embeddings, cada uno con un vector con tres dimensiones, en la columna de embedding.
INSERT INTO books
(
title,
embedding)
VALUES
(
(
'book title',
string_to_vector('[1,2,3]')),
('book title', string_to_vector('[4,5,6]')));
Actualizar o insertar un embedding de vector
Usa una operación INSERT o UPDATE en una tabla con la
string_to_vector función
para agregar una columna de embeddings de vectores con la siguiente sintaxis.
En la siguiente sentencia, se usa una operación de actualización o inserción para insertar o actualizar la columna de embedding con un embedding que contiene un vector con tres dimensiones.
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]');
Actualiza un embedding de vectores
Usa UPDATE con la
string_to_vector función
para actualizar un embedding de vectores.
En la siguiente instrucción, se usa UPDATE para actualizar la columna de embedding con un vector con tres dimensiones.
UPDATE books
SET embedding = string_to_vector('[7,8,9]')
WHERE id = 1;
Recupera embeddings de vectores
Para recuperar embeddings de vectores, usa la función de Cloud SQL
vector_to_stringjunto con el nombre del embedding.
En la siguiente instrucción, se recupera la columna de embedding para verla.
SELECT vector_to_string(embedding) FROM books WHERE id = 1;
Borra un embedding de vectores
Usa DELETE con la
string_to_vector función
para quitar un embedding de vectores de una tabla. Si hay un índice de vectores, primero debes borrarlo. Para obtener más información, consulta
Quita un índice de vectores.
En la siguiente instrucción, se usa DELETE para borrar el valor de la columna de embedding.
DELETE FROM books
WHERE embedding = string_to_vector('[1,2,3]');
¿Qué sigue?
- Lee la descripción general sobre la búsqueda de vectores en Cloud SQL.
- Obtén información para habilitar y, también, inhabilitar los embeddings de vectores en tu instancia.
- Obtén información para crear índices de vectores.
- Obtén información para realizar búsquedas en embeddings de vectores.