模型端點管理預先發布版可讓您註冊模型端點、管理資料庫叢集中的模型端點中繼資料,然後使用 SQL 查詢與模型互動。這個擴充功能提供 google_ml_integration
擴充功能,內含新增及註冊模型相關模型端點中繼資料的函式,然後使用模型產生向量嵌入或叫用預測。
您可以使用模型端點管理服務註冊下列範例模型類型:
- Vertex AI 文字嵌入模型
- 第三方供應商提供的嵌入模型。
- 自訂代管文字嵌入模型
- 使用 JSON 型 API 的通用模型,例如 Vertex AI Model Garden 中的
gemini-pro
模型
運作方式
您可以透過模型端點管理服務,註冊符合下列條件的模型端點:
- 模型輸入和輸出內容支援 JSON 格式。
- 模型可使用 REST 通訊協定呼叫。
向模型端點管理服務註冊模型端點時,系統會為每個端點註冊您提供的專屬模型 ID,做為模型的參照。您可以使用這個模型 ID 查詢模型:
生成嵌入項目,將文字提示轉換為數值向量。在資料庫中啟用
pgvector
擴充功能後,即可將產生的嵌入項目儲存為向量資料。在交易中,使用 SQL 呼叫模型來叫用預測。
應用程式可以使用 google_ml_integration
擴充功能存取模型端點管理服務。這項擴充功能提供下列功能:
google_ml.create_model()
SQL 函式,用於註冊預測或嵌入函式中使用的模型端點。google_ml.create_sm_secret()
SQL 函式,使用 Secret Manager 中的密鑰,API 金鑰就儲存在這裡。 Google Cloudgoogle_ml.embedding()
SQL 函式,這是一種預測函式,可生成文字嵌入。google_ml.predict_row()
SQL 函式,用於呼叫支援 JSON 輸入和輸出格式的通用模型時產生預測結果。- 其他輔助函式,可處理產生自訂網址、產生 HTTP 標頭,或傳遞一般模型的轉換函式。
- 用於管理已註冊模型端點和密鑰的函式。
基本概念
開始使用模型端點管理服務前,請先瞭解連線及使用模型所需的概念。
模型提供者
模型供應商:表示支援的模型代管供應商。下表列出您必須根據使用的模型供應商設定的模型供應商值:
模型提供者 | 在函式中設定為… |
---|---|
Vertex AI | google |
其他模型 | custom |
預設模型供應商為 custom
。
支援的驗證方法會因供應商類型而異。Vertex AI 模型會使用 Distributed Cloud 服務帳戶進行驗證,其他供應商則可使用 Secret Manager 進行驗證。
模型類型
模型類型會指出 AI 模型的類型。這項擴充功能支援文字嵌入,以及任何一般模型類型。註冊模型端點時,可設定的支援模型類型為 text-embedding
和 generic
。註冊一般模型端點時,設定模型類型為選用項目,因為 generic
是預設模型類型。
- 內建支援的文字嵌入模型
- 模型端點管理功能內建支援所有版本的
textembedding-gecko
模型,如要註冊這些模型端點,請使用google_ml.create_model()
函式。Distributed Cloud 會自動為這些模型設定預設轉換函式。 - 這些模型的模型類型為
text-embedding
。 - 其他文字嵌入模型
- 如果是其他文字嵌入模型,您需要建立轉換函式,處理模型支援的輸入和輸出格式。您也可以視需要使用 HTTP 標頭產生函式,產生模型所需的自訂標頭。
- 這些模型的模型類型為
text-embedding
。 - 通用模型
- 模型端點管理服務也支援註冊文字嵌入模型以外的所有其他模型類型。如要叫用一般模型的預測功能,請使用
google_ml.predict_row()
函式。您可以設定模型端點中繼資料,例如專屬模型的要求端點和 HTTP 標頭。 - 註冊泛型模型端點時,無法傳遞轉換函式。請確保在叫用預測時,函式的輸入內容為 JSON 格式,並剖析 JSON 輸出內容,以衍生最終輸出內容。
- 這些模型的模型類型為
generic
。
驗證
「驗證類型」會指出您可使用哪種驗證類型,透過 google_ml_integration
擴充功能連線至模型端點管理服務。驗證設定為選用功能,只有在需要驗證才能存取模型時才需要設定。
如果是 Vertex AI 模型,則會使用 Distributed Cloud 服務帳戶進行驗證。如果是其他模型,則可使用儲存在 Secret Manager 中的 API 金鑰或不記名權杖,搭配 google_ml.create_sm_secret()
SQL 函式。
下表列出可設定的驗證類型:
驗證方式 | 在函式中設定為… | 模型提供者 |
---|---|---|
Distributed Cloud 服務代理人 | alloydb_service_agent_iam |
Vertex AI 供應商 |
Secret Manager | secret_manager |
第三方供應商 |
預測函式
google_ml_integration
擴充功能包含下列預測函式:
google_ml.embedding()
- :用於呼叫已註冊的文字嵌入模型端點,以生成嵌入項目。這項服務內建支援 Vertex AI 的
textembedding-gecko
模型。 - 對於沒有內建支援的文字嵌入模型,輸入和輸出參數是模型專屬的,需要轉換才能讓函式呼叫模型。建立轉換輸入函式,將預測函式的輸入內容轉換為模型專屬輸入內容,並建立轉換輸出函式,將模型專屬輸出內容轉換為預測函式輸出內容。
google_ml.predict_row()
- 用來呼叫已註冊的泛型模型端點 (只要支援以 JSON 為基礎的 API),以叫用預測。
轉換函式
轉換函式會將輸入內容修改為模型可理解的格式,並將模型回應轉換為預測函式預期的格式。註冊沒有內建支援的 text-embedding
模型端點時,會使用轉換函式。轉換函式的簽章取決於模型類型的預測函式。
註冊 generic
模型端點時,無法使用轉換函式。
以下是文字嵌入模型預測函式的簽章:
// 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[];
HTTP 標頭產生函式
HTTP 標頭產生函式會以 JSON 鍵值配對的形式產生輸出內容,做為 HTTP 標頭。預測函式的簽章會定義標頭產生函式的簽章。
以下範例顯示 google_ml.embedding()
預測函式的簽章。
CREATE OR REPLACE FUNCTION generate_headers(model_id VARCHAR(100), input TEXT) RETURNS JSON;
google_ml.predict_row()
預測函式的簽章如下:
CREATE OR REPLACE FUNCTION generate_headers(model_id VARCHAR(100), input JSON) RETURNS JSON;
註冊模型
如要使用模型叫用預測或生成嵌入,請向模型端點管理服務註冊模型端點。
如要進一步瞭解 google_ml.create_model()
函式,請參閱模型端點管理參考資料。
如要透過模型端點管理服務註冊模型端點,您必須啟用 google_ml_integration
擴充功能,並根據模型供應商設定驗證 (如果模型端點需要驗證)。
請務必使用postgres
預設使用者名稱存取資料庫。
設定驗證方法
以下各節說明如何設定驗證,然後新增 Vertex AI 模型端點或其他供應商的模型端點。
設定 Vertex AI 的驗證
如要使用 Google Vertex AI 模型端點,您必須將 Vertex AI 權限新增至安裝 AlloyDB Omni 時使用的服務帳戶。
為其他模型供應商設定驗證
除了 Vertex AI 模型以外,您可以在 Secret Manager 中儲存 API 金鑰或不記名權杖。如果模型端點不透過 Secret Manager 處理驗證,則可略過這個步驟。舉例來說,如果模型端點使用 HTTP 標頭傳遞驗證資訊,或完全不使用驗證,則可略過這個步驟。
本節說明如何在使用 Secret Manager 時設定驗證。
如要建立及使用 API 金鑰或不記名權杖,請完成下列步驟:
在 Secret Manager 中建立密鑰。
密碼名稱和密碼路徑會用於
google_ml.create_sm_secret()
SQL 函式。授予 Distributed Cloud 叢集存取密鑰的權限。
gcloud secrets add-iam-policy-binding 'SECRET_ID' \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role="roles/secretmanager.secretAccessor"
更改下列內容:
SECRET_ID
:Secret Manager 中的密鑰 ID。SERVICE_ACCOUNT_ID
:您在上一個步驟中建立的服務帳戶 ID。確認這是您在安裝 AlloyDB Omni 時使用的帳戶。包括完整的「PROJECT_ID.iam.gserviceaccount.com
」後置字串。例如:my-service@my-project.iam.gserviceaccount.com
您也可以在專案層級將這個角色授予服務帳戶。
生成嵌入項目
本節說明如何透過預先發布功能,試驗註冊 AI 模型端點,以及透過模型端點管理功能叫用預測。
在模型端點管理中新增及註冊模型端點後,您可以使用模型 ID 參照這些端點,藉此生成嵌入。
事前準備
請確認您已向模型端點管理服務註冊模型端點。
生成嵌入項目
使用 google_ml.embedding()
SQL 函式呼叫已註冊的模型端點,並使用文字嵌入模型類型生成嵌入項目。
如要呼叫模型並生成嵌入,請使用下列 SQL 查詢:
SELECT
google_ml.embedding(
model_id => 'MODEL_ID',
content => 'CONTENT');
更改下列內容:
MODEL_ID
:註冊模型端點時定義的模型 ID。CONTENT
:要翻譯成向量嵌入的文字。
範例
本節列出一些範例,說明如何使用已註冊的模型端點產生嵌入內容。
內建支援的文字嵌入模型
如要為已註冊的 textembedding-gecko@002
模型端點產生嵌入內容,請執行下列陳述式:
SELECT
google_ml.embedding(
model_id => 'textembedding-gecko@002',
content => 'AlloyDB is a managed, cloud-hosted SQL database service');
叫用預測
本節說明如何透過預先發布功能,試驗註冊 AI 模型端點,以及透過模型端點管理功能叫用預測。
在模型端點管理中新增及註冊模型端點後,您可以使用模型 ID 參照這些端點,叫用預測功能。
事前準備
請確認您已向模型端點管理服務註冊模型端點。
叫用一般模型的預測功能
使用 google_ml.predict_row()
SQL 函式呼叫已註冊的通用模型端點,以叫用預測。google_ml.predict_row()
函式可與任何模型類型搭配使用。
SELECT
google_ml.predict_row(
model_id => 'MODEL_ID',
request_body => 'REQUEST_BODY');
更改下列內容:
MODEL_ID
:註冊模型端點時定義的模型 ID。REQUEST_BODY
:預測函式的參數,格式為 JSON。
範例
本節列出一些範例,說明如何使用已註冊的模型端點叫用預測。
如要為已註冊的 gemini-pro
模型端點產生預測結果,請執行下列陳述式:
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';
模型端點管理 API 參考資料
本節列出 google_ml_integration
擴充功能提供的不同函式參數,用於註冊及管理模型端點,以及使用模型端點管理服務管理密鑰。
您必須先將 google_ml_integration.enable_model_support
資料庫旗標設為 on
,才能開始使用擴充功能。
模型
請參閱這份參考資料,瞭解可管理模型端點的函式參數。
google_ml.create_model()
個函式
以下說明如何呼叫用於註冊模型端點中繼資料的 google_ml.create_model()
SQL 函式:
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');
參數 | 必填 | 說明 |
---|---|---|
MODEL_ID |
所有模型端點都必須提供這項資訊 | 您定義的模型端點專屬 ID。 |
REQUEST_URL |
其他內建支援的文字嵌入模型端點則為選用 | 新增其他文字嵌入和通用模型端點時,模型專屬的端點。如果是 AlloyDB for PostgreSQL,請提供 https URL。函式為內建模型端點產生的要求網址,是指叢集的專案和區域或位置。如要參照其他專案,請務必明確指定 model_request_url 。如果是自訂託管模型端點,請確保模型端點可從 Distributed Cloud 所在的網路存取。 |
PROVIDER_ID |
內建支援的文字嵌入模型端點必須提供這項資訊 | 模型端點的供應商。預設值為 custom 。設為下列其中一個值:
|
MODEL_TYPE |
通用模型端點為選用項目 | 模型類型。 設為下列其中一項:
|
MODEL_QUALIFIED_NAME |
內建支援的文字嵌入模型必須提供,其他模型端點則為選用 | 內建支援的文字嵌入模型完整名稱。 |
AUTH_TYPE |
選用,除非模型端點有特定驗證要求 | 模型端點使用的驗證類型。 如果其他供應商使用 Secret Manager 進行驗證,您可以將其設為 alloydb_service_agent_iam (適用於 Vertex AI 模型) 或 secret_manager 。如果使用驗證標頭,則不需要設定這個值。 |
AUTH_ID |
請勿為 Vertex AI 模型端點設定;所有其他模型端點都必須設定,這些端點會將密鑰儲存在 Secret Manager 中 | 您設定的密碼 ID,用於註冊模型端點。 |
GENERATE_HEADER_FUNCTION |
選用 | 產生自訂標頭的函式名稱。 這個函式的簽章取決於您使用的預測函式。 |
INPUT_TRANSFORM_FUNCTION |
內建支援的文字嵌入模型端點為選用設定;請勿為通用模型端點設定 | 這個函式會將相應預測函式的輸入內容轉換為模型專屬的輸入內容。 |
OUTPUT_TRANSFORM_FUNCTION |
內建支援的文字嵌入模型端點為選用設定;請勿為通用模型端點設定 | 將模型專屬輸出內容轉換為預測函式輸出內容的函式。 |
google_ml.alter_model()
以下說明如何呼叫 google_ml.alter_model()
SQL 函式,用來更新模型端點中繼資料:
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');
如要瞭解必須為每個參數設定的值,請參閱「建立模型」。
google_ml.drop_model()
個函式
以下說明如何呼叫用於捨棄模型端點的 google_ml.drop_model()
SQL 函式:
CALL google_ml.drop_model('MODEL_ID');
參數 | 說明 |
---|---|
MODEL_ID |
您定義的模型端點專屬 ID。 |
google_ml.list_model()
個函式
以下說明如何呼叫 google_ml.list_model()
SQL 函式,列出模型端點資訊:
SELECT google_ml.list_model('MODEL_ID');
參數 | 說明 |
---|---|
MODEL_ID |
您定義的模型端點專屬 ID。 |
google_ml.model_info_view
個檢視表
下列範例說明如何呼叫 google_ml.model_info_view
檢視畫面,列出所有模型端點的模型端點資訊:
SELECT * FROM google_ml.model_info_view;
密鑰
請參閱這份參考資料,瞭解可管理密鑰的函式參數。
google_ml.create_sm_secret()
個函式
以下說明如何呼叫 google_ml.create_sm_secret()
SQL 函式,用於新增在 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');
參數 | 說明 |
---|---|
SECRET_ID |
您設定的密碼 ID,用於註冊模型端點。 |
PROJECT_ID |
包含密鑰的 Google Cloud 專案 ID。這個專案可以與包含 PostgreSQL 適用的 AlloyDB 叢集的專案不同。 如果是 AlloyDB Omni,則為包含密鑰的 Google Cloud 專案 ID。 |
SECRET_MANAGER_SECRET_ID |
您建立密鑰時,在 Secret Manager 中設定的密鑰 ID。 |
VERSION_NUMBER |
密鑰 ID 的版本號碼。 |
google_ml.alter_sm_secret()
個函式
以下說明如何呼叫用於更新密鑰資訊的 google_ml.alter_sm_secret()
SQL 函式:
CALL
google_ml.alter_sm_secret(
secret_id => 'SECRET_ID',
secret_path => 'projects/project-id/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
如要瞭解必須為每個參數設定的值,請參閱「建立密鑰」。
google_ml.drop_sm_secret()
個函式
以下說明如何呼叫 google_ml.drop_sm_secret()
SQL 函式,用來捨棄密鑰:
CALL google_ml.drop_sm_secret('SECRET_ID');
參數 | 說明 |
---|---|
SECRET_ID |
您設定的密鑰 ID,後續用於註冊模型端點。 |
預測函式
請參閱這份參考資料,瞭解可產生嵌入內容或叫用預測結果的函式參數。
google_ml.embedding()
個函式
以下說明如何產生嵌入:
SELECT
google_ml.embedding(
model_id => 'MODEL_ID',
contents => 'CONTENT');
參數 | 說明 |
---|---|
MODEL_ID |
您定義的模型端點專屬 ID。 |
CONTENT |
要轉換為向量嵌入的文字。 |
google_ml.predict_row()
個函式
以下說明如何叫用預測:
SELECT
google_ml.predict_row(
model_id => 'MODEL_ID',
request_body => 'REQUEST_BODY');
參數 | 說明 |
---|---|
MODEL_ID |
您定義的模型端點專屬 ID。 |
REQUEST_BODY |
預測函式的參數 (JSON 格式)。 |
轉換函式
請參閱這份參考資料,瞭解輸入和輸出轉換函式的參數。
輸入轉換函式
以下是文字嵌入模型端點的預測函式簽章:
CREATE OR REPLACE FUNCTION INPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), input_text TEXT) RETURNS JSON;
參數 | 說明 |
---|---|
INPUT_TRANSFORM_FUNCTION |
這個函式會將相應預測函式的輸入內容,轉換為模型端點專屬的輸入內容。 |
輸出轉換函式
以下是文字嵌入模型端點的預測函式簽章:
CREATE OR REPLACE FUNCTION OUTPUT_TRANSFORM_FUNCTION(model_id VARCHAR(100), response_json JSON) RETURNS real[];
參數 | 說明 |
---|---|
OUTPUT_TRANSFORM_FUNCTION |
這個函式會將模型端點專屬輸出內容轉換為預測函式輸出內容。 |
轉換函式範例
如要進一步瞭解如何為模型端點建立轉換函式,請考慮需要 JSON 輸入和輸出的自訂代管文字嵌入模型端點。
以下 cURL 要求範例會根據提示和模型端點建立嵌入內容:
curl -m 100 -X POST https://cymbal.com/models/text/embeddings/v1 \
-H "Content-Type: application/json"
-d '{"prompt": ["AlloyDB Embeddings"]}'
系統會傳回下列範例回應:
[[ 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]]
根據這項輸入內容和回覆,我們可以推斷出以下資訊:
模型預期透過
prompt
欄位輸入 JSON。這個欄位接受輸入陣列。由於google_ml.embedding()
函式是列層級函式,因此一次只能輸入一個文字。因此,您需要建立輸入轉換函式,建構含有單一元素的陣列。模型的回覆是嵌入陣列,每個提示輸入內容對應一個嵌入。由於
google_ml.embedding()
函式是資料列層級函式,因此一次只會傳回單一輸入。因此,您需要建立輸出轉換函式,從陣列中擷取嵌入。
以下範例顯示註冊模型端點管理服務時,用於這個模型端點的輸入和輸出轉換函式:
輸入轉換函式
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;
$$;
輸出轉換函式
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;
$$;
HTTP 標頭產生函式
以下顯示標頭生成函式的簽章,註冊其他文字嵌入模型端點時,可與 google_ml.embedding()
預測函式搭配使用。
CREATE OR REPLACE FUNCTION GENERATE_HEADERS(model_id VARCHAR(100), input_text TEXT) RETURNS JSON;
google_ml.predict_row()
預測函式的簽章如下:
CREATE OR REPLACE FUNCTION GENERATE_HEADERS(model_id TEXT, input JSON) RETURNS JSON;
參數 | 說明 |
---|---|
GENERATE_HEADERS |
用於產生自訂標頭的函式。註冊模型端點時,您也可以傳遞標頭產生函式產生的授權標頭。 |
標頭產生函式範例
如要進一步瞭解如何建立函式,以產生 JSON 鍵值對做為 HTTP 標頭,請考慮使用自訂代管的文字嵌入模型端點。
下列 cURL 要求範例會傳遞 version
HTTP 標頭,模型端點會使用這個標頭:
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"]}'
模型會透過 version
欄位接收文字輸入內容,並以 JSON 格式傳回版本值。以下範例顯示向模型端點管理服務註冊時,用於這個文字嵌入模型端點的標頭產生函式:
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;
$$;
使用 API 金鑰產生標頭的函式
以下範例說明如何使用 API 金鑰設定驗證。
嵌入模型
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;
$$;
將 API_KEY
替換為模型供應商的 API 金鑰。
通用模型
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;
$$;
將 API_KEY
替換為模型供應商的 API 金鑰。
產生要求網址
使用要求網址產生函式,推斷內建支援的模型端點要求網址。這個函式的簽名如下:
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)
參數 | 說明 |
---|---|
GENERATE_REQUEST_URL |
這項函式會產生擴充功能的要求網址,適用於內建支援功能的模型端點。 |
支援的模型
您可以使用模型端點管理功能,註冊任何文字嵌入或一般模型端點。模型端點管理也包括預先註冊的 Vertex AI 模型,以及內建支援的模型。
預先註冊的 Vertex AI 模型
模型類型 | 模型 ID | 擴充功能版本 |
---|---|---|
generic |
|
1.4.2 以上版本 |
text_embedding |
|
1.3 以上版本 |
內建支援的機型
Vertex AI
合格模型名稱 | 模型類型 |
---|---|
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 |