Pratinjau pengelolaan endpoint Model memungkinkan Anda mendaftarkan endpoint model, mengelola metadata endpoint model di cluster database, lalu berinteraksi dengan model menggunakan kueri SQL. Library ini menyediakan ekstensi google_ml_integration
yang mencakup fungsi untuk menambahkan dan mendaftarkan metadata endpoint model yang terkait dengan model, lalu menggunakan model untuk membuat penyematan vektor atau memanggil prediksi.
Berikut beberapa jenis model contoh yang dapat Anda daftarkan menggunakan pengelolaan endpoint model:
- Model embedding teks Vertex AI
- Model embedding yang disediakan oleh penyedia pihak ketiga.
- Model embedding teks yang dihosting kustom
- Model generik dengan API berbasis JSON—misalnya, model
gemini-pro
dari Vertex AI Model Garden
Cara kerjanya
Anda dapat menggunakan pengelolaan endpoint model untuk mendaftarkan endpoint model yang mematuhi hal berikut:
- Input dan output model mendukung format JSON.
- Model dapat dipanggil menggunakan protokol REST.
Saat Anda mendaftarkan endpoint model dengan pengelolaan endpoint model, setiap endpoint akan didaftarkan dengan ID model unik yang Anda berikan sebagai referensi ke model. Anda dapat menggunakan ID model ini untuk membuat kueri model:
Buat embedding untuk menerjemahkan perintah teks ke vektor numerik. Anda dapat menyimpan embedding yang dihasilkan sebagai data vektor saat ekstensi
pgvector
diaktifkan dalam database.Panggil prediksi untuk memanggil model menggunakan SQL dalam transaksi.
Aplikasi Anda dapat mengakses pengelolaan endpoint model menggunakan ekstensi google_ml_integration
. Ekstensi ini menyediakan fungsi berikut:
- Fungsi SQL
google_ml.create_model()
, yang digunakan untuk mendaftarkan endpoint model yang digunakan dalam fungsi prediksi atau penyematan. - Fungsi SQL
google_ml.create_sm_secret()
, yang menggunakan secret di Google Cloud Secret Manager, tempat kunci API disimpan. - Fungsi SQL
google_ml.embedding()
, yang merupakan fungsi prediksi yang menghasilkan embedding teks. - Fungsi SQL
google_ml.predict_row()
yang menghasilkan prediksi saat Anda memanggil model generik yang mendukung format input dan output JSON. - Fungsi bantuan lainnya yang menangani pembuatan URL kustom, pembuatan header HTTP, atau meneruskan fungsi transformasi untuk model generik Anda.
- Fungsi untuk mengelola endpoint dan secret model terdaftar.
Konsep utama
Sebelum Anda mulai menggunakan pengelolaan endpoint model, pahami konsep yang diperlukan untuk terhubung ke dan menggunakan model.
Penyedia model
Penyedia model menunjukkan penyedia hosting model yang didukung. Tabel berikut menunjukkan nilai penyedia model yang harus Anda tetapkan berdasarkan penyedia model yang Anda gunakan:
Penyedia model | Tetapkan dalam fungsi sebagai… |
---|---|
Vertex AI | google |
Model lainnya | custom |
Penyedia model default adalah custom
.
Berdasarkan jenis penyedia, metode autentikasi yang didukung berbeda. Model Vertex AI menggunakan akun layanan Distributed Cloud untuk melakukan autentikasi, sementara penyedia lain dapat menggunakan Secret Manager untuk melakukan autentikasi.
Jenis model
Jenis model menunjukkan jenis model AI. Ekstensi ini mendukung penyematan teks serta jenis model generik apa pun. Jenis model yang didukung yang dapat Anda tetapkan saat mendaftarkan endpoint model adalah text-embedding
dan generic
. Menetapkan jenis model bersifat opsional saat mendaftarkan endpoint model generik karena generic
adalah jenis model default.
- Model embedding teks dengan dukungan bawaan
- Pengelolaan endpoint model menyediakan dukungan bawaan untuk semua versi model
textembedding-gecko
oleh Vertex AI. Untuk mendaftarkan endpoint model ini, gunakan fungsigoogle_ml.create_model()
. Distributed Cloud secara otomatis menyiapkan fungsi transformasi default untuk model ini. - Jenis model untuk model ini adalah
text-embedding
. - Model embedding teks lainnya
- Untuk model penyematan teks lainnya, Anda perlu membuat fungsi transformasi untuk menangani format input dan output yang didukung model. Secara opsional, Anda dapat menggunakan fungsi pembuatan header HTTP yang membuat header kustom yang diperlukan oleh model Anda.
- Jenis model untuk model ini adalah
text-embedding
. - Model generik
- Pengelolaan endpoint model juga mendukung
pendaftaran semua jenis model lainnya selain model penyematan teks. Untuk
memanggil prediksi untuk model generik, gunakan
fungsi
google_ml.predict_row()
. Anda dapat menetapkan metadata endpoint model, seperti endpoint permintaan dan header HTTP yang khusus untuk model Anda. - Anda tidak dapat meneruskan fungsi transformasi saat mendaftarkan endpoint model generik. Pastikan bahwa saat Anda memanggil prediksi, input ke fungsi tersebut dalam format JSON, dan Anda mengurai output JSON untuk mendapatkan output akhir.
- Jenis model untuk model ini adalah
generic
.
Autentikasi
Jenis autentikasi menunjukkan jenis autentikasi yang dapat Anda gunakan untuk terhubung ke
pengelolaan endpoint model menggunakan ekstensi google_ml_integration
. Menetapkan
autentikasi bersifat opsional dan hanya diperlukan jika Anda perlu melakukan autentikasi untuk mengakses model Anda.
Untuk model Vertex AI, akun layanan Distributed Cloud digunakan untuk autentikasi. Untuk model lainnya, kunci API atau token pembawa yang disimpan sebagai secret di Secret Manager dapat digunakan dengan fungsi SQL google_ml.create_sm_secret()
.
Tabel berikut menunjukkan jenis autentikasi yang dapat Anda tetapkan:
Metode autentikasi | Tetapkan dalam fungsi sebagai… | Penyedia model |
---|---|---|
Agen layanan Distributed Cloud | alloydb_service_agent_iam |
Penyedia Vertex AI |
Secret Manager | secret_manager |
penyedia pihak ketiga |
Fungsi prediksi
Ekstensi google_ml_integration
mencakup fungsi prediksi berikut:
google_ml.embedding()
- Digunakan untuk memanggil endpoint model embedding teks terdaftar untuk
membuat embedding. Vertex AI menyertakan dukungan bawaan untuk model
textembedding-gecko
. - Untuk model penyematan teks tanpa dukungan bawaan, parameter input dan output bersifat unik untuk model dan perlu diubah agar fungsi dapat memanggil model. Buat fungsi input transformasi untuk mengubah input fungsi prediksi menjadi input khusus model, dan fungsi output transformasi untuk mengubah output khusus model menjadi output fungsi prediksi.
google_ml.predict_row()
- Digunakan untuk memanggil endpoint model generik terdaftar, selama endpoint tersebut mendukung API berbasis JSON, untuk memanggil prediksi.
Fungsi transformasi
Fungsi transformasi mengubah input ke format yang dipahami model, dan
mengonversi respons model ke format yang diharapkan oleh fungsi prediksi. Fungsi
transform digunakan saat mendaftarkan endpoint model text-embedding
tanpa
dukungan bawaan. Tanda tangan fungsi transformasi bergantung pada
fungsi prediksi untuk jenis model.
Anda tidak dapat menggunakan fungsi transformasi saat mendaftarkan endpoint model generic
.
Berikut menunjukkan tanda tangan untuk fungsi prediksi untuk model penyematan teks:
// define custom model specific input/output transform functions.
CREATE OR REPLACE FUNCTION input_transform_function(model_id VARCHAR(100), input_text TEXT) RETURNS JSON;
CREATE OR REPLACE FUNCTION output_transform_function(model_id VARCHAR(100), response_json JSON) RETURNS real[];
Fungsi pembuatan header HTTP
Fungsi pembuatan header HTTP menghasilkan output dalam key-value pair JSON yang digunakan sebagai header HTTP. Tanda tangan fungsi prediksi menentukan tanda tangan fungsi pembuatan header.
Contoh berikut menunjukkan tanda tangan untuk fungsi prediksi google_ml.embedding()
.
CREATE OR REPLACE FUNCTION generate_headers(model_id VARCHAR(100), input TEXT) RETURNS JSON;
Untuk fungsi prediksi google_ml.predict_row()
, tanda tangannya adalah sebagai berikut:
CREATE OR REPLACE FUNCTION generate_headers(model_id VARCHAR(100), input JSON) RETURNS JSON;
Mendaftarkan model
Untuk memanggil prediksi atau membuat embedding menggunakan model, daftarkan endpoint model dengan pengelolaan endpoint model.
Untuk mengetahui informasi selengkapnya tentang fungsi google_ml.create_model()
, lihat Referensi pengelolaan endpoint model.
Sebelum mendaftarkan endpoint model dengan pengelolaan endpoint model, Anda harus mengaktifkan ekstensi google_ml_integration
dan menyiapkan autentikasi berdasarkan penyedia model, jika endpoint model Anda memerlukan autentikasi.
Pastikan Anda mengakses database dengan nama pengguna default postgres
.
Menyiapkan autentikasi
Bagian berikut menunjukkan cara menyiapkan autentikasi sebelum menambahkan endpoint model Vertex AI atau endpoint model oleh penyedia lain.
Menyiapkan autentikasi untuk Vertex AI
Untuk menggunakan endpoint model Google Vertex AI, Anda harus menambahkan izin Vertex AI ke akun layanan yang Anda gunakan saat menginstal AlloyDB Omni.
Menyiapkan autentikasi untuk penyedia model lainnya
Untuk semua model kecuali model Vertex AI, Anda dapat menyimpan kunci API atau token pembawa di Secret Manager. Langkah ini bersifat opsional jika endpoint model Anda tidak menangani autentikasi melalui Secret Manager—misalnya, jika endpoint model Anda menggunakan header HTTP untuk meneruskan informasi autentikasi atau tidak menggunakan autentikasi sama sekali.
Bagian ini menjelaskan cara menyiapkan autentikasi jika Anda menggunakan Secret Manager.
Untuk membuat dan menggunakan kunci API atau token pembawa, selesaikan langkah-langkah berikut:
Buat secret di Secret Manager.
Nama secret dan jalur secret digunakan dalam fungsi SQL
google_ml.create_sm_secret()
.Berikan izin ke cluster Distributed Cloud untuk mengakses secret.
gcloud secrets add-iam-policy-binding 'SECRET_ID' \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role="roles/secretmanager.secretAccessor"
Ganti kode berikut:
SECRET_ID
: ID secret di Secret Manager.SERVICE_ACCOUNT_ID
: ID akun layanan yang Anda buat di langkah sebelumnya. Pastikan akun ini sama dengan akun yang Anda gunakan selama penginstalan AlloyDB Omni. Ini mencakup akhiranPROJECT_ID.iam.gserviceaccount.com
lengkap. Contoh:my-service@my-project.iam.gserviceaccount.com
Anda juga dapat memberikan peran ini ke akun layanan di tingkat project.
Membuat embedding
Bagian ini menjelaskan pratinjau yang memungkinkan Anda bereksperimen dengan mendaftarkan endpoint model AI dan memanggil prediksi dengan pengelolaan endpoint model.
Setelah endpoint model ditambahkan dan didaftarkan di pengelolaan endpoint model, Anda dapat mereferensikannya menggunakan ID model untuk membuat embedding.
Sebelum memulai
Pastikan Anda telah mendaftarkan endpoint model dengan pengelolaan endpoint model.
Membuat embedding
Gunakan fungsi SQL google_ml.embedding()
untuk memanggil endpoint model terdaftar dengan
jenis model embedding teks untuk membuat embedding.
Untuk memanggil model dan membuat embedding, gunakan kueri SQL berikut:
SELECT
google_ml.embedding(
model_id => 'MODEL_ID',
content => 'CONTENT');
Ganti kode berikut:
MODEL_ID
: ID model yang Anda tentukan saat mendaftarkan endpoint model.CONTENT
: teks yang akan diterjemahkan ke dalam penyematan vektor.
Contoh
Beberapa contoh untuk membuat embedding menggunakan endpoint model terdaftar tercantum di bagian ini.
Model embedding teks dengan dukungan bawaan
Untuk membuat embedding untuk endpoint model textembedding-gecko@002
yang terdaftar, jalankan pernyataan berikut:
SELECT
google_ml.embedding(
model_id => 'textembedding-gecko@002',
content => 'AlloyDB is a managed, cloud-hosted SQL database service');
Memanggil prediksi
Bagian ini menjelaskan pratinjau yang memungkinkan Anda bereksperimen dengan mendaftarkan endpoint model AI dan memanggil prediksi dengan pengelolaan endpoint model.
Setelah endpoint model ditambahkan dan didaftarkan di pengelolaan endpoint model, Anda dapat mereferensikannya menggunakan ID model untuk memanggil prediksi.
Sebelum memulai
Pastikan Anda telah mendaftarkan endpoint model dengan pengelolaan endpoint model.
Meminta prediksi untuk model generik
Gunakan fungsi SQL google_ml.predict_row()
untuk memanggil endpoint model generik terdaftar guna memanggil
prediksi. Anda dapat menggunakan fungsi google_ml.predict_row()
dengan jenis model apa pun.
SELECT
google_ml.predict_row(
model_id => 'MODEL_ID',
request_body => 'REQUEST_BODY');
Ganti kode berikut:
MODEL_ID
: ID model yang Anda tentukan saat mendaftarkan endpoint model.REQUEST_BODY
: parameter ke fungsi prediksi, dalam format JSON.
Contoh
Beberapa contoh untuk memanggil prediksi menggunakan endpoint model terdaftar tercantum di bagian ini.
Untuk membuat prediksi untuk endpoint model gemini-pro
yang terdaftar, jalankan pernyataan berikut:
SELECT
json_array_elements(
google_ml.predict_row(
model_id => 'gemini-pro',
request_body => '{
"contents": [
{
"role": "user",
"parts": [
{
"text": "For TPCH database schema as mentioned here https://www.tpc.org/TPC_Documents_Current_Versions/pdf/TPC-H_v3.0.1.pdf , generate a SQL query to find all supplier names which are located in the India nation."
}
]
}
]
}'))-> 'candidates' -> 0 -> 'content' -> 'parts' -> 0 -> 'text';
Referensi API pengelolaan endpoint model
Bagian ini mencantumkan parameter untuk berbagai fungsi yang disediakan oleh ekstensi
google_ml_integration
untuk mendaftarkan dan mengelola endpoint model, serta secret dengan
pengelolaan endpoint model.
Anda harus menyetel flag database
google_ml_integration.enable_model_support
ke on
sebelum Anda
dapat mulai menggunakan ekstensi.
Model
Gunakan referensi ini untuk memahami parameter fungsi yang memungkinkan Anda mengelola endpoint model.
google_ml.create_model()
fungsi
Berikut cara memanggil fungsi SQL google_ml.create_model()
yang digunakan
untuk mendaftarkan metadata endpoint model:
CALL
google_ml.create_model(
model_id => 'MODEL_ID',
model_request_url => 'REQUEST_URL',
model_provider => 'PROVIDER_ID',
model_type => 'MODEL_TYPE',
model_qualified_name => 'MODEL_QUALIFIED_NAME',
model_auth_type => 'AUTH_TYPE',
model_auth_id => 'AUTH_ID',
generate_headers_fn => 'GENERATE_HEADER_FUNCTION',
model_in_transform_fn => 'INPUT_TRANSFORM_FUNCTION',
model_out_transform_fn => 'OUTPUT_TRANSFORM_FUNCTION');
Parameter | Wajib | Deskripsi |
---|---|---|
MODEL_ID |
wajib untuk semua endpoint model | ID unik untuk endpoint model yang Anda tentukan. |
REQUEST_URL |
opsional untuk endpoint model embedding teks lainnya dengan dukungan bawaan | Endpoint khusus model saat menambahkan endpoint model generik dan penyematan teks lainnya. Untuk AlloyDB untuk PostgreSQL, berikan URL https .URL permintaan yang dihasilkan fungsi untuk endpoint model bawaan merujuk ke project dan wilayah atau lokasi cluster Anda. Jika Anda ingin merujuk ke project lain, pastikan Anda menentukan model_request_url secara eksplisit.Untuk endpoint model yang dihosting kustom, pastikan endpoint model dapat diakses dari jaringan tempat Distributed Cloud berada. |
PROVIDER_ID |
diperlukan untuk endpoint model embedding teks dengan dukungan bawaan | Penyedia endpoint model. Nilai defaultnya adalah custom .Tetapkan ke salah satu nilai berikut:
|
MODEL_TYPE |
opsional untuk endpoint model generik | Jenis model. Tetapkan ke salah satu opsi berikut:
|
MODEL_QUALIFIED_NAME |
diperlukan untuk model embedding teks dengan dukungan bawaan; opsional untuk endpoint model lainnya | Nama yang sepenuhnya memenuhi syarat untuk model embedding teks dengan dukungan bawaan. |
AUTH_TYPE |
opsional kecuali jika endpoint model memiliki persyaratan autentikasi tertentu | Jenis autentikasi yang digunakan oleh endpoint model. Anda dapat menyetelnya ke alloydb_service_agent_iam untuk model Vertex AI atau secret_manager untuk penyedia lain, jika mereka menggunakan Secret Manager untuk autentikasi. Anda tidak perlu menyetel nilai ini jika menggunakan header autentikasi. |
AUTH_ID |
tidak ditetapkan untuk endpoint model Vertex AI; diperlukan untuk semua endpoint model lainnya yang menyimpan rahasia di Secret Manager | ID rahasia yang Anda tetapkan dan selanjutnya digunakan saat mendaftarkan endpoint model. |
GENERATE_HEADER_FUNCTION |
opsional | Nama fungsi yang menghasilkan header kustom. Tanda tangan fungsi ini bergantung pada fungsi prediksi yang Anda gunakan. |
INPUT_TRANSFORM_FUNCTION |
opsional untuk endpoint model embedding teks dengan dukungan bawaan; jangan tetapkan untuk endpoint model generik | Fungsi untuk mengubah input fungsi prediksi yang sesuai menjadi input khusus model. |
OUTPUT_TRANSFORM_FUNCTION |
opsional untuk endpoint model embedding teks dengan dukungan bawaan; jangan tetapkan untuk endpoint model generik | Fungsi untuk mengubah output khusus model menjadi output fungsi prediksi. |
google_ml.alter_model()
Berikut cara memanggil fungsi SQL google_ml.alter_model()
yang digunakan untuk memperbarui metadata endpoint model:
CALL
google_ml.alter_model(
model_id => 'MODEL_ID',
model_request_url => 'REQUEST_URL',
model_provider => 'PROVIDER_ID',
model_type => 'MODEL_TYPE',
model_qualified_name => 'MODEL_QUALIFIED_NAME',
model_auth_type => 'AUTH_TYPE',
model_auth_id => 'AUTH_ID',
generate_headers_fn => 'GENERATE_HEADER_FUNCTION',
model_in_transform_fn => 'INPUT_TRANSFORM_FUNCTION',
model_out_transform_fn => 'OUTPUT_TRANSFORM_FUNCTION');
Untuk mengetahui informasi tentang nilai yang harus Anda tetapkan untuk setiap parameter, lihat Membuat model.
google_ml.drop_model()
fungsi
Berikut cara memanggil fungsi SQL google_ml.drop_model()
yang digunakan untuk menghapus endpoint model:
CALL google_ml.drop_model('MODEL_ID');
Parameter | Deskripsi |
---|---|
MODEL_ID |
ID unik untuk endpoint model yang Anda tentukan. |
google_ml.list_model()
fungsi
Berikut ini menunjukkan cara memanggil fungsi SQL google_ml.list_model()
yang digunakan
untuk mencantumkan informasi endpoint model:
SELECT google_ml.list_model('MODEL_ID');
Parameter | Deskripsi |
---|---|
MODEL_ID |
ID unik untuk endpoint model yang Anda tentukan. |
Tampilan google_ml.model_info_view
Berikut ini menunjukkan cara memanggil tampilan google_ml.model_info_view
yang
digunakan untuk mencantumkan informasi endpoint model untuk semua endpoint model:
SELECT * FROM google_ml.model_info_view;
Rahasia
Gunakan referensi ini untuk memahami parameter fungsi yang memungkinkan Anda mengelola secret.
google_ml.create_sm_secret()
fungsi
Berikut cara memanggil fungsi SQL google_ml.create_sm_secret()
yang digunakan untuk menambahkan secret yang dibuat di Secret Manager:
CALL
google_ml.create_sm_secret(
secret_id => 'SECRET_ID',
secret_path => 'projects/project-id/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
Parameter | Deskripsi |
---|---|
SECRET_ID |
ID rahasia yang Anda tetapkan dan selanjutnya digunakan saat mendaftarkan endpoint model. |
PROJECT_ID |
ID project Google Cloud yang berisi rahasia. Project ini dapat berbeda dengan project yang berisi cluster AlloyDB for PostgreSQL Anda. Untuk AlloyDB Omni, ID project Google Cloud yang berisi secret. |
SECRET_MANAGER_SECRET_ID |
ID secret yang ditetapkan di Secret Manager saat Anda membuat secret. |
VERSION_NUMBER |
Nomor versi ID rahasia. |
google_ml.alter_sm_secret()
fungsi
Berikut cara memanggil fungsi SQL google_ml.alter_sm_secret()
yang digunakan untuk memperbarui informasi rahasia:
CALL
google_ml.alter_sm_secret(
secret_id => 'SECRET_ID',
secret_path => 'projects/project-id/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
Untuk mengetahui informasi tentang nilai yang harus Anda tetapkan untuk setiap parameter, lihat Membuat secret.
google_ml.drop_sm_secret()
fungsi
Berikut cara memanggil fungsi SQL google_ml.drop_sm_secret()
yang digunakan untuk menghapus rahasia:
CALL google_ml.drop_sm_secret('SECRET_ID');
Parameter | Deskripsi |
---|---|
SECRET_ID |
ID rahasia yang Anda tetapkan dan kemudian digunakan saat mendaftarkan endpoint model. |
Fungsi prediksi
Gunakan referensi ini untuk memahami parameter fungsi yang memungkinkan Anda membuat sematan atau memanggil prediksi.
google_ml.embedding()
fungsi
Berikut cara membuat sematan:
SELECT
google_ml.embedding(
model_id => 'MODEL_ID',
contents => 'CONTENT');
Parameter | Deskripsi |
---|---|
MODEL_ID |
ID unik untuk endpoint model yang Anda tentukan. |
CONTENT |
Teks yang akan diterjemahkan ke dalam penyematan vektor. |
google_ml.predict_row()
fungsi
Berikut cara memanggil prediksi:
SELECT
google_ml.predict_row(
model_id => 'MODEL_ID',
request_body => 'REQUEST_BODY');
Parameter | Deskripsi |
---|---|
MODEL_ID |
ID unik untuk endpoint model yang Anda tentukan. |
REQUEST_BODY |
Parameter ke fungsi prediksi, dalam format JSON. |
Fungsi transformasi
Gunakan referensi ini untuk memahami parameter fungsi transformasi input dan output.
Fungsi transformasi input
Berikut ini menunjukkan tanda tangan untuk fungsi prediksi untuk endpoint model penyematan teks:
CREATE OR REPLACE FUNCTION INPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), input_text TEXT) RETURNS JSON;
Parameter | Deskripsi |
---|---|
INPUT_TRANSFORM_FUNCTION |
Fungsi untuk mengubah input fungsi prediksi yang sesuai menjadi input khusus endpoint model. |
Fungsi transformasi output
Berikut ini menunjukkan tanda tangan untuk fungsi prediksi untuk endpoint model penyematan teks:
CREATE OR REPLACE FUNCTION OUTPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), response_json JSON) RETURNS real[];
Parameter | Deskripsi |
---|---|
OUTPUT_TRANSFORM_FUNCTION |
Fungsi untuk mengubah output khusus endpoint model menjadi output fungsi prediksi. |
Contoh fungsi transformasi
Untuk lebih memahami cara membuat fungsi transformasi untuk endpoint model Anda, pertimbangkan endpoint model penyematan teks yang dihosting kustom yang memerlukan input dan output JSON.
Contoh permintaan cURL berikut membuat embedding berdasarkan perintah dan endpoint model:
curl -m 100 -X POST https://cymbal.com/models/text/embeddings/v1 \
-H "Content-Type: application/json"
-d '{"prompt": ["AlloyDB Embeddings"]}'
Contoh respons berikut ditampilkan:
[[ 0.3522231 -0.35932037 0.10156056 0.17734447 -0.11606089 -0.17266059
0.02509351 0.20305622 -0.09787305 -0.12154685 -0.17313677 -0.08075467
0.06821183 -0.06896557 0.1171584 -0.00931572 0.11875633 -0.00077482
0.25604948 0.0519384 0.2034983 -0.09952664 0.10347155 -0.11935943
-0.17872004 -0.08706985 -0.07056875 -0.05929353 0.4177883 -0.14381726
0.07934926 0.31368294 0.12543282 0.10758053 -0.30210832 -0.02951015
0.3908268 -0.03091059 0.05302926 -0.00114946 -0.16233777 0.1117468
-0.1315904 0.13947351 -0.29569918 -0.12330773 -0.04354299 -0.18068913
0.14445548 0.19481727]]
Berdasarkan input dan respons ini, kita dapat menyimpulkan hal berikut:
Model mengharapkan input JSON melalui kolom
prompt
. Kolom ini menerima array input. Karena fungsigoogle_ml.embedding()
adalah fungsi tingkat baris, fungsi ini mengharapkan satu input teks dalam satu waktu. Oleh karena itu,Anda perlu membuat fungsi transformasi input yang membuat array dengan satu elemen.Respons dari model adalah array embedding, satu untuk setiap input perintah ke model. Karena fungsi
google_ml.embedding()
adalah fungsi tingkat baris, fungsi ini menampilkan satu input dalam satu waktu. Oleh karena itu, Anda perlu membuat fungsi transformasi output yang dapat digunakan untuk mengekstrak penyematan dari array.
Contoh berikut menunjukkan fungsi transformasi input dan output yang digunakan untuk endpoint model ini saat didaftarkan dengan pengelolaan endpoint model:
fungsi transformasi input
CREATE OR REPLACE FUNCTION cymbal_text_input_transform(model_id VARCHAR(100), input_text TEXT)
RETURNS JSON
LANGUAGE plpgsql
AS $$
DECLARE
transformed_input JSON;
model_qualified_name TEXT;
BEGIN
SELECT json_build_object('prompt', json_build_array(input_text))::JSON INTO transformed_input;
RETURN transformed_input;
END;
$$;
fungsi transformasi output
CREATE OR REPLACE FUNCTION cymbal_text_output_transform(model_id VARCHAR(100), response_json JSON)
RETURNS REAL[]
LANGUAGE plpgsql
AS $$
DECLARE
transformed_output REAL[];
BEGIN
SELECT ARRAY(SELECT json_array_elements_text(response_json->0)) INTO transformed_output;
RETURN transformed_output;
END;
$$;
Fungsi pembuatan header HTTP
Berikut tanda tangan untuk fungsi pembuatan header yang dapat digunakan dengan fungsi prediksi google_ml.embedding()
saat mendaftarkan endpoint model penyematan teks lainnya.
CREATE OR REPLACE FUNCTION GENERATE_HEADERS(model_id VARCHAR(100), input_text TEXT) RETURNS JSON;
Untuk fungsi prediksi google_ml.predict_row()
, tanda tangannya adalah sebagai
berikut:
CREATE OR REPLACE FUNCTION GENERATE_HEADERS(model_id TEXT, input JSON) RETURNS JSON;
Parameter | Deskripsi |
---|---|
GENERATE_HEADERS |
Fungsi untuk membuat header kustom. Anda juga dapat meneruskan header otorisasi yang dihasilkan oleh fungsi pembuatan header saat mendaftarkan endpoint model. |
Contoh fungsi pembuatan header
Untuk lebih memahami cara membuat fungsi yang menghasilkan output dalam pasangan nilai kunci JSON yang digunakan sebagai header HTTP, pertimbangkan endpoint model penyematan teks yang dihosting kustom.
Contoh permintaan cURL berikut meneruskan header HTTP version
yang digunakan oleh endpoint model:
curl -m 100 -X POST https://cymbal.com/models/text/embeddings/v1 \
-H "Content-Type: application/json" \
-H "version: 2024-01-01" \
-d '{"prompt": ["AlloyDB Embeddings"]}'
Model mengharapkan input teks melalui kolom version
dan menampilkan nilai versi dalam format JSON. Contoh berikut menunjukkan fungsi pembuatan header yang digunakan untuk endpoint model penyematan teks ini saat didaftarkan dengan pengelolaan endpoint model:
CREATE OR REPLACE FUNCTION header_gen_fn(model_id VARCHAR(100), input_text TEXT)
RETURNS JSON
LANGUAGE plpgsql
AS $$
BEGIN
RETURN json_build_object('version', '2024-01-01')::JSON;
END;
$$;
Fungsi pembuatan header menggunakan Kunci API
Contoh berikut menunjukkan cara menyiapkan autentikasi menggunakan kunci API.
model embedding
CREATE OR REPLACE FUNCTION header_gen_func(
model_id VARCHAR(100),
input_text TEXT
)
RETURNS JSON
LANGUAGE plpgsql
AS $$
#variable_conflict use_variable
BEGIN
RETURN json_build_object('Authorization', 'API_KEY')::JSON;
END;
$$;
Ganti API_KEY
dengan kunci API penyedia model.
model generik
CREATE OR REPLACE FUNCTION header_gen_func(
model_id VARCHAR(100),
response_json JSON
)
RETURNS JSON
LANGUAGE plpgsql
AS $$
#variable_conflict use_variable
DECLARE
transformed_output REAL[];
BEGIN
-- code to add Auth token to API request
RETURN json_build_object('x-api-key', 'API_KEY', 'model-version', '2023-06-01')::JSON;
END;
$$;
Ganti API_KEY
dengan kunci API penyedia model.
Meminta pembuatan URL
Gunakan fungsi pembuatan URL permintaan untuk menyimpulkan URL permintaan untuk endpoint model dengan dukungan bawaan. Berikut tanda tangan untuk fungsi ini:
CREATE OR REPLACE FUNCTION GENERATE_REQUEST_URL(provider google_ml.model_provider, model_type google_ml.MODEL_TYPE, model_qualified_name VARCHAR(100), model_region VARCHAR(100) DEFAULT NULL)
Parameter | Deskripsi |
---|---|
GENERATE_REQUEST_URL |
Fungsi untuk membuat URL permintaan yang dibuat oleh ekstensi untuk endpoint model dengan dukungan bawaan. |
Model yang didukung
Anda dapat menggunakan pengelolaan endpoint model untuk mendaftarkan endpoint model generik atau penyematan teks. Pengelolaan endpoint model juga mencakup model Vertex AI yang telah didaftarkan sebelumnya dan model dengan dukungan bawaan.
Model Vertex AI yang telah didaftarkan sebelumnya
Jenis model | ID Model | Versi ekstensi |
---|---|---|
generic |
|
versi 1.4.2 dan yang lebih baru |
text_embedding |
|
versi 1.3 dan yang lebih baru |
Model dengan dukungan bawaan
Vertex AI
Nama model yang memenuhi syarat | Jenis model |
---|---|
text-embedding-gecko@001 |
text-embedding |
text-embedding-gecko@003 |
text-embedding |
text-embedding-004 |
text-embedding |
text-embedding-preview-0815 |
text-embedding |
text-multilingual-embedding-002 |
text-embedding |