O tipo de dados vetorial permite codificar e processar vetores com eficiência. Ele oferece suporte a aplicações de busca e recuperação semântica de vetores, como as baseadas em RAG, além de operações comuns em cargas de trabalho de processamento vetorial.
Sintaxe do tipo de dados
Use a sintaxe a seguir para especificar o tipo de dados vetorial:
VECTOR( FLOAT <type>, <dimension> )
-- Define a 768-dimension floating-point vector
VECTOR(FLOAT, 768)
type: tipo de dados dos elementos do vetor. Atualmente, apenasFLOATtem suporte.dimension: dimensão do vetor. Deve ser um número inteiro positivo no intervalo[1, 4096].
Limitações
Não use uma coluna vetorial como
PRIMARY KEYouCLUSTER KEY.Colunas vetoriais não são permitidas como chave nas cláusulas
ORDER BY,GROUP BYouJOIN.Esse tipo de dados não aceita operações aritméticas (como +, -, *, /, %), comparações (como =, >, <) nem funções de agregação (como SUM, MIN, MAX, AVG e MEDIAN).
Apenas o mecanismo SQL do MaxCompute oferece suporte ao tipo de dados vetorial.
Trabalhe com o tipo de dados vetorial usando o cliente local (odpscmd), o SDK Python ou o DataWorks.
Sintaxe SQL
SET
Para usar o tipo de dados vetorial, defina os seguintes sinalizadores:
SET odps.sql.type.system.odps2=true;
SET odps.sql.type.vector.enable=true;
DDL
Armazene dados vetoriais diretamente em tabelas do MaxCompute:
-- Create a table with a VECTOR column
CREATE OR REPLACE TABLE products (
description_embedding VECTOR(FLOAT, 3)
);
DML
-
Há duas formas principais de construir dados
VECTOR:Converta o tipo ARRAY<FLOAT> para VECTOR. Durante a conversão, o sistema verifica automaticamente se a dimensão do array corresponde à do vetor de destino.
Gere dados do tipo VECTOR diretamente com a função AI_EMBEDDING.
-
Exemplo
-- You can explicitly or implicitly cast an ARRAY. The array's dimension must match the target VECTOR's dimension. INSERT INTO products select CAST(array(1.1,2.2,3.3) as VECTOR(FLOAT,3)); SELECT * FROM products; -- Result +-----------------------+ | description_embedding | +-----------------------+ | [1.1, 2.2, 3.3] | +-----------------------+
Funções vetoriais
As seguintes funções vetoriais têm suporte atualmente:
VECTOR_SEARCH, L2_DISTANCE, INNER_PRODUCT_DISTANCE e COSINE_DISTANCE.
Índice vetorial
Para aumentar a eficiência da recuperação de vetores em grande escala, o MaxCompute permite criar um índice vetorial no campo VECTOR e ative consultas eficientes de vizinho mais próximo aproximado (ANN). Para mais informações, consulte VECTOR INDEX.