准备工作

创建 Google Cloud 项目

  1. 在 Google Cloud 控制台的管理资源页面上,选择或创建 Google Cloud 项目

    转到“管理资源”页面

  2. 确保您的 Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能

为零售业设置 Vertex AI Search

如需使用适用于零售业的 Vertex AI Search 以及推荐功能,您必须为零售业启用 Vertex AI Search,并接受适用于行业的 Vertex AI Search 数据使用条款。如果您还使用搜索,则必须将其启用。使用搜索功能会产生额外费用,具体视查询数量而定。如需了解详情,请参阅搜索费用

如需为零售业设置 Vertex AI Search,请完成以下步骤:

  1. 转到 Google Cloud 控制台中的适用于零售业的 Vertex AI Search 页面。

    转到 Search for Retail 页面

  2. 为零售业设置 Vertex AI Search 页面上,点击启用 API

  3. 适用于零售的 Vertex AI SearchRecommendations AI 显示为开启时,点击继续

  4. 阅读 Vertex AI Search for Industry 数据使用条款,如果您同意数据使用条款,请点击接受

    如果您接受数据使用条款,则 Google Cloud 控制台会指明您接受适用于零售的 Vertex AI Search 数据使用条款。

  5. 如果您只想使用项目来提供建议,请点击开始使用

  6. 如果除了建议之外,您还想开启搜索功能,请执行以下操作:

    1. 点击继续,然后点击开启搜索(可选)页面上的开启
    2. 点击开始使用

Google Cloud 控制台会显示已启用的零售组件的 Vertex AI Search。您现在可以配置项目的初始设置了。

为现有项目进行设置

如果您在数据使用条款于 2022 年 4 月 4 日生效之前在 Google Cloud 项目中为零售业设置了 Vertex AI Search,则必须接受 Vertex AI Search for Industry 条款才能继续在该项目中使用 Vertex AI Search for Retail。如果需要,您还必须为该项目启用搜索功能。

如需接受现有项目的 Vertex AI Search for Industry 条款,请完成以下步骤:

  1. 在 Google Cloud 控制台中,前往您的项目对应的 Search for Retail 页面。

    转到 Search for Retail 页面

  2. 数据使用条款页面上,阅读 Discovery Solutions 数据使用条款,如果您同意条款,请点击接受

  3. 如果您只想使用项目来提供建议,请点击开始使用

  4. 如果除了建议之外,您还想开启搜索功能,请执行以下操作:

    1. 点击继续,然后点击开启搜索(可选)页面上的开启
    2. 点击开始使用

关闭零售搜索或 Vertex AI Search

关闭搜索功能

如果您不想再使用搜索功能,可通过提交支持服务工单将其停用。

如需将工单设置为正确的组件,请选择以下字段:

  • 类别:机器学习
  • 组件:适用于零售行业的 Vertex AI Search:搜索和浏览
  • 子组件:帐号管理和结算

如需详细了解如何创建支持服务工单,请参阅获取支持

为零售业停用 Vertex AI Search

您可以随时通过停用适用于零售业的 Vertex AI Search 将其关闭。这会同时关闭推荐内容和搜索功能。

如需为零售业停用 Vertex AI Search,请完成以下步骤:

  1. 前往 Google Cloud 控制台中的 Vertex AI Search for Retail API/服务详情页面。

    前往 Vertex AI Search for Retail API 服务详情页面

  2. 点击停用 API

  3. 要停用 Vertex AI Search forRetail API 吗?框中,点击停用

面向零售业的 Vertex AI Search 使用入门

为新项目设置适用于零售业的 Vertex AI Search 时,Google Cloud 控制台会显示以下三个面板,以帮助您配置适用于零售业的 Vertex AI Search 项目:

  • 数据 > 目录:显示您的商品清单以及用于导入清单的链接。

  • 数据 > 事件:显示您的用户事件和用于导入历史用户事件的链接。

  • 服务配置:包含有关服务配置的详细信息,以及用于创建新服务配置的链接。

