Cloud-native Data Warehouse AnalyticDB for PostgreSQL kini menyediakan optimisasi vector engine untuk skenario analisis vektor seperti AIGC dan pengambilan vektor (vector retrieval). Tutorial ini menjelaskan proses lengkap, mulai dari pembuatan instans AnalyticDB for PostgreSQL hingga pelaksanaan analisis vektor.
Prasyarat
-
Anda harus memiliki Akun Alibaba Cloud. Jika belum memilikinya, daftar akun di website resmi Alibaba Cloud.
-
Jika Anda menggunakan AnalyticDB for PostgreSQL untuk pertama kalinya, Anda harus mengotorisasi peran terkait layanan (service-linked role) di Konsol. Ikuti langkah-langkah berikut:
- Masuk ke Konsol AnalyticDB for PostgreSQL.
-
Di pojok kanan atas halaman, klik Create Instance.
-
Pada kotak dialog Create Service Linked Role, klik OK.
Penagihan
Pembuatan instans dikenai biaya komputasi dan penyimpanan. Detail harga tersedia di Harga Produk.
Uji coba gratis
Alibaba Cloud menawarkan uji coba gratis untuk instans Elastic Storage Mode. Jika Anda pengguna baru AnalyticDB for PostgreSQL, Anda dapat mendaftar di halaman Uji Coba Gratis Alibaba Cloud. Jika Anda tidak memenuhi syarat untuk uji coba gratis, buat instans dengan mengikuti prosedur dalam topik ini.
Prosedur
Buat Instans
- Masuk ke Konsol AnalyticDB for PostgreSQL.
-
Di pojok kanan atas halaman, klik Create Instance untuk menuju halaman pembelian.
-
Pada halaman pembelian, konfigurasikan parameter inti untuk instans Anda. Anda dapat membiarkan parameter lain pada nilai default-nya. Untuk informasi lebih lanjut tentang parameter tersebut, lihat Buat instans.
Parameter
Deskripsi
Contoh
Region and Zone
-
Subscription: Metode penagihan prabayar. Anda membayar saat membuat instans. Metode ini hemat biaya untuk beban kerja jangka panjang. Periode langganan yang lebih lama memberikan diskon lebih besar.
-
Pay-as-you-go: Metode penagihan pascabayar yang menagih per jam. Metode ini ideal untuk beban kerja jangka pendek. Anda dapat melepas instans kapan saja untuk menghemat biaya.
Pay-As-You-Go
Product Type
Menentukan lokasi geografis instans.
Anda tidak dapat mengubah wilayah setelah instans dibuat. Kami menyarankan agar Anda membuat instans di wilayah yang sama dengan Instance ECS yang ingin Anda sambungkan. Hal ini memungkinkan komunikasi melalui jaringan internal.
China (Hangzhou): Zone J
Instance resource type
-
Elastic Storage Mode: Mendukung penskalaan disk independen dan penskalaan online yang lancar.
-
ServerlessPro: Anda hanya menentukan sumber daya komputasi yang diperlukan tanpa menyediakan sumber daya penyimpanan sebelumnya.
Storage-elastic Mode
Engine Version
Kami menyarankan Anda memilih 7.0 Standard Edition untuk fungsionalitas yang lebih lengkap. 6.0 Standard Edition juga didukung.
7.0 Standard Edition
Instance Edition
-
High-performance (Basic Edition): Cocok untuk sebagian besar beban kerja analitik bisnis.
-
High-availability Edition: Direkomendasikan untuk beban kerja inti perusahaan.
High-performance (Basic Edition)
Vector engine optimization
Pilih Enable.
Enable
VPC
Pilih ID VPC.
Untuk menghubungkan ke Instance ECS di wilayah yang sama melalui jaringan internal, pilih VPC yang sama dengan Instance ECS tersebut. Anda dapat memilih VPC yang sudah ada atau membuat VPC dan VSwitch sesuai petunjuk di halaman.
vpc-xxxx
vSwitch
Pilih VSwitch dalam VPC tersebut. Jika tidak ada VSwitch yang terdaftar, zona ketersediaan saat ini tidak memiliki sumber daya VSwitch. Anda dapat beralih ke zona ketersediaan lain atau membuat VSwitch di zona saat ini sesuai petunjuk.
vsw-xxxx
-
-
Klik Buy Now, verifikasi pesanan, lalu klik Create Now.
-
Selesaikan pembayaran dan klik Console untuk kembali ke daftar instans.
CatatanInstans AnalyticDB for PostgreSQL memerlukan waktu untuk inisialisasi. Tunggu hingga status berubah menjadi Running sebelum melanjutkan.
Buat akun awal
AnalyticDB for PostgreSQL menyediakan dua jenis pengguna:
-
Pengguna dengan hak istimewa: Akun awal memiliki peran
RDS_SUPERUSERdengan izin penuh ke database. -
Pengguna standar: Tidak memiliki izin default. Pengguna dengan hak istimewa atau pengguna dengan izin
GRANTharus memberikan akses ke objek basis data. Buat dan kelola pengguna.
-
Di panel navigasi kiri, klik Account Management.
-
Klik Create Account. Di jendela Create Account, masukkan nama akun dan atur password. Lalu, klik OK.
Parameter
Deskripsi
Account
Nama akun awal harus memenuhi persyaratan berikut:
-
Hanya boleh berisi huruf kecil, angka, dan garis bawah (_).
-
Harus dimulai dengan huruf kecil dan diakhiri dengan huruf kecil atau angka.
-
Tidak boleh dimulai dengan
gp. -
Panjangnya harus 2 hingga 16 karakter.
New Password dan Confirm Password
Password harus memenuhi persyaratan berikut:
-
Harus berisi karakter dari minimal tiga kategori berikut: huruf kapital, huruf kecil, angka, dan karakter khusus.
-
Karakter khusus yang didukung adalah
!@#$%^&*()_+-=. -
Panjangnya harus 8 hingga 32 karakter.
PentingUntuk keamanan data, ganti password Anda secara berkala dan jangan gunakan kembali password sebelumnya.
-
Konfigurasikan daftar putih IP
Anda dapat melewati langkah ini jika hanya menggunakan DMS untuk mengakses database. Jika Anda menggunakan IDE lokal atau Instance ECS untuk mengakses database, Anda harus mengonfigurasi daftar putih IP. Untuk mendapatkan alamat IP klien, lihat Prasyarat.
-
Di bilah navigasi kiri halaman detail instans, klik Security Controls.
-
Klik Create Whitelist dan konfigurasikan informasi berikut:
Parameter
Deskripsi
Whitelist Name
Nama grup daftar putih baru. Nama harus memenuhi persyaratan berikut:
-
Hanya boleh terdiri dari huruf kecil, angka, atau garis bawah (_).
-
Harus dimulai dengan huruf kecil dan diakhiri dengan huruf kecil atau angka.
-
Panjangnya harus 2 hingga 32 karakter.
IP Addresses
Alamat IP yang akan ditambahkan ke daftar putih. Perhatikan hal berikut:
-
Pisahkan beberapa alamat IP dengan koma (,). Alamat IP duplikat tidak diperbolehkan. Anda dapat menambahkan maksimal 999 alamat IP.
-
Anda dapat menggunakan alamat IP dalam format
10.23.12.24dan Blok CIDR dalam format10.23.12.24/24. CIDR merupakan singkatan dari Classless Inter-Domain Routing. Dalam mode CIDR, /24 menentukan panjang awalan alamat. Panjang awalan dapat berupa bilangan bulat dari 1 hingga 32. -
Mengatur panjang awalan menjadi 0, seperti pada
0.0.0.0/0atau127.0.0.1/0, memungkinkan akses dari alamat IP mana pun. Hal ini menimbulkan risiko keamanan tinggi. Lakukan dengan hati-hati. -
127.0.0.1menolak akses dari semua alamat IP eksternal.
-
-
Klik OK.
Sambungkan ke database
Bagian ini menggunakan tool psql sebagai contoh untuk menunjukkan cara menyambungkan ke database. Untuk informasi tentang penyambungan dengan tool lain, lihat Koneksi klien.
-
Instal psql.
-
Unduh tool psql.
wget https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/181125/cn_zh/1598426198114/adbpg_client_package.el7.x86_64.tar.gzPerintah unduh di atas hanya berlaku jika sistem operasi klien Anda adalah RHEL 7 atau CentOS 7. Untuk versi psql sistem operasi lain, lihat Koneksi klien.
-
Ekstrak paket tool psql.
tar -xzvf adbpg_client_package.el7.x86_64.tar.gz -
Navigasi ke direktori tempat tool psql berada.
cd adbpg_client_package/bin
-
-
Masuk ke database.
-p 5432 -d -U ./psql -h <instance_endpoint> -p 5432 -d <database_name> -U </database_name></instance_endpoint>Untuk mendapatkan titik akhir koneksi:
-
Jika klien dan instans AnalyticDB for PostgreSQL ditempatkan pada Instance ECS di wilayah yang sama dan jenis jaringan yang sama, Anda dapat menggunakan Alamat IP pribadi untuk menyambungkan. Masuk ke Konsol AnalyticDB for PostgreSQL. Klik ID instans target untuk menuju halaman detail instans. Di bilah navigasi kiri, klik Basic Information dan temukan bagian Database Connection Information untuk melihat Internal Endpoint.
-
Jika klien dan instans AnalyticDB for PostgreSQL ditempatkan di wilayah berbeda, pada Instance ECS dengan jenis jaringan berbeda, atau pada sistem di luar Alibaba Cloud, Anda perlu mengajukan Alamat IP publik dan menggunakannya untuk menyambungkan. Untuk informasi lebih lanjut, lihat Kelola alamat IP publik.
Contoh:
psql -h gp-bp13zq652yy4p****-master.gpdb.rds.aliyuncs.com -p 5432 -d postgres -U testuserSaat Anda memasukkan password dan menekan Enter, prompt
postgres=>muncul, menandakan koneksi berhasil. -
Impor data vektor menggunakan SQL
-
Verifikasi bahwa ekstensi pengambilan vektor FastANN telah diinstal.
Jalankan perintah
\dx fastannuntuk memeriksa ekstensi tersebut. Jika perintah mengembalikan informasi tentang FastANN, artinya ekstensi tersebut telah diinstal. Jika tidak, kirim tiket untuk meminta dukungan teknis menginstalnya. -
Unduh data sampel.
Untuk memudahkan pengujian, AnalyticDB for PostgreSQL menyediakan data uji yang dapat Anda unduh dari vector_sample_data.csv.
Data sampel memiliki struktur sebagai berikut:
Kolom
Tipe
Deskripsi
id
bigint
ID.
market_time
timestamp
Waktu kendaraan dirilis ke pasar.
color
varchar(10)
Warna kendaraan.
price
int
Harga kendaraan.
feature
float4[]
Vektor fitur dari gambar kendaraan.
Pada Server Linux, jalankan perintah berikut untuk mengunduh data sampel:
wget https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20230606/uzkx/vector_sample_data.csv -
Impor data.
-
Buat dan beralih ke database baru.
-- Buat database bernama testdb. CREATE DATABASE testdb; -- Beralih ke database baru. \c testdb -
Buat tabel dengan kolom vektor berdasarkan data sampel.
CREATE SCHEMA IF NOT EXISTS vector_test; CREATE TABLE IF NOT EXISTS vector_test.car_info ( id bigint NOT NULL, market_time timestamp, color varchar(10), price int, feature float4[], PRIMARY KEY(id) ) USING heap -- Mesin heap digunakan secara default saat optimisasi vector engine diaktifkan. DISTRIBUTED BY(id); -
Buat indeks.
Dalam tutorial ini, Anda membuat indeks terstruktur untuk bidang seperti market_time, color, dan price, serta indeks vektor untuk vektor fitur dari gambar kendaraan.
-- Ubah format penyimpanan kolom vektor menjadi PLAIN. ALTER TABLE vector_test.car_info ALTER COLUMN feature SET STORAGE PLAIN; -- Buat indeks terstruktur. CREATE INDEX ON vector_test.car_info(market_time); CREATE INDEX ON vector_test.car_info(color); CREATE INDEX ON vector_test.car_info(price); -- Buat indeks vektor. CREATE INDEX ON vector_test.car_info USING ann(feature) WITH (dim='10', pq_enable='0'); -
Muat data sampel ke dalam tabel.
\COPY vector_test.car_info FROM '/DATA_PATH/vector_sample_data.csv';Ganti
/DATA_PATH/vector_sample_data.csvdengan path aktual ke file data sampel yang Anda unduh. Misalnya, jika Anda mengunduh data sampel ke direktori/home, path-nya harus/home/vector_sample_data.csv.Impor yang berhasil akan mengembalikan
COPY 10000.
-
Analisis vektor
Bagian ini memberikan contoh cara melakukan analisis vektor untuk menghitung jarak Euclidean kuadrat, jarak hasil kali titik (dot product), dan kemiripan kosinus (cosine similarity).
Jarak Euclidean kuadrat
Lakukan analisis vektor dan kembalikan jarak Euclidean kuadrat.
SELECT id, l2_squared_distance(feature, array[0.495181661387,0.108697291209,0.181728549067,0.109680543346,0.19713082404,0.0197809514512,0.534227452778,0.442411970815,0.409909873031,0.0975687394505]::float4[]) AS distance
FROM vector_test.car_info
ORDER BY feature <-> array[0.495181661387,0.108697291209,0.181728549067,0.109680543346,0.19713082404,0.0197809514512,0.534227452778,0.442411970815,0.409909873031,0.0975687394505]::float4[]
LIMIT 10;
Contoh output:
id | distance
------+--------------------
2 | 0
1331 | 0.0677967891097069
1543 | 0.079616591334343
5606 | 0.0892329216003418
6423 | 0.0894578248262405
1667 | 0.0903968289494514
8215 | 0.0936210229992867
7801 | 0.0952572822570801
2581 | 0.0965127795934677
2645 | 0.0987173467874527
(10 rows)
Jarak hasil kali titik (kemiripan kosinus)
Lakukan analisis vektor dan kembalikan jarak hasil kali titik. Untuk vektor yang dinormalisasi, jarak hasil kali titik setara dengan kemiripan kosinus.
SELECT id, dp_distance(feature, array[0.495181661387,0.108697291209,0.181728549067,0.109680543346,0.19713082404,0.0197809514512,0.534227452778,0.442411970815,0.409909873031,0.0975687394505]::float4[]) AS similarity
FROM vector_test.car_info
ORDER BY feature <-> array[0.495181661387,0.108697291209,0.181728549067,0.109680543346,0.19713082404,0.0197809514512,0.534227452778,0.442411970815,0.409909873031,0.0975687394505]::float4[]
LIMIT 10;
Contoh output:
id | similarity
------+-------------------
2 | 1
1331 | 0.966101586818695
1543 | 0.960191607475281
5606 | 0.955383539199829
6423 | 0.955271065235138
1667 | 0.954801559448242
8215 | 0.953189492225647
7801 | 0.95237135887146
2581 | 0.951743602752686
2645 | 0.950641334056854
(10 rows)
Pencarian hibrida
Untuk menggabungkan filter terstruktur dengan pencarian vektor tak terstruktur, jalankan kueri SQL berikut:
SELECT id, dp_distance(feature, array[0.495181661387,0.108697291209,0.181728549067,0.109680543346,0.19713082404,0.0197809514512,0.534227452778,0.442411970815,0.409909873031,0.0975687394505]::float4[]) AS similarity
FROM vector_test.car_info
WHERE market_time >= '2020-10-30 00:00:00'
AND market_time < '2021-01-01 00:00:00'
AND color in ('red', 'white', 'blue')
AND price < 100
ORDER BY feature <-> array[0.495181661387,0.108697291209,0.181728549067,0.109680543346,0.19713082404,0.0197809514512,0.534227452778,0.442411970815,0.409909873031,0.0975687394505]::float4[]
LIMIT 10;
Contoh output:
id | similarity
------+-------------------
7645 | 0.922723233699799
8956 | 0.920517802238464
8219 | 0.91210675239563
8503 | 0.895939946174622
5113 | 0.895431876182556
7680 | 0.893448948860168
8433 | 0.893425941467285
3604 | 0.89293098449707
3945 | 0.891274154186249
7153 | 0.891128540039062
(10 rows)
Dokumentasi terkait
Untuk informasi lebih lanjut tentang analisis vektor, lihat Analisis vektor.