选择自然语言处理函数

本文档比较了 BigQuery ML 中提供的自然语言处理函数,即 ML.GENERATE_TEXTML.TRANSLATEML.UNDERSTAND_TEXT

ML.GENERATE_TEXT 可以执行其他两个函数也可以执行的任务,如下图所示:

显示使用 Vertex AI 模型或 Cloud AI 服务的远程模型的常见工作流的示意图。

如果函数具有重叠的功能,您可以使用本文档中的信息来帮助决定使用哪个函数。

概括来讲,这些函数之间的区别如下所示:

  • ML.GENERATE_TEXT 非常适合以较低的费用执行自定义自然语言处理 (NLP) 任务。此函数提供更多语言支持、更快的吞吐量和模型调整功能,也适用于多模态模型。
  • ML.TRANSLATE 非常适合用于执行特定于翻译的 NLP 任务,这些任务需要支持较高的每分钟查询率。
  • ML.UNDERSTAND_TEXT 非常适合执行 Cloud Natural Language API 支持的 NLP 任务。

支持的模型

支持的模型如下所示:

支持的任务

支持的任务如下:

  • ML.GENERATE_TEXT:您可以执行任何 NLP 任务。模型执行的任务取决于您指定的提示。例如,如需执行问答任务,您可以提供类似于 CONCAT("What are the key concepts in the following article?: ", article_text) 的提示。您还可以在提示中提供上下文。例如 CONCAT("context: Only output 'yes' or 'no' to the following question: ", question)
  • ML.TRANSLATE:您可以执行以下任务:

  • ML.UNDERSTAND_TEXT:您可以执行以下任务:

数据上下文

在选择要使用的函数时,请考虑您的数据是否可以单独分析,或者是否需要额外的上下文来支持分析。如果您的数据需要其他上下文,则将 ML.GENERATE_TEXT 与 Vertex AI 模型搭配使用是更好的选择,因为这些模型允许您在提交的提示中提供上下文。请注意,在输入时提供额外的上下文会增加词元数和费用。

如果模型可以在不考虑其他上下文的情况下分析数据(例如,在不知道文本写入原因的情况下翻译文本字符串),则使用 ML.TRANSLATEML.UNDERSTAND_TEXT 可能是更好的选择,但前提是支持您要执行的任务。

输出结构

ML.GENERATE_TEXT 始终在 ml_generate_text_llm_result 输出列中返回结果。您还可以使用提示来定义输出结构。例如,您可以指示模型以 JSON 格式返回包含自定义父字段和子字段的结果,并提供有关如何生成此结果的示例。

对于每次成功调用 API,ML.TRANSLATEML.UNDERSTAND_TEXT 都会为给定任务类型生成相同的输出。此外,这些函数的输出包含有关其结果的其他元数据。例如,ML.TRANSLATE 输出包含有关输入语言的信息,ML.UNDERSTAND_TEXT 输出包含有关情感分析任务的情感量级的信息。您可以使用 Vertex AI 模型生成此元数据,但这需要大量提示工程,并且可能无法提供相同的粒度。

价格

价格如下所示:

模型训练

自定义训练支持如下所示:

  • ML.GENERATE_TEXT:某些模型支持监督式调优
  • ML.TRANSLATE:不支持自定义训练。
  • ML.UNDERSTAND_TEXT:不支持自定义训练。

多模态

多模态支持如下:

  • ML.GENERATE_TEXT:支持文本和“文本 + 图片”输入。
  • ML.TRANSLATE:支持文本输入。
  • ML.UNDERSTAND_TEXT:支持文本输入。

每分钟查询次数 (QPM) 限制

QPM 限制如下:

词元限制

词元限制如下:

支持的语言

支持的语言如下:

  • ML.GENERATE_TEXT:支持 Vertex AI 语言的生成式 AI。
  • ML.TRANSLATE:支持 Cloud Translation API 语言
  • ML.UNDERSTAND_TEXT:支持 Cloud Natural Language API 语言

推出区域

推出区域如下:

  • ML.GENERATE_TEXT:适用于所有 Vertex AI 区域的生成式 AI。
  • ML.TRANSLATE:在 EUUS 多区域中提供。
  • ML.UNDERSTAND_TEXT:在 EUUS 多区域中提供。