调用预测

本页面介绍了如何使用 publicgoogle_ml 命名空间中的函数来调用预测。google_ml_integration 扩展程序包含这些命名空间的预测函数。

您可以在 public 架构中使用 ml_predict_row() 函数,而无需注册端点,即可使用 Vertex AI 中托管的任何通用模型。google_ml 架构中的 google_ml.predict_row() 函数可与已通过模型端点管理注册的任何模型搭配使用。

如需调用预测,请选择以下架构之一。

准备工作

如需让 AlloyDB 调用预测,请执行以下操作:

调用在线预测

使用 ml_predict_row() SQL 函数根据您的数据调用在线预测。

函数的初始参数的格式取决于您要使用的机器学习模型是位于 Vertex AI Model Garden 中,还是在 Google Cloud 项目中运行的端点。

使用 Vertex AI Model Garden 中的模型

如需使用在 Vertex AI Model Garden 中运行的机器学习模型调用在线预测,请为 google_ml.predict_row() SQL 函数使用以下语法:

SELECT ml_predict_row('projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/MODEL_ID', '{ CONTENTS }');

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目的 ID

  • REGION_ID:模型所在的 Google Cloud 区域的 ID,例如 gemini-pro 所在的 us-central1

  • MODEL_ID:要使用的机器学习模型的 ID,例如 gemini-pro

  • CONTENTS:预测调用的输入,采用 JSON 格式

如果机器学习模型与 AlloyDB 集群存储在同一项目和区域,则可以缩写此函数的第一个参数:

SELECT ml_predict_row('publishers/google/models/MODEL_ID', '{ CONTENTS }');

如需了解模型的 JSON 响应消息,请参阅生成式 AI 基础模型参考文档

如需查看示例,请参阅调用示例

使用 Vertex AI 模型端点

如需使用 Vertex AI 模型端点调用在线预测,请为 ml_predict_row() SQL 函数使用以下语法:

SELECT ml_predict_row('projects/PROJECT_ID/locations/REGION_ID/endpoints/ENDPOINT_ID', '{ CONTENTS }');

替换以下内容:

  • PROJECT_ID:模型所在的 Google Cloud 项目的 ID

  • REGION_ID:模型所在的 Google Cloud 区域的 ID,例如 us-central1

  • ENDPOINT_ID:模型端点的 ID

  • CONTENTS:预测调用的输入,采用 JSON 格式

如果端点与 AlloyDB 集群位于同一项目和区域,则可以缩写此函数的第一个参数:

SELECT ml_predict_row('endpoints/ENDPOINT_ID', '{ CONTENTS }');

如需了解模型的 JSON 响应消息,请参阅 PredictResponse

调用示例

以下示例使用 Model Garden 中提供的 gemini-pro,根据作为字面量参数提供给 ml_predict_row() 的简短提示生成文本:

SELECT
  json_array_elements(ml_predict_row('publishers/google/models/gemini-1.5-pro:streamGenerateContent',
      '{ "contents": [ { "role": "user", "parts": [ { "text": "For TPCH database schema as mentioned here https://www.tpc.org/TPC_Documents_Current_Versions/pdf/TPC-H_v3.0.1.pdf , generate a SQL query to find all supplier names which are located in the India nation."
} ] } ] }'))-> 'candidates' -> 0 -> 'content' -> 'parts' -> 0 -> 'text';

响应一个 JSON 对象。如需详细了解对象的格式,请参阅响应正文

以下示例通过以下方式修改前一个示例:

  • 该示例将当前数据库的 messages.message 列的内容用作输入。

  • 此示例演示了如何使用 json_build_object() 函数来帮助设置函数参数的格式。


select ml_predict_row('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.5-pro:generateContent', json_build_object('contents', json_build_object('text', message))) from messages;

返回的 JSON 对象现在在其 predictions 数组中为 messages 表中的每一行包含一个对应条目。

由于响应是一个 JSON 对象,因此您可以使用 PostgreSQL 数组运算符从中拉取特定字段:

select ml_predict_row('projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.5-pro:generateContent', json_build_object('contents', json_build_object('text', message)))->'predictions'->0->'content' FROM messages;

如需查看 ml_predict_row() 的更多示例参数,请参阅快速入门:使用 Vertex AI API

后续步骤