本頁面說明如何在 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內網路中代管的模型
- Vertex AI Model Garden 中的
運作方式
您可以使用模型端點管理服務,註冊符合下列條件的模型端點:
- 模型輸入和輸出內容支援 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-embedding
或 generic
模型類型。
- 內建支援的文字嵌入模型
- 模型端點管理服務為所有版本的
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 服務帳戶會用於驗證。對於其他模型,儲存在 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
以上版本。如要將執行個體升級至此版本,請參閱「自助式維護」一文。
後續步驟
- 為模型提供者設定驗證。
- 使用模型端點管理功能註冊模型端點。
- 瞭解 模型端點管理參考資料。