Halaman ini menunjukkan cara memanggil prediksi online dari database AlloyDB untuk PostgreSQL.
AlloyDB memberi Anda kemampuan untuk mendapatkan prediksi online dalam
kode SQL dengan memanggil fungsi ml_predict_row()
. Untuk mengetahui informasi selengkapnya tentang cara menggunakan model machine learning (ML) dengan AlloyDB, lihat Membangun aplikasi AI generatif.
Sebelum memulai
Sebelum dapat memanggil prediksi online dari database AlloyDB, Anda harus menyiapkan database dan memilih model ML yang sesuai.
Menyiapkan database
Berikan izin bagi pengguna database untuk menjalankan fungsi
ml_predict_row()
guna menjalankan prediksi:Hubungkan klien
psql
ke instance utama cluster, seperti yang dijelaskan dalam Menghubungkan klien psql ke instance.Di command prompt psql, hubungkan ke database dan berikan izin:
\c DB_NAME GRANT EXECUTE ON FUNCTION ml_predict_row TO USER_NAME;
Ganti kode berikut:
DB_NAME: nama database tempat izin harus diberikan.
USER_NAME: nama pengguna yang harus diberi izin.
Pilih model ML
Saat memanggil fungsi ml_predict_row()
, Anda harus menentukan lokasi model ML.
Model yang Anda tentukan dapat berupa salah satu dari berikut ini:
Model yang berjalan di Vertex AI Model Garden.
Fungsi
ml_predict_row()
hanya mendukung pemanggilan prediksi pada model tabel atau model kustom.Model Vertex AI dengan endpoint aktif yang izin Identity and Access Management (IAM) untuk mengaksesnya telah Anda miliki.
AlloyDB tidak mendukung endpoint pribadi untuk mendapatkan prediksi online.
Memanggil prediksi online
Gunakan fungsi SQL ml_predict_row()
untuk memanggil prediksi online
terhadap data Anda.
Format argumen awal fungsi bergantung pada apakah model ML yang ingin Anda gunakan berada di Vertex AI Model Garden atau merupakan endpoint yang berjalan di project Google Cloud .
Menggunakan model di Vertex AI Model Garden
Untuk memanggil prediksi online menggunakan model ML yang berjalan di Vertex AI
Model Garden, gunakan sintaksis berikut untuk fungsi SQL ml_predict_row()
:
SELECT ml_predict_row('projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/MODEL_ID', '{ CONTENTS }');
Ganti kode berikut:
PROJECT_ID
: ID Google Cloud project AndaREGION_ID
: ID region Google Cloud tempat model berada—misalnya,us-central1
untuk gemini-proMODEL_ID
: ID model ML yang akan digunakan—misalnya, gemini-proCONTENTS
: input ke panggilan prediksi, dalam format JSON
Jika model ML disimpan dalam project dan region yang sama dengan cluster AlloyDB Anda, Anda dapat menyingkat argumen pertama fungsi ini:
SELECT ml_predict_row('publishers/google/models/MODEL_ID', '{ CONTENTS }');
Untuk mengetahui informasi tentang pesan respons JSON model, lihat Referensi model dasar AI generatif.
Untuk contoh, lihat Contoh pemanggilan.
Menggunakan endpoint model Vertex AI
Untuk memanggil prediksi online menggunakan endpoint model Vertex AI, gunakan sintaksis berikut untuk fungsi SQL ml_predict_row()
:
SELECT ml_predict_row('projects/PROJECT_ID/locations/REGION_ID/endpoints/ENDPOINT_ID', '{ CONTENTS }');
Ganti kode berikut:
PROJECT_ID
: ID Google Cloud project tempat model beradaREGION_ID
: ID Google Cloud region tempat model berada—misalnya,us-central1
ENDPOINT_ID
: ID endpoint modelCONTENTS
: input ke panggilan prediksi, dalam format JSON
Jika endpoint berada di project dan region yang sama dengan cluster AlloyDB Anda, Anda dapat menyingkat argumen pertama fungsi ini:
SELECT ml_predict_row('endpoints/ENDPOINT_ID', '{ CONTENTS }');
Untuk mengetahui informasi tentang pesan respons JSON model, lihat PredictResponse.
Contoh pemanggilan
Contoh berikut menggunakan gemini-pro, yang tersedia di Model Garden, untuk membuat teks berdasarkan perintah singkat yang diberikan sebagai argumen literal ke ml_predict_row()
:
select ML_PREDICT_ROW('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:generateContent', '{
"contents": [{
"role": "user",
"parts": [{
"text": "What is AlloyDB?"
}]
}]
}');
Responsnya adalah objek JSON. Untuk mengetahui informasi selengkapnya tentang format objek, lihat Isi respons.
Contoh berikutnya mengubah contoh sebelumnya dengan cara berikut:
Contoh ini menggunakan konten kolom
messages.message
database saat ini sebagai input.Contoh ini menunjukkan penggunaan fungsi
json_build_object()
sebagai bantuan untuk memformat parameter fungsi.
select ML_PREDICT_ROW('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:generateContent', json_build_object('contents', json_build_object('text', message))) from messages;
Objek JSON yang ditampilkan kini berisi satu entri dalam array predictions
untuk setiap baris dalam tabel messages
.
Karena responsnya adalah objek JSON, Anda dapat menarik kolom tertentu dari respons tersebut menggunakan operator panah PostgreSQL:
select ML_PREDICT_ROW('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:generateContent', json_build_object('contents', json_build_object('text', message)))->'predictions'->0->'content' FROM messages;
Untuk mengetahui contoh argumen lainnya untuk ml_predict_row()
, lihat Panduan memulai menggunakan Vertex AI API.