您可以使用这些面板导入数据,并为零售专用 Vertex AI Search 项目创建初始配置。

导入您的商品清单

如需导入商品清单,请完成针对数据源的一系列步骤。如需详细了解商品清单,请参阅导入清单信息

Merchant Center 同步

  1. 点击 Import product Catalog(导入商品清单)以打开 Import Data(导入数据)面板。
  2. 选择商品清单
  3. 选择 Merchant Center Sync 作为数据源。
  4. 选择您的 Merchant Center 帐号。如果您没有看到自己的帐号,请选中用户访问权限
  5. 可选:选择 Merchant Center Feed 过滤条件,以便仅导入所选 Feed 中的商品。

    如果未指定,则系统会导入所有 Feed(包括将来的 Feed)中的商品。
  6. 可选:要仅导入定位到特定国家/地区或语言的优惠,请展开显示高级选项,然后选择 Merchant Center 目标销售国家/地区和要过滤的语言。
  7. 选择您要将目录上传到的分支。
  8. 点击导入

Cloud Storage

  1. 点击 Import product Catalog(导入商品清单)以打开 Import Data(导入数据)面板。
  2. 选择商品清单作为数据源。
  3. 选择您要将目录上传到的分支。
  4. 选择零售商品清单架构作为架构。
  5. 输入数据的 Cloud Storage 位置。
  6. 如果您未启用搜索功能,请选择产品级别。

    如果这是您第一次导入目录或在完全清除目录后要重新导入,则必须选择产品级别。详细了解产品级别。在导入任何数据后更改商品级别需要花费大量精力。

    重要提示:如果项目包含的商品清单已作为变体进行注入,您将无法启用搜索功能。
  7. 点击导入

BigQuery

  1. 点击 Import product Catalog(导入商品清单)以打开 Import Data(导入数据)面板。
  2. 选择商品清单
  3. 选择 BigQuery 作为数据源。
  4. 选择您要将目录上传到的分支。
  5. 选择以下某个架构:
  6. 输入数据所在的 BigQuery 表格。
  7. 可选:在显示高级选项下,输入项目中的 Cloud Storage 存储桶的位置,作为数据的临时位置。

    如果未指定,则使用默认位置。如果指定,则 BigQuery 和 Cloud Storage 存储桶必须位于同一区域。
  8. 如果您未启用搜索功能,并且使用的是 Merchant Center 架构,请选择产品级别。

    如果这是您第一次导入目录,或者在完全清除目录后要重新导入目录,那么您必须选择产品级别。详细了解产品级别。在导入任何数据后更改商品级别需要花费大量精力。

    重要提示:如果项目包含的商品清单已作为变体进行注入,您将无法启用搜索功能。
  9. 点击导入

导入历史用户事件

如需导入历史用户事件,请完成适用于您的数据源的一系列步骤。如需详细了解历史用户事件,请参阅导入历史用户事件

Cloud Storage

  1. 点击导入用户事件以打开导入数据面板。
  2. 选择用户事件
  3. 选择 Google Cloud Storage 作为数据源。
  4. 选择 Retail User Events Schema 作为架构。
  5. 输入数据的 Cloud Storage 位置。
  6. 点击导入

BigQuery

  1. 点击导入用户事件以打开导入数据面板。
  2. 选择用户事件
  3. 选择 BigQuery 作为数据源。
  4. 选择数据架构。

  5. 输入数据所在的 BigQuery 表格。
  6. 可选:输入项目中 Cloud Storage 存储桶的位置作为数据的临时位置。
    如果未指定,则使用默认位置。如果指定,则 BigQuery 和 Cloud Storage 存储桶必须位于同一区域。
  7. 可选:在显示高级选项下,输入项目中的 Cloud Storage 存储桶的位置,作为数据的临时位置。

    如果未指定,则使用默认位置。如果指定,则 BigQuery 和 Cloud Storage 存储桶必须位于同一区域。
  8. 点击导入

