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

本頁面說明如何在 Cloud SQL 中註冊 AI 模型端點,並透過模型端點管理功能叫用預測功能。如要在實際環境中使用 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():使用 Google CloudSecret Manager 中的密鑰,其中儲存了 API 金鑰
  • 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 輸出內容,以便衍生最終輸出內容。
這些模型的模型類型為 genericgeneric 是預設模型類型,因此如果您為此類型註冊模型端點,則設定模型類型為選用。

驗證方法

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

對於 Vertex AI 模型,Cloud SQL 服務帳戶會用於驗證。對於其他模型,儲存在 Secret Manager 中做為密鑰的 API 或權杖金鑰,可搭配 google_ml.create_sm_secret() SQL 函式使用。

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

驗證方式 在函式中設為… 模型供應者
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 以上版本。如要將執行個體升級至此版本,請參閱「自助式維護」一文。

後續步驟