Esta página descreve como gerar e armazenar embeddings vetoriais. Para uma visão geral, consulte Armazenamento de embeddings vetoriais .
Antes de começar
Você precisa ter uma instância do Cloud SQL com os sinalizadores de banco de dados de vetor habilitados .
Gerar embeddings vetoriais com base em dados de linha
Você pode gerar uma incorporação vetorial para os dados de uma determinada linha usando uma API de incorporação de texto, como Vertex AI ou OpenAI . Você pode usar qualquer API de incorporação de texto com incorporações vetoriais do Cloud SQL. No entanto, você deve usar a mesma API de incorporação de texto para a geração de vetores de strings de consulta. Não é possível combinar APIs diferentes para dados de origem e vetorização de consultas.
Por exemplo, você pode gerar uma incorporação vetorial do 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()
Armazene embeddings de vetores
Esta seção fornece instruções de exemplo para armazenar embeddings de vetores no Cloud SQL.
Crie uma nova tabela com uma coluna de incorporação de vetores
Use a instrução CREATE TABLE
com uma coluna que usa o tipo de dados VECTOR
.
Use a seguinte sintaxe para criar a tabela:
CREATE TABLE TABLE_NAME(
id INTEGER
PRIMARY KEY
AUTO_INCREMENT,
title VARCHAR(60),
EMBEDDING_COLUMN_NAME
VECTOR(VECTOR_DIMENSIONS)
USING VARBINARY);
Substitua os seguintes parâmetros:
-
TABLE_NAME
: o nome da tabela onde você deseja armazenar os embeddings. -
EMBEDDING_COLUMN_NAME
: o nome da coluna que armazena a incorporação. -
VECTOR_DIMENSIONS
: o número de dimensões a serem usadas para a incorporação.
No exemplo a seguir, a coluna de incorporação possui um vetor com três dimensões. Os dados armazenados nesta coluna têm o tipo de dados VARBINARY
.
CREATE TABLE books(
id INTEGER PRIMARY KEY AUTO_INCREMENT, title VARCHAR(60), embedding VECTOR(3) USING VARBINARY);
Adicionar uma coluna de incorporação de vetor a uma tabela existente
Use a instrução ALTER TABLE
para adicionar uma coluna de incorporação de vetores a uma tabela existente. A coluna deve usar o tipo de dado VECTOR
para conter a incorporação.
No exemplo a seguir, uma coluna de incorporação que possui um vetor com três dimensões é inserida na tabela. Os dados armazenados nesta coluna têm o tipo de dados VARBINARY
.
ALTER TABLE books
ADD COLUMN embedding
VECTOR(3)
USING VARBINARY;
Inserir uma incorporação vetorial
Use INSERT
com a função string_to_vector
para inserir um vetor incorporando valores em uma tabela.
No exemplo a seguir, um vetor com três dimensões é inserido na coluna de incorporação.
INSERT INTO books
(
title,
embedding)
VALUES (('book title', string_to_vector('[1,2,3]')));
Inserir vários embeddings de vetores
Use INSERT
com a função string_to_vector
para inserir uma lista separada por vírgulas de incorporações de vetores.
Na declaração a seguir, dois embeddings, cada um contendo um vetor com três dimensões, são inseridos na coluna de embedding.
INSERT INTO books
(
title,
embedding)
VALUES
(
(
'book title',
string_to_vector('[1,2,3]')),
('book title', string_to_vector('[4,5,6]')));
Inserir um vetor de incorporação
Use uma operação INSERT
ou UPDATE
em uma tabela com a função string_to_vector
para adicionar uma coluna de incorporação de vetor, usando a seguinte sintaxe.
Na instrução a seguir, um upsert é usado para inserir ou atualizar a coluna de incorporação com uma incorporação que contém um vetor com três dimensões.
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]');
Atualizar uma incorporação de vetor
Use UPDATE
com a função string_to_vector
para atualizar uma incorporação de vetor.
Na instrução a seguir, UPDATE
é usado para atualizar a coluna de incorporação com um vetor com três dimensões.
UPDATE books
SET embedding = string_to_vector('[7,8,9]')
WHERE id = 1;
Recuperar embeddings de vetores
Para recuperar embeddings de vetores, use a função vector_to_string
do Cloud SQL junto com o nome do embedding.
Na instrução a seguir, a coluna de incorporação é recuperada para visualização.
SELECT vector_to_string(embedding) FROM books WHERE id = 1;
Excluir uma incorporação de vetor
Use DELETE
com a função string_to_vector
para remover a incorporação de um vetor de uma tabela. Se houver um índice de vetor, você deve excluí-lo primeiro. Para obter mais informações, consulte Remover um índice de vetor .
Na instrução a seguir, DELETE
é usado para excluir o valor na coluna de incorporação.
DELETE FROM books
WHERE embedding = string_to_vector('[1,2,3]');
O que vem a seguir
- Leia a visão geral sobre pesquisa vetorial no Cloud SQL .
- Aprenda como habilitar e desabilitar embeddings de vetores em sua instância .
- Aprenda a criar índices vetoriais .
- Aprenda a realizar pesquisas em embeddings vetoriais .