创建服务配置

服务配置是与用于生成搜索或推荐结果的模型或一组控件相关联的服务实体。

如需创建服务配置,请完成以下步骤:

  1. 服务配置面板中,点击创建服务配置
  2. 创建服务配置页面上,选择搜索作为服务配置将用于的产品。
  3. 为服务配置提供名称。

    此名称不得超过 1024 个字符,并且只能包含字母数字字符、下划线、连字符和空格。
  4. 可选:如果需要,请更新该 ID。

    此 ID 根据您提供的名称生成,在项目中必须是唯一的。名称不得超过 50 个字符,且不得包含空格。
  5. 点击继续
  6. 选择是否为此服务配置启用动态分面。
  7. 选择或创建服务控件,以优化搜索。

    如需详细了解控件,请参阅创建和管理控件

信息中心

完成项目的初始配置后,Search for Retail 控制台会显示 Vertex AI Search for Retail 项目的系统状态。借助控制台,您可以管理资源并监控活动。

前往 Search for Retail 控制台

为您的应用设置身份验证

您必须设置身份验证,以便应用(例如您的电子商务网站)可以访问零售版 Vertex AI Search:

  • 服务帐号。应用使用服务帐号来验证对 Product 的调用。如需设置服务帐号,请参阅下文的创建服务帐号

  • API 密钥。应用使用 API 密钥调用 userEvents.Collect 方法。仅当您想要通过 JavaScript 像素或 Google 跟踪代码管理器捕获来自用户浏览器的用户事件时,才需要设置此身份验证方法。如需设置 API 密钥,请参阅下文的创建 API 密钥

创建服务账号

  1. 前往 Google Cloud 控制台的凭据页面。

  2. 选择您要在其中创建服务帐号的项目(该项目可能已被选中)。

  3. 点击 创建凭据,然后选择服务账号

    系统随即会打开创建服务帐号页面。

  4. 服务帐号详情下,填写以下字段:

    • 服务帐号名称:服务帐号的显示名称。
    • 服务帐号 ID:您的服务帐号的唯一名称。您可以使用提供的默认 ID,也可以将其替换为自定义 ID。
    • 服务帐号说明:可选。帐号的说明。
  5. 点击创建并继续,以创建服务帐号,然后继续向服务帐号授予对项目的访问权限。

  6. 向此服务帐号授予对项目的访问权限下,添加以下角色:

    • 服务帐号 > Service Account Token Creator
    • 其他 > Retail Editor
  7. 可选:如需向需要以此服务账号身份执行操作的用户或组授予服务账号访问权限,请点击继续,然后输入用户或组的账号信息。

  8. 点击完成以保存更改。

将服务账号添加到本地环境

如果要使用 cURL 命令行工具调用零售专用 Vertex AI Search,则需要在本地环境中提供您的服务帐号。

如需获取服务帐号密钥 JSON 文件,请按照创建和管理服务帐号中的说明操作。

JSON 文件包含服务帐号的公钥/私钥。此 JSON 文件是您服务帐号的密钥的唯一副本。请务必将其存储在安全的位置。

JSON 密钥文件必须存储在可从您的应用访问的位置。

cURL 通过 gcloud auth application-default print-access-token 命令通过 Google Cloud CLI 为您的服务帐号获取访问令牌。如需下载并安装 gcloud CLI,请参阅 gcloud CLI。如果您使用的是 Cloud Shell,则 gcloud CLI 已经安装。

如果您关闭命令窗口,则 GOOGLE_APPLICATION_CREDENTIALS 环境变量不会保留。要确保在打开新命令窗口时,该变量被设置为指向您的服务账号文件的路径,请在初始化 shell 脚本中设置该值。

  export GOOGLE_APPLICATION_CREDENTIALS=path-to-service-account-json-key-file

