在 Cloud SQL 總覽中註冊及呼叫遠端 AI 模型

本頁面說明如何註冊 AI 模型端點,以及如何透過 Cloud SQL 中的模型端點管理功能叫用預測。如要在正式環境中使用 AI 模型,請參閱「使用 Cloud SQL 建構生成式 AI 應用程式」和「使用向量嵌入」。

總覽

模型端點管理功能可讓您註冊模型端點、管理 Cloud SQL 執行個體中的模型端點中繼資料,然後使用 SQL 查詢與模型互動。Cloud SQL 提供 google_ml_integration 擴充功能,其中包含新增及註冊模型相關模型端點中繼資料的函式。您可以使用這些模型生成向量嵌入,或叫用預測。

您可以使用模型端點管理功能,註冊下列模型類型:

  • Vertex AI 文字嵌入模型。
  • 在 Google Cloud網路中代管的自訂代管文字嵌入模型。
  • 提供 JSON 格式 API 的通用模型。這類模型包括:
    • Vertex AI Model Garden 中的 gemini-pro 模型
    • OpenAI 模型的 open_ai 模型
    • 網路中託管的模型 Google Cloud

運作方式

您可以透過模型端點管理服務,註冊符合下列條件的模型端點:

  • 模型輸入和輸出內容支援 JSON 格式。
  • 您可以使用 REST 通訊協定呼叫模型。

向模型端點管理服務註冊模型端點時,模型端點管理服務會為每個端點註冊專屬模型 ID,做為模型的參照。您可以使用這個模型 ID 查詢模型,如下所示:

  • 生成嵌入項目,將文字提示轉換為數值向量。在資料庫中啟用 pgvector 擴充功能後,即可將產生的嵌入項目儲存為向量資料。詳情請參閱「使用 pgvector 查詢及建立嵌入索引」。

  • 在交易中,使用 SQL 呼叫模型來叫用預測。

您的應用程式可以使用 google_ml_integration 擴充功能管理模型端點。這項擴充功能提供下列 SQL 函式:

  • google_ml.create_model():註冊預測或嵌入函式中使用的模型端點
  • google_ml.create_sm_secret():使用 Secret Manager 中的密鑰,API 金鑰會儲存在這裡 Google Cloud
  • google_ml.embedding():生成文字嵌入
  • google_ml.predict_row():在您呼叫支援 JSON 輸入和輸出格式的通用模型時,生成預測結果

基本概念

開始使用模型端點管理服務前,請先瞭解連線及使用模型所需的概念。

模型提供者

模型供應商是支援的模型代管供應商。下表列出您必須根據使用的模型供應商設定的模型供應商值:

模型提供者 在函式中設定為…
Vertex AI (包括 Gemini) google
OpenAI open_ai
在 Vertex AI 以外託管的其他模型 custom

預設模型供應商為 custom

模型類型

模型類型是指 AI 模型的類型。註冊模型端點時,您可以為端點設定 text-embeddinggeneric 模型類型。

內建支援的文字嵌入模型
模型端點管理服務內建支援所有版本的 textembedding-gecko 模型。如要註冊這些模型端點,請使用 google_ml.create_model() 函式。Cloud SQL 會自動為這些模型設定預設轉換函式。
這些模型的模型類型為 text-embedding
其他文字嵌入模型
如果是其他文字嵌入模型,您需要建立轉換函式,處理模型支援的輸入和輸出格式。您也可以視需要使用 HTTP 標頭產生函式,產生模型所需的自訂標頭。
這些模型的模型類型為 text-embedding
通用模型
模型端點管理服務也支援註冊文字嵌入模型以外的所有其他模型類型。如要叫用一般模型的預測功能,請使用 google_ml.predict_row() 函式。您可以設定模型端點中繼資料,例如專屬模型的要求端點和 HTTP 標頭。
註冊泛型模型端點時,您無法傳遞轉換函式。請確保在叫用預測時,函式的輸入內容為 JSON 格式,並剖析 JSON 輸出內容,以衍生最終輸出內容。
這些模型的模型類型為 generic。由於 generic 是預設模型類型,因此如果您為這個類型註冊模型端點,則設定模型類型是選用步驟。

驗證方法

您可以使用 google_ml_integration 擴充功能,指定存取模型的不同驗證方法。這些方法為選用設定,只有在需要驗證才能存取模型時才需要設定。

如果是 Vertex AI 模型,則會使用 Cloud SQL 服務帳戶進行驗證。如果是其他模型,則可搭配 google_ml.create_sm_secret() SQL 函式,使用儲存在 Secret Manager 中的 API 金鑰或不記名權杖。

下表列出可設定的驗證方法:

驗證方式 在函式中設定為… 模型提供者
Cloud SQL 服務代理人 cloudsql_service_agent_iam Vertex AI 供應商
Secret Manager secret_manager Vertex AI 外部託管的模型

預測函式

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;

如要進一步瞭解如何建立標題生成函式,請參閱標題生成函式範例

限制

  • 如要在 Cloud SQL 執行個體中使用 AI 模型,執行個體的維護版本必須為 R20240910.01_02 以上。如要將執行個體升級至這個版本,請參閱自助式維護

後續步驟