Le type de données VECTOR permet d'encoder et de traiter efficacement des vecteurs. Il prend en charge la recherche sémantique par vecteur et les applications de récupération, telles que les applications fondées sur le RAG (Retrieval-Augmented Generation), ainsi que les opérations vectorielles courantes utilisées dans les charges de travail de traitement vectoriel.
Syntaxe du type de données
Utilisez la syntaxe suivante pour spécifier le type de données VECTOR :
VECTOR( FLOAT <type>, <dimension> )
-- Define a 768-dimension floating-point vector
VECTOR(FLOAT, 768)
type: type de données des éléments du vecteur. Actuellement, seul le typeFLOATest pris en charge.dimension: dimension du vecteur. Elle doit être un multiple positif de 32, compris dans la plage[32, 4096]. Par exemple, 32, 64, 96 et 128 sont des valeurs valides.
Limitations
Une colonne VECTOR ne peut pas servir de
PRIMARY KEYni deCLUSTER KEY.Une colonne VECTOR ne peut pas être utilisée comme clé dans les clauses
ORDER BY,GROUP BYouJOIN.Le type de données VECTOR ne prend pas en charge les opérations arithmétiques (telles que +, -, *, /, %), les opérations de comparaison (telles que =, >, <) ni les fonctions d'agrégation (telles que SUM, MIN, MAX, AVG et MEDIAN).
Seul le moteur SQL MaxCompute prend en charge le type de données VECTOR.
Vous pouvez manipuler le type de données VECTOR à l'aide du client local (odpscmd), du SDK Python et de DataWorks.
Syntaxe SQL
SET
Pour utiliser le type de données VECTOR, définissez les indicateurs suivants :
SET odps.sql.type.system.odps2=true;
SET odps.sql.type.vector.enable=true;
DDL
Vous pouvez stocker directement des données VECTOR dans des tables MaxCompute :
-- Create a table with a VECTOR column
CREATE OR REPLACE TABLE products (
description_embedding VECTOR(FLOAT, 32)
);
DML
-
Il existe deux principales méthodes pour construire des données de type
VECTOR.Convertissez le type ARRAY<FLOAT> en type VECTOR. Lors de la conversion, le système vérifie automatiquement si la dimension du tableau correspond à la dimension cible du vecteur.
Utilisez la fonction AI_EMBEDDING pour générer directement des données de type VECTOR.
-
Exemple
-- 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, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0) as VECTOR(FLOAT, 32)); SELECT * FROM products; -- Result +-----------------------+ | description_embedding | +-----------------------+ | [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0] | +-----------------------+
Fonctions vectorielles
Les fonctions vectorielles suivantes sont actuellement prises en charge :
VECTOR_SEARCH, L2_DISTANCE, INNER_PRODUCT_DISTANCE et COSINE_DISTANCE.
Index vectoriel
Pour améliorer encore l'efficacité de la récupération vectorielle à grande échelle, MaxCompute permet de créer un index vectoriel sur le champ VECTOR afin d'activer des requêtes efficaces de plus proches voisins approximatifs (ANN). Pour plus d'informations, consultez la rubrique VECTOR INDEX.