创建 API 密钥

如果您使用 JavaScript 像素或跟踪代码管理器代码来捕获来自用户浏览器的用户事件,则必须提供 API 密钥。如需详细了解捕获用户事件的方法,请参阅记录实时用户事件

如需为调用 userEvents.Collect 方法创建 API 密钥,请完成以下步骤:

  1. 前往 Google Cloud 控制台的凭据页面。

  2. 在 Google Cloud 控制台页面顶部的项目下拉菜单中,选择您的项目(该项目可能已被选中)。

  3. 点击创建凭据,然后选择 API 密钥请勿添加任何网站应用限制。已知某些用户隐私设置不会传递引荐来源网址。

    • 记下生成的 API 密钥,您在调用用户事件日志记录时会用到。
  4. 为了提高安全性,请在您的 API 密钥中添加 API 限制,以限制对位于 https://retail.googleapis.com/* 的 Vertex AI Search for Retail 服务的访问权限。

示例

使用服务帐号进行身份验证 (OAuth 2.0)

以下是使用服务账号的 OAuth 2.0 身份验证的 Java 示例。如需更详细的说明,请参阅身份验证文档。Google 提供 7 种语言的客户端库,您可以使用这些库在应用中实现 OAuth2 身份验证。如果您希望直接实现 HTTP/REST,请按照 REST 身份验证说明操作。

在此示例中,将 your-service-account-json-key-file 替换到服务账号的 JSON 密钥文件的路径。

// Simple Java example of using Google Cloud OAuth client library.
//
// Please see here for the list of libraries in different languages:
// https://developers.google.com/identity/protocols/OAuth2#libraries
//
// The following example depends on the google api client library.
//
// Maven:
//    <dependency>
//      <groupId>com.google.api-client</groupId>
//      <artifactId>google-api-client</artifactId>
//      <version>1.22.0</version>
//    </dependency>
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.GenericUrl;
import com.google.api.client.http.HttpRequest;
import com.google.api.client.http.HttpRequestFactory;
import com.google.api.client.http.HttpResponse;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.json.JsonHttpContent;
import com.google.api.client.json.GenericJson;
import com.google.api.client.json.jackson2.JacksonFactory;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class RetailApiSample {
  public static final String CREATE_PRODUCT_URL =
     "https://retail.googleapis.com/v2/projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/branches/0/products";

  public static GoogleCredential authorize() throws Exception {
    return GoogleCredential.fromStream(new FileInputStream("your-service-account-json-key-file"))
        .createScoped(Collections.singleton("https://www.googleapis.com/auth/cloud-platform"))
        .setExpirationTimeMilliseconds(new Long(3600 * 1000));;
  }

  // Build an example product.
  public static GenericJson getProduct() {
    GenericJson categories = new GenericJson()
        .set("categories", Arrays.asList("Electronics > Computers", "Laptops"));
    GenericJson priceInfo = new GenericJson()
        .set("currency_code", "USD")
        .set("price", 800.00)
        .set("original_price", 1000.00);

    return new GenericJson()
        .set("name", "projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/branches/0/products/[ProductName]")
        .set("title", "Sample Laptop")
        .set("description", "Indisputably the most fantastic laptop ever created.")
        .set("categories", categories)
        .set("price_info", priceInfo)
        .set("availability", "IN_STOCK")
        .set("available_quantity", 1219);
  }

  public static void main(String[] args) {
    try {
      GoogleCredential credential = RetailApiSample.authorize();

      HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
      HttpRequestFactory requestFactory = httpTransport.createRequestFactory();
      HttpRequest request = requestFactory.buildPostRequest(new GenericUrl(CREATE_PRODUCT_URL),
          new JsonHttpContent(new JacksonFactory(), RetailApiSample.getProduct()));
      credential.initialize(request);
      HttpResponse response = request.execute();
      System.out.println("Response content: " + response.parseAsString());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

后续步骤