AnalyticDB for PostgreSQL menyediakan fitur optimisasi Vector Engine untuk skenario analisis vektor, seperti AIGC dan pengambilan vektor. Tutorial ini memandu Anda melalui seluruh proses, mulai dari membuat instans AnalyticDB for PostgreSQL hingga melakukan analisis vektor.
Persiapan
Diperlukan Akun Alibaba Cloud. Jika belum memiliki akun, Anda dapat mendaftar di situs resmi Alibaba Cloud.
Otorisasi peran terkait layanan. Saat pertama kali menggunakan AnalyticDB for PostgreSQL, Anda harus mengotorisasi pembuatan peran terkait layanan di Konsol. Untuk melakukannya, ikuti langkah-langkah berikut:
- Login ke Konsol AnalyticDB for PostgreSQL.
Di pojok kanan atas halaman, klik Create Instance.
Pada kotak dialog Create Service Linked Role yang muncul, klik OK.
Penagihan
Saat membuat instans, Anda akan dikenai biaya untuk sumber daya komputasi dan penyimpanannya. Untuk informasi lebih lanjut, lihat Harga.
Uji coba gratis
Alibaba Cloud menawarkan uji coba gratis untuk instans mode Elastic Storage. Jika Anda pengguna baru AnalyticDB for PostgreSQL, Anda dapat mengunjungi Uji Coba Gratis Alibaba Cloud untuk mengajukan uji coba gratis. Jika tidak memenuhi syarat untuk uji coba gratis, ikuti langkah-langkah dalam topik ini untuk membuat instans di Konsol.
Prosedur
Buat instans
- Login ke Konsol AnalyticDB for PostgreSQL.
Di pojok kanan atas halaman, klik Create Instance untuk membuka halaman pembelian.
Pada halaman pembelian instans, konfigurasikan parameter inti untuk memilih tipe instans secara cepat. Anda dapat mempertahankan nilai default untuk parameter lainnya. Untuk informasi lebih lanjut tentang parameter tersebut, lihat Buat instans.
Item Konfigurasi
Deskripsi
Contoh untuk Tutorial Ini
Product Type
Subscription: Ini adalah metode penagihan berlangganan. Anda membayar di muka saat membuat instans. Metode ini cocok untuk penggunaan jangka panjang dan lebih hemat biaya dibandingkan pay-as-you-go. Semakin lama durasi langganan, semakin tinggi diskon yang diberikan.
Pay-as-you-go: Ini adalah metode penagihan pasca bayar. Anda ditagih per jam. Metode ini cocok untuk penggunaan jangka pendek. Anda dapat melepas instans segera setelah selesai digunakan untuk menghemat biaya.
Pay-as-you-go
Region and Zone
Lokasi geografis instans.
Anda tidak dapat mengubah wilayah dan zona setelah instans dibuat. Buat instans di wilayah yang sama dengan Instance ECS yang ingin Anda hubungkan. Hal ini memungkinkan interkoneksi layanan melalui jaringan internal.
China (Hangzhou): Zona J
Instance Resource Type
Elastic Storage Mode: Mendukung scale-out disk independen dan scale-out online yang lancar.
Serverless Pro: Tentukan hanya sumber daya komputasi yang diperlukan. Anda tidak perlu memesan sumber daya penyimpanan.
Elastic Storage Mode
Database Engine Version
Pilih 7.0 Standard Edition untuk pengalaman fitur yang lebih lengkap. 6.0 Standard Edition juga didukung.
7.0 Standard Edition
Instance Edition
High-performance (Basic Edition): Cocok untuk sebagian besar skenario analisis bisnis.
High-availability Edition: Direkomendasikan untuk layanan bisnis inti.
High-performance (Basic Edition)
Vector Engine Optimization
Pilih Enable.
Enable
Virtual Private Cloud
Pilih ID VPC.
Untuk menginterkoneksikan dengan 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 di dalam VPC. Jika tidak tersedia vSwitch, berarti tidak ada sumber daya vSwitch di zona tersebut. Anda dapat beralih ke zona lain atau membuat vSwitch di zona saat ini sesuai petunjuk di halaman.
vsw-xxxx
Klik Buy Now, konfirmasi informasi pesanan, lalu klik Activate Now.
Setelah pembayaran selesai, klik Management Console untuk menuju daftar instans dan melihat instans baru.
CatatanInisialisasi instans AnalyticDB for PostgreSQL memerlukan waktu. Tunggu hingga status instans berubah menjadi Running sebelum melanjutkan ke langkah berikutnya.
Buat akun awal
AnalyticDB for PostgreSQL menyediakan dua jenis pengguna:
Pengguna dengan hak istimewa: Akun awal adalah pengguna dengan hak istimewa yang memiliki role RDS_SUPERUSER. Role ini memberikan semua izin operasional pada database.
Pengguna biasa: Secara default, pengguna biasa tidak memiliki izin apa pun. Pengguna dengan hak istimewa, atau pengguna lain yang memiliki izin GRANT, harus secara eksplisit memberikan izin pada objek basis data kepada pengguna biasa. Untuk informasi lebih lanjut tentang cara membuat pengguna biasa, lihat Buat dan kelola pengguna.
Di panel navigasi sebelah kiri, klik Account Management.
Klik Create Account. Di jendela Create Account, masukkan nama akun, atur password, lalu klik OK.
Parameter
Deskripsi
Account
Nama akun awal.
Terdiri dari huruf kecil, angka, dan garis bawah (_).
Harus dimulai dengan huruf kecil dan diakhiri dengan huruf kecil atau angka.
Tidak boleh dimulai dengan gp.
Panjangnya antara 2 hingga 16 karakter.
New Password dan Confirm Password
Password akun awal.
Harus mengandung minimal tiga dari jenis karakter berikut: huruf kapital, huruf kecil, angka, dan karakter khusus.
Karakter khusus termasuk
! @ # $ % ^ & * ( ) _ + - =.Panjangnya antara 8 hingga 32 karakter.
PentingUntuk keamanan, ganti password Anda secara berkala dan hindari penggunaan ulang password lama.
Konfigurasi daftar putih
Jika hanya menggunakan Data Management (DMS) untuk mengakses instans, Anda dapat melewati langkah ini. Namun, jika mengakses database dari lingkungan pengembangan terintegrasi (IDE) lokal atau Instance ECS, Anda harus mengonfigurasi Daftar putih alamat IP. Untuk mendapatkan alamat IP client, lihat Persiapan.
Di panel navigasi sebelah kiri halaman detail instans, klik Security Controls.
Klik Create Whitelist dan konfigurasikan parameter berikut:
Konfigurasi
Deskripsi
Whitelist Name
Nama grup daftar putih baru. Nama harus memenuhi persyaratan berikut:
Terdiri dari huruf kecil, angka, dan garis bawah (_).
Dimulai dengan huruf kecil dan diakhiri dengan huruf kecil atau angka.
Panjangnya antara 2 hingga 32 karakter.
IP Addresses
Alamat IP yang akan ditambahkan ke daftar putih. Perhatikan hal berikut:
Pisahkan beberapa alamat IP dengan koma (,). Anda dapat menambahkan hingga 999 alamat IP unik.
Format yang didukung adalah alamat IP spesifik, seperti 10.23.12.24, dan Blok CIDR, seperti 10.23.12.24/24. CIDR merupakan singkatan dari Classless Inter-Domain Routing. Angka setelah garis miring (/) menunjukkan panjang awalan, yang dapat berkisar antara 1 hingga 32.
Jika Anda mengatur panjang awalan menjadi 0, seperti 0.0.0.0/0 atau 127.0.0.1/0, semua alamat IP dapat mengakses instans. Hal ini menimbulkan risiko keamanan tinggi. Gunakan pengaturan ini dengan hati-hati.
Alamat IP 127.0.0.1 memblokir akses dari semua alamat IP eksternal.
Klik OK.
Hubungkan ke database
Bagian ini menggunakan tool psql sebagai contoh untuk menunjukkan cara login ke database. Untuk informasi tentang cara menghubungkan menggunakan tool lain, lihat Koneksi client.
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 unduhan di atas hanya berlaku jika sistem operasi client adalah RHEL 7 atau CentOS 7. Untuk menggunakan versi lain dari tool psql, lihat Koneksi client.
Ekstrak tool psql.
tar -xzvf adbpg_client_package.el7.x86_64.tar.gzMasuk ke direktori tempat tool psql berada.
cd adbpg_client_package/bin
Login ke database.
./psql -h <Endpoint of the AnalyticDB for PostgreSQL instance> -p 5432 -d <Database to connect to> -U <Account of the AnalyticDB for PostgreSQL instance>Untuk mendapatkan titik akhir:
Jika klien dideploy pada instance ECS yang berada di wilayah yang sama dan memiliki jenis jaringan yang sama dengan instans AnalyticDB for PostgreSQL, Anda dapat menggunakan titik akhir internal untuk terhubung. Masuk ke konsol AnalyticDB for PostgreSQL, lalu klik ID instans target untuk membuka halaman detail instans. Di panel navigasi sebelah kiri, klik Basic Information. Pada bagian Database Connection Information, Anda dapat melihat Internal Endpoint.
Jika client 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 meminta Titik akhir publik dan menggunakannya untuk menghubungkan. Untuk informasi lebih lanjut, lihat Kelola titik akhir publik.
Berikut adalah contoh perintah koneksi:
psql -h gp-bp13zq652yy4p****-master.gpdb.rds.aliyuncs.com -p 5432 -d postgres -U testuserTekan Enter dan masukkan password. Jika sistem menampilkan
postgres=>, koneksi berhasil.
Impor data vektor menggunakan SQL
Konfirmasi bahwa ekstensi pengambilan vektor FastANN telah diinstal.
Anda dapat menjalankan perintah
\dx fastannuntuk memeriksa apakah ekstensi tersebut telah diinstal. Jika informasi tentang ekstensi FastANN dikembalikan, berarti ekstensi tersebut telah diinstal. Jika tidak ada informasi yang dikembalikan, ajukan Tiket untuk meminta instalasi.Anda dapat mengunduh data uji.
Untuk tujuan pengujian, AnalyticDB for PostgreSQL menyediakan data sampel. Untuk mengunduh data tersebut, klik vector_sample_data.csv.
Skema tabel data sampel adalah sebagai berikut.
Field
Type
Deskripsi
id
bigint
ID.
market_time
timestamp
Waktu mobil diluncurkan.
color
varchar(10)
Warna mobil.
price
int
Harga mobil.
feature
float4[]
Vektor fitur foto mobil.
Perintah untuk mengunduh data sampel pada Server Linux adalah sebagai berikut.
wget https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20230606/uzkx/vector_sample_data.csvImpor data.
Buat dan alihkan ke database.
-- Buat database bernama testdb. CREATE DATABASE testdb; -- Alihkan ke database tersebut. \c testdbBuat tabel yang berisi field 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 -- Jika optimisasi mesin pencarian vektor diaktifkan saat membuat instans, mesin default-nya adalah heap. DISTRIBUTED BY(id);Buat indeks.
Dalam tutorial ini, indeks terstruktur dibuat untuk field seperti waktu peluncuran mobil, warna, dan harga, serta indeks vektor dibuat untuk vektor fitur foto mobil.
-- Ubah format penyimpanan field 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 data.
\COPY vector_test.car_info FROM '/DATA_PATH/vector_sample_data.csv';Ganti
/DATA_PATH/vector_sample_data.csvdalam contoh dengan path tempat file data sampel disimpan. Misalnya, jika data sampel diunduh ke direktori/home, path-nya harus/home/vector_sample_data.csv.Setelah data diimpor, sistem akan mengembalikan
COPY 10000.
Analisis vektor
Tutorial ini menunjukkan analisis vektor dengan memberikan contoh cara mendapatkan jarak Euclidean kuadrat, jarak dot product, dan kesamaan kosinus.
Dapatkan Jarak Euclidean
Lakukan analisis vektor dan dapatkan 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;Berikut adalah 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)Dapatkan jarak dot product (kesamaan kosinus)
Lakukan analisis vektor dan dapatkan jarak dot product. Saat data dinormalisasi, jarak dot product sama dengan kesamaan 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;Berikut adalah 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)Kueri pencarian hibrida
Untuk melakukan pencarian hibrida data terstruktur dan data tidak terstruktur, Anda dapat menggunakan pernyataan 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;Berikut adalah 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)Referensi
Untuk informasi lebih lanjut tentang analisis vektor, lihat Analisis vektor.