Memanggil prediksi online dari database AlloyDB

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 google_ml.predict_row(). Untuk mengetahui informasi selengkapnya tentang cara menggunakan model machine learning (ML) dengan AlloyDB, lihat Mem-build 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

  1. Siapkan integrasi antara database dan Vertex AI.

  2. Berikan izin kepada pengguna database untuk menjalankan fungsi google_ml.predict_row() guna menjalankan prediksi:

    1. Hubungkan klien psql ke instance utama cluster, seperti yang dijelaskan dalam Menghubungkan klien psql ke instance.

    2. Di command prompt psql, hubungkan ke database dan berikan izin:

      \c DB_NAME
      
      GRANT EXECUTE ON FUNCTION google_ml.predict_row TO USER_NAME;
      

      Ganti kode berikut:

      • DB_NAME: nama database tempat izin harus diberikan

      • USER_NAME: nama pengguna yang akan diberikan izinnya

Memilih model ML

Saat memanggil fungsi google_ml.predict_row(), Anda harus menentukan lokasi model ML. Model yang Anda tentukan dapat berupa salah satu dari berikut:

  • Model yang berjalan di Vertex AI Model Garden.

    Fungsi google_ml.predict_row() hanya mendukung pemanggilan prediksi pada model tabular atau kustom.

  • Model Vertex AI dengan endpoint aktif yang dapat Anda akses dengan izin Identity and Access Management (IAM).

    AlloyDB tidak mendukung endpoint pribadi untuk mendapatkan prediksi online.

Memanggil prediksi online

Gunakan fungsi SQL google_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 Model Garden Vertex AI 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 google_ml.predict_row():

SELECT google_ml.predict_row('projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/MODEL_ID', '{ CONTENTS }');

Ganti kode berikut:

  • PROJECT_ID: ID Google Cloud project Anda

  • REGION_ID: ID Google Cloud region tempat model berada, misalnya, us-central1 untuk gemini-pro

  • MODEL_ID: ID model ML yang akan digunakan—misalnya, gemini-pro

  • CONTENTS: input ke panggilan prediksi, dalam format JSON

Jika model ML disimpan di project dan region yang sama dengan cluster AlloyDB, Anda dapat menyingkat argumen pertama fungsi ini:

SELECT google_ml.predict_row('publishers/google/models/MODEL_ID', '{ CONTENTS }');

Untuk 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 google_ml.predict_row():

SELECT google_ml.predict_row('projects/PROJECT_ID/locations/REGION_ID/endpoints/ENDPOINT_ID', '{ CONTENTS }');

Ganti kode berikut:

  • PROJECT_ID: ID Google Cloud project tempat model berada

  • REGION_ID: ID Google Cloud region tempat model berada, misalnya, us-central1

  • ENDPOINT_ID: ID endpoint model

  • CONTENTS: input ke panggilan prediksi, dalam format JSON

Jika endpoint berada di project dan region yang sama dengan cluster AlloyDB, Anda dapat menyingkat argumen pertama fungsi ini:

SELECT google_ml.predict_row('endpoints/ENDPOINT_ID', '{ CONTENTS }');

Untuk 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 google_ml.predict_row():

SELECT google_ml.predict_row('gemini-1.0-pro:generateContent', '{ "contents": [{ "role": "user", "parts": [{ "text": "What is AlloyDB?" }] }] }');

Responsnya adalah objek JSON. Untuk 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 google_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 mengambil kolom tertentu darinya menggunakan operator panah PostgreSQL:

select google_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 contoh argumen lainnya ke google_ml.predict_row(), lihat Panduan memulai menggunakan Vertex AI API.