Tipe data VECTOR memungkinkan Anda melakukan encoding dan memproses vektor secara efisien. Tipe ini mendukung aplikasi pencarian dan pengambilan vektor semantik, seperti aplikasi berbasis RAG, serta operasi vektor umum yang digunakan dalam beban kerja pemrosesan vektor.
Sintaksis tipe data
Gunakan sintaksis berikut untuk menentukan tipe data VECTOR:
VECTOR( FLOAT <type>, <dimension> )
-- Mendefinisikan vektor floating-point berdimensi 768
VECTOR(FLOAT, 768)type: Tipe data elemen vektor. Saat ini, hanyaFLOATyang didukung.dimension: Dimensi vektor. Nilainya harus merupakan kelipatan positif dari 32, dalam rentang[32, 4096]. Contoh nilai yang valid antara lain 32, 64, 96, dan 128.
Batasan
Kolom VECTOR tidak dapat digunakan sebagai
PRIMARY KEYatauCLUSTER KEY.Kolom VECTOR tidak dapat digunakan sebagai kunci dalam klausa
ORDER BY,GROUP BY, atauJOIN.Tipe data VECTOR tidak mendukung operasi aritmetika (seperti +, -, *, /, %), operasi perbandingan (seperti =, >, <), atau fungsi agregat (seperti SUM, MIN, MAX, AVG, dan MEDIAN).
Hanya mesin SQL MaxCompute yang mendukung tipe data VECTOR.
Anda dapat menggunakan tipe data VECTOR melalui local client (odpscmd), Python SDK, dan DataWorks.
Sintaksis SQL
SET
Untuk menggunakan tipe data VECTOR, atur flag berikut:
SET odps.sql.type.system.odps2=true;
SET odps.sql.type.vector.enable=true;DDL
Anda dapat menyimpan data vektor langsung di tabel MaxCompute:
-- Membuat tabel dengan kolom VECTOR
CREATE OR REPLACE TABLE products (
description_embedding VECTOR(FLOAT, 32)
);DML
Ada dua cara utama untuk membuat data
VECTOR:Lakukan cast dari tipe ARRAY<FLOAT> ke tipe VECTOR. Saat mengonversi data, sistem secara otomatis memeriksa apakah dimensi array sesuai dengan dimensi vektor target.
Gunakan AI_EMBEDDING untuk langsung menghasilkan data bertipe VECTOR.
Contoh
-- Anda dapat melakukan cast eksplisit atau implisit terhadap suatu ARRAY. Dimensi array harus sesuai dengan dimensi VECTOR target. 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] | +-----------------------+
Fungsi VECTOR
Fungsi vektor berikut saat ini didukung:
VECTOR_SEARCH, L2_DISTANCE, INNER_PRODUCT_DISTANCE, dan COSINE_DISTANCE.
VECTOR INDEX
Untuk meningkatkan efisiensi pengambilan vektor berskala besar, MaxCompute mendukung pembuatan indeks vektor pada bidang VECTOR guna mengaktifkan kueri approximate nearest neighbor (ANN) yang efisien. Untuk informasi selengkapnya, lihat VECTOR INDEX.