Genera y administra embeddings de vectores

En esta página, se describe cómo generar y almacenar incorporaciones vectoriales. Para obtener una descripción general, consulta Almacenamiento de embeddings de vectores.

Antes de comenzar

Debes tener una instancia de Cloud SQL con las marcas de base de datos vectoriales habilitadas.

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 OpenAI o Vertex AI. Puedes usar cualquier API de embedding de texto con embeddings de vectores de Cloud SQL. Sin embargo, debes usar la misma API de incorporación de texto para la generación de vectores de cadena 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 instrucciones de ejemplo para almacenar embeddings de vectores en Cloud SQL.

Crea una tabla nueva con una columna de embeddings de vectores

Usa la sentencia CREATE TABLE con una columna que use 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);

Reemplaza los siguientes parámetros:

  • TABLE_NAME: Es el nombre de la tabla en la que deseas almacenar las incorporaciones.
  • EMBEDDING_COLUMN_NAME: Es el nombre de la columna que almacena la incorporación.
  • VECTOR_DIMENSIONS: Es la cantidad de dimensiones que se usarán para la incorporación.

En el siguiente ejemplo, la columna de incorporació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);

Agrega una columna de embeddings de vectores a una tabla existente

Usa la sentencia 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 la incorporación.

En el siguiente ejemplo, se inserta en la tabla una columna de incorporació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;

Inserta un embedding de vectores

Usa INSERT con la función string_to_vector para insertar un vector que incorpore valores 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 función string_to_vector para insertar una lista de incorporaciones de vectores separadas por comas.

En la siguiente sentencia, se insertan dos incorporaciones, cada una con un vector con tres dimensiones, en la columna de incorporación.

INSERT INTO books
  (
    title,
    embedding)
VALUES
  (
    (
      'book title',
      string_to_vector('[1,2,3]')),
    ('book title', string_to_vector('[4,5,6]')));

Inserta y actualiza un embedding de vectores

Usa una operación INSERT o UPDATE en una tabla con la función string_to_vector para agregar una columna de incorporación de vectores con la siguiente sintaxis.

En la siguiente sentencia, se usa una inserción y actualización para insertar o actualizar la columna de incorporación con una incorporació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]');

Actualiza un embedding de vectores

Usa UPDATE con la función string_to_vector para actualizar un embedding de vectores.

En la siguiente sentencia, se usa UPDATE para actualizar la columna de incorporación con un vector con tres dimensiones.

UPDATE books
SET embedding = string_to_vector('[7,8,9]')
WHERE id = 1;

Cómo recuperar embeddings de vectores

Para recuperar embeddings de vectores, usa la función vector_to_string de Cloud SQL junto con el nombre de la embedding.

En la siguiente sentencia, se recupera la columna de incorporación para verla.

SELECT vector_to_string(embedding) FROM books WHERE id = 1;

Borra un embedding de vectores

Usa DELETE con la función string_to_vector para quitar una incorporación de vectores de una tabla. Si hay un índice vectorial, primero debes borrarlo. Para obtener más información, consulta Cómo soltar un índice vectorial.

En la siguiente sentencia, se usa DELETE para borrar el valor de la columna de incorporación.

DELETE FROM books
WHERE embedding = string_to_vector('[1,2,3]');

¿Qué sigue?