En esta página se describe cómo generar y almacenar inserciones vectoriales. Para obtener información general, consulta Almacenamiento de incrustaciones de vectores.
Antes de empezar
Debes tener una instancia de Cloud SQL con las marcas de base de datos de vectores habilitadas.
Generar incrustaciones de vectores a partir de datos de filas
Puedes generar una inserción de vector para los datos de una fila determinada mediante una API de inserción de texto, como Vertex AI o OpenAI. Puedes usar cualquier API de inserciones de texto con las inserciones de vectores de Cloud SQL. Sin embargo, debes usar la misma API de inserción de texto para generar el vector de la cadena de consulta. No puedes combinar diferentes APIs para los datos de origen y la vectorización de consultas.
Por ejemplo, puedes generar una incrustación vectorial a 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()
Almacenar incrustaciones de vectores
En esta sección se proporcionan ejemplos de instrucciones para almacenar inserciones vectoriales en Cloud SQL.
Crear una tabla con una columna de inserción de vector
Usa la instrucción CREATE TABLE
con una columna que utilice el tipo de datos VECTOR
.
Usa la siguiente sintaxis para crear la tabla:
CREATE TABLE TABLE_NAME(
id INTEGER
PRIMARY KEY
AUTO_INCREMENT,
title VARCHAR(60),
EMBEDDING_COLUMN_NAME
VECTOR(VECTOR_DIMENSIONS)
USING VARBINARY);
Sustituye los siguientes parámetros:
TABLE_NAME
: el nombre de la tabla en la que quieras almacenar las inserciones.EMBEDDING_COLUMN_NAME
: el nombre de la columna que almacena la inserción.VECTOR_DIMENSIONS
: número de dimensiones que se van a usar en la inserción.
En el siguiente ejemplo, la columna de inserción 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);
Añadir una columna de inserciones vectoriales a una tabla
Usa la instrucción ALTER TABLE
para añadir una columna de inserción de vector a una tabla. La columna debe usar el tipo de datos VECTOR
para contener la inserción.
En el siguiente ejemplo, se inserta en la tabla una columna de inserción que tiene un vector con tres dimensiones. Los datos almacenados en esta columna tienen el tipo de datos VARBINARY
.
ALTER TABLE books
ADD COLUMN embedding
VECTOR(3)
USING VARBINARY;
Insertar una incrustación de vector
Usa INSERT
con la función string_to_vector
para insertar valores de inserción de vectores en una tabla.
En el siguiente ejemplo, se inserta un vector de tres dimensiones en la columna de inserciones.
INSERT INTO books
(
title,
embedding)
VALUES (('book title', string_to_vector('[1,2,3]')));
Insertar varias incrustaciones de vectores
Usa INSERT
con la función string_to_vector
para insertar una lista de incrustaciones de vectores separadas por comas.
En la siguiente instrucción, se insertan dos inserciones, cada una de ellas con un vector de tres dimensiones, en la columna de inserciones.
INSERT INTO books
(
title,
embedding)
VALUES
(
(
'book title',
string_to_vector('[1,2,3]')),
('book title', string_to_vector('[4,5,6]')));
Insertar o actualizar una incrustación de vector
Usa una operación INSERT
o UPDATE
en una tabla con la función string_to_vector
para añadir una columna de inserción de vector con la siguiente sintaxis.
En la siguiente instrucción, se usa una inserción o actualización para insertar o actualizar la columna de inserción con una inserción 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]');
Actualizar una incrustación de vector
Usa UPDATE
con la función string_to_vector
para actualizar una incrustación de vector.
En la siguiente instrucción, UPDATE
se usa para actualizar la columna de inserción con un vector de tres dimensiones.
UPDATE books
SET embedding = string_to_vector('[7,8,9]')
WHERE id = 1;
Recuperar incrustaciones de vectores
Para recuperar incrustaciones de vectores, usa la función vector_to_string
de Cloud SQL
junto con el nombre de la incrustación.
En la siguiente instrucción, se recupera la columna de inserción para verla.
SELECT vector_to_string(embedding) FROM books WHERE id = 1;
Eliminar una incrustación de vector
Usa DELETE
con la función string_to_vector
para quitar una incrustación de vector de una tabla. Si hay un índice vectorial, primero debes eliminarlo. Para obtener más información, consulta Eliminar un índice vectorial.
En la siguiente instrucción, se usa DELETE
para eliminar el valor de la columna de inserción.
DELETE FROM books
WHERE embedding = string_to_vector('[1,2,3]');
Siguientes pasos
- Consulta el resumen sobre la búsqueda de vectores en Cloud SQL.
- Consulta cómo habilitar e inhabilitar las inserciones vectoriales en tu instancia.
- Consulta cómo crear índices vectoriales.
- Consulta cómo realizar búsquedas en incrustaciones de vectores.