本頁面說明如何透過預先發布版,使用 AlloyDB Omni 中的模型端點管理功能,實驗性地註冊 AI 模型端點及叫用預測功能。如要在正式環境中使用 AI 模型,請參閱「使用 AlloyDB AI 建構生成式 AI 應用程式」和「使用向量嵌入」。
如要向 AlloyDB 註冊遠端模型端點,請參閱「在 AlloyDB 中註冊及呼叫遠端 AI 模型」。
總覽
模型端點管理搶先版可讓您註冊模型端點、管理資料庫叢集中的模型端點中繼資料,然後使用 SQL 查詢與模型互動。這個擴充功能提供 google_ml_integration
擴充功能,內含新增及註冊模型相關模型端點中繼資料的函式,然後使用模型產生向量嵌入或叫用預測。
您可以使用模型端點管理服務註冊下列範例模型類型:
- Vertex AI 文字嵌入模型
- 第三方供應商提供的嵌入模型,例如 Anthropic、Hugging Face 或 OpenAI。
- 自訂代管文字嵌入模型
- 使用 JSON 型 API 的一般模型,例如在 Hugging Face 上代管的
facebook/bart-large-mnli
模型,或 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 標頭,或傳遞一般模型的轉換函式。
- 用於管理已註冊模型端點和密鑰的函式。
基本概念
開始使用模型端點管理服務前,請先瞭解連線及使用模型所需的概念。
模型供應商 {: #model-provider}̦
模型供應商:表示支援的模型代管供應商。下表列出您必須根據使用的模型供應商設定的模型供應商值:
模型提供者 | 在函式中設定為… |
---|---|
Vertex AI | google |
Hugging Face 模型 | custom |
Anthropic 模型 | custom |
其他模型 | custom |
OpenAI | open_ai |
預設模型供應商為 custom
。
支援的驗證方法會因供應商類型而異。Vertex AI 模型會使用 AlloyDB 服務帳戶進行驗證,其他供應商則可使用 Secret Manager 進行驗證。
模型類型
模型類型:指出 AI 模型的類型。這項擴充功能支援文字嵌入,以及任何一般模型類型。註冊模型端點時,可設定的支援模型類型為 text-embedding
和 generic
。註冊一般模型端點時,設定模型類型為選用步驟,因為 generic
是預設模型類型。
- 內建支援的文字嵌入模型
- 模型端點管理功能內建支援 Vertex AI 的所有版本
textembedding-gecko
模型,以及 OpenAI 的text-embedding-ada-002
模型。如要註冊這些模型端點,請使用google_ml.create_model()
函式。AlloyDB 會自動為這些模型設定預設轉換函式。 - 這些模型的模型類型為
text-embedding
。 - 其他文字嵌入模型
- 如果是其他文字嵌入模型,您需要建立轉換函式,處理模型支援的輸入和輸出格式。您也可以視需要使用 HTTP 標頭產生函式,產生模型所需的自訂標頭。
- 這些模型的模型類型為
text-embedding
。 - 通用模型
- 模型端點管理服務也支援註冊文字嵌入模型以外的所有其他模型類型。如要叫用一般模型的預測功能,請使用
google_ml.predict_row()
函式。您可以設定模型端點中繼資料,例如專屬模型的要求端點和 HTTP 標頭。 - 註冊泛型模型端點時,無法傳遞轉換函式。請確保在叫用預測時,函式的輸入內容為 JSON 格式,並剖析 JSON 輸出內容,以衍生最終輸出內容。
- 這些模型的模型類型為
generic
。
驗證
「驗證類型」會指出您可使用哪種驗證類型,透過 google_ml_integration
擴充功能連線至模型端點管理服務。驗證設定為選用,只有在需要驗證才能存取模型時才需要設定。
如果是 Vertex AI 模型,系統會使用 AlloyDB 服務帳戶進行驗證。如果是其他模型,則可使用儲存在 Secret Manager 中的 API 金鑰或不記名權杖,搭配 google_ml.create_sm_secret()
SQL 函式。
下表列出可設定的驗證類型:
驗證方式 | 在函式中設定為… | 模型提供者 |
---|---|---|
AlloyDB 服務代理 | alloydb_service_agent_iam |
Vertex AI 供應商 |
Secret Manager | secret_manager |
第三方供應商,例如 Anthropic、Hugging Face 或 OpenAI |
預測函式
google_ml_integration
擴充功能包含下列預測函式:
google_ml.embedding()
- :用於呼叫已註冊的文字嵌入模型端點,以生成嵌入項目。這項服務內建支援 Vertex AI 的
textembedding-gecko
模型和 OpenAI 的text-embedding-ada-002
模型。 - 對於沒有內建支援的文字嵌入模型,輸入和輸出參數是模型專屬的,需要轉換才能讓函式呼叫模型。建立轉換輸入函式,將預測函式的輸入內容轉換為模型專屬輸入內容,並建立轉換輸出函式,將模型專屬輸出內容轉換為預測函式輸出內容。
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;
如要進一步瞭解如何建立標頭產生函式,請參閱「HTTP 標頭產生函式」。