本页面介绍了在使用模型端点管理注册 AI 模型端点和调用预测之前必须了解的关键概念。
如需向 AlloyDB for PostgreSQL 注册远程模型端点,请参阅在 AlloyDB 中注册和调用远程 AI 模型。
概览
借助模型端点管理,您可以注册模型端点、在数据库集群中管理模型端点元数据,并使用 SQL 查询调用远程模型端点。它提供了 google_ml_integration
扩展程序,其中包含可让您向 AlloyDB 注册与 AI 模型相关的元数据的函数。此注册的元数据用于生成向量嵌入或调用预测。
您可以使用模型端点管理注册的一些示例模型类型如下:
- Vertex AI 文本嵌入和通用模型
- 嵌入 Hugging Face 或 OpenAI 等第三方提供商提供的模型
- 自定义托管文本嵌入模型,包括自托管的模型或通过专用端点提供的模型
- 使用基于 JSON 的 API 的通用模型,例如 Hugging Face 上托管的
facebook/bart-large-mnli
模型、Vertex AI Model Garden 中的gemini-pro
模型或 Anthropic 的claude
模型
工作原理
您可以使用模型端点管理功能注册符合以下条件的模型端点:
- 模型输入和输出支持 JSON 格式。
- 您可以使用 REST 协议来调用模型。
当您使用模型端点管理注册模型端点时,模型端点管理会使用您提供的唯一模型 ID 注册每个端点,以作为对模型的引用。
您可以使用模型端点 ID 查询模型,以便:
生成嵌入以将文本提示转换为数值向量。在数据库中启用
vector
扩展程序后,您可以将生成的嵌入存储为向量数据。如需了解详情,请参阅存储向量嵌入。使用 sql 调用预测。
您的应用可以使用 google_ml_integration
扩展程序访问模型端点管理。此扩展程序提供以下函数:
google_ml.create_model()
SQL 函数,用于注册预测或嵌入函数中使用的模型端点。google_ml.create_sm_secret()
SQL 函数,使用 Google CloudSecret Manager 中的 Secret(API 密钥存储在其中)。google_ml.embedding()
SQL 函数,一个生成文本嵌入的预测函数。嵌入函数的返回值类型为REAL[]
。google_ml.predict_row()
SQL 函数,用于在您调用支持 JSON 输入和输出格式的通用模型时生成预测。- 其他辅助函数,用于处理生成自定义网址、生成 HTTP 标头或传递转换函数。
- 用于管理已注册模型端点和 Secret 的函数。
主要概念
在开始使用模型端点管理之前,请了解连接到模型和使用模型所需的概念。
模型提供商
模型提供商指示支持的模型托管服务提供商。设置模型提供商是可选的,但有助于模型端点管理识别提供商,并自动格式化受支持模型的标头。下表显示了您可以根据所使用的模型提供商设置的模型提供商值:
模型提供商 | 在函数中设置为… |
---|---|
Vertex AI | google |
Hugging Face 模型 | hugging_face |
Anthropic 模型 | anthropic |
OpenAI | open_ai |
其他模型 | custom |
默认的模型提供商为 custom
。
支持的身份验证方法因提供商类型而异。Vertex AI 模型使用用于安装 AlloyDB Omni 的服务账号进行身份验证,而其他提供商可以使用 Secret Manager 或通过标头传递身份验证详细信息。如需了解详情,请参阅设置身份验证。
模型类型
模型类型表示 AI 模型的类型。该扩展程序支持文本嵌入以及任何通用模型类型。注册模型端点时,您可以设置的受支持模型类型为 text-embedding
和 generic
。
注册通用模型端点时,设置模型类型是可选的,因为 generic
是默认模型类型。
- 预注册的 Vertex AI 模型
- 模型端点管理支持将某些文本嵌入和通用 Vertex AI 模型作为预注册的模型 ID。您可以直接使用模型 ID 生成嵌入或根据模型类型调用预测。
如需详细了解受支持的预注册模型,请参阅预注册的 Vertex AI 模型。
例如,如需调用预注册的textembedding-gecko
模型,您可以使用嵌入函数直接调用该模型:SELECT google_ml.embedding( model_id => 'textembedding-gecko', content => 'AlloyDB is a managed, cloud-hosted SQL database service');
- 具有内置支持的模型
- 模型端点管理为 Vertex AI、Anthropic 和 OpenAI 的某些模型提供内置支持。对于具有内置支持的文本嵌入模型,AlloyDB 会自动设置默认转换函数。
- 在注册这些模型端点时,明确设置限定名称。如需详细了解内置支持的模型列表,请参阅具有内置支持的模型。
- 这些模型的类型可以是
text-embedding
或generic
。 - 其他文本嵌入模型
- 如需注册不提供内置支持的文本嵌入模型端点,我们建议您创建转换函数来处理模型支持的输入和输出格式。(可选)根据模型要求,您可能还需要创建自定义标头函数来指定标头。
- 这些模型的类型为
text-embedding
。 - 通用模型
- 除了文本嵌入模型之外,模型端点管理还支持注册所有其他类型的模型。如需为通用模型调用预测,请使用
google_ml.predict_row()
函数。您可以设置模型端点元数据,例如模型特有的请求端点和 HTTP 标头。 - 注册通用模型端点时,您无法传递转换函数。请确保在调用预测时,函数的输入采用 JSON 格式,并确保解析 JSON 输出以获得最终输出。
- 这些模型的类型为
generic
。
身份验证
身份验证类型表示您可以使用 google_ml_integration
扩展程序连接到模型端点管理的身份验证类型。设置身份验证是可选的,只有在您需要通过身份验证才能访问模型时才需要设置身份验证。
对于 Vertex AI 模型,AlloyDB 服务账号用于进行身份验证。对于其他模型,在 Secret Manager 中作为 Secret 存储的 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()
- 用于调用已注册的文本嵌入模型端点以生成嵌入。
- 对于不提供内置支持的文本嵌入模型,输入和输出参数是模型所特有的,需要进行转换,才能让函数调用模型。您必须创建一个转换输入函数,以将预测函数的输入转换为模型特有的输入,并创建一个转换输出函数,以将模型特有的输出转换为预测函数输出。
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;
如需详细了解如何创建标头生成函数,请参阅标头生成函数示例。
后续步骤
- 为模型提供商设置身份验证。
- 使用模型端点管理注册模型端点。
- 查看模型端点管理参考文档。