使用 AlloyDB 和 Vertex AI Agent Builder 构建专利搜索助理 - 第 2 部分

1. 概览

专利研究涉及的范围非常广,而且非常复杂。从无数技术摘要中过滤出相关创新是一项艰巨的任务。传统的基于关键字的搜索通常不准确且耗时。摘要冗长且技术性强,难以快速掌握核心思想。这可能会导致研究人员错过关键专利,或在不相关的结果上浪费时间。

这场变革背后的秘诀在于 Vector Search。向量搜索不是依赖简单的关键字匹配,而是将文本转换为数值表示形式(嵌入)。这样,我们就可以根据查询的含义进行搜索,而不仅仅是根据所用的特定字词进行搜索。在文献搜索领域,这堪称颠覆性的变革。想象一下,即使文档中没有使用“穿戴式心率监测器”这个确切的短语,您也能找到相关专利。

挑战: 现代文献搜索应能提供即时答案和智能建议,以符合用户独特的偏好。传统搜索方法往往无法提供这种程度的个性化服务。

解决方案: 我们基于知识的聊天应用直接应对这一挑战。它利用从您的专利数据集中提取的丰富知识库来了解客户意图,智能响应并提供高度相关的结果。

构建内容

在此实验(第 2 部分)中,您将:

  1. 构建 Vertex AI Agent Builder 应用构建智能体
  2. 将 AlloyDB 工具与代理集成

要求

  • 一个浏览器,例如 ChromeFirefox
  • 启用了结算功能的 Google Cloud 项目。

2. 架构

数据流:我们来详细了解一下数据在系统中的流动方式:

提取

专利数据会加载到 AlloyDB 中。

分析引擎

我们将使用 AlloyDB 作为分析引擎来执行以下操作:

  1. 上下文提取:引擎分析 AlloyDB 中存储的数据,以了解专利数据集。
  2. 嵌入创建:为用户的查询和 AlloyDB 中存储的信息生成嵌入(文本的数学表示形式)。
  3. 向量搜索:引擎执行相似性搜索,将查询嵌入与专利摘要的嵌入进行比较。这样可以识别与用户搜索的上下文最相关的“最近邻”。

响应生成

经过验证的响应会构建为 JSON 数组,整个引擎会打包到无服务器 Cloud Run 函数中,该函数从 Agent Builder 调用。

上述步骤已在实验的第 1 部分 中介绍。

我们讨论了创建基于知识的分析引擎的技术细节,该引擎为我们的智能专利搜索助理提供支持。现在,我们来了解一下如何利用 Agent Builder 的强大功能,在对话界面中将此引擎变为现实。在开始第 2 部分之前,请确保您已准备好端点网址。接下来,我们将在此实验中介绍以下步骤:

对话互动

Agent Builder 以自然语言格式向用户呈现响应,从而促进来回对话。

3. 准备工作

创建项目

  1. Google Cloud 控制台的项目选择器页面上,选择或创建一个 Google Cloud 项目
  2. 确保您的云项目已启用结算功能。了解如何 检查项目是否已启用结算功能
  3. 您将使用 Cloud Shell,这是一个在 Google Cloud 中运行的命令行环境,它预加载了 bq。点击 Google Cloud 控制台顶部的“激活 Cloud Shell”图标。

“激活 Cloud Shell”按钮图片

  1. 连接到 Cloud Shell 后,您可以使用以下命令检查自己是否已通过身份验证,以及项目是否已设置为您的项目 ID:
gcloud auth list
  1. 在 Cloud Shell 中运行以下命令,以确认 gcloud 命令了解您的项目。
gcloud config list project
  1. 如果项目未设置,请使用以下命令进行设置:
gcloud config set project <YOUR_PROJECT_ID>
  1. 启用所需的 API。除了使用 gcloud 命令之外,您还可以通过控制台搜索每个产品或使用此 链接来启用 API。

如果缺少任何 API,您始终可以在实现过程中启用它。

如需了解 gcloud 命令和用法,请参阅 文档

重要提示: 此外,请确保您已完成实验的 第 1 部分,以便完成此部分。

4. 代理创建

Agent Builder 简介

Agent Builder 是一款功能强大的低代码工具,可帮助我们快速高效地创建对话代理。它简化了设计对话流程、集成知识库和连接到外部 API 的过程。在本实验中,我们将使用 Agent Builder 与我们在 第 1 部分中构建的 Cloud Functions 函数端点无缝连接,使我们的专利搜索助理能够访问我们的专利知识库并智能地响应用户查询。

请确保您在 第 1 部分中创建的 Java Cloud Run 函数 返回 JSON 数组,而不是纯文本。

构建代理

我们来开始为服装产品创建这个新代理,以回答用户问题。

  1. 首先,登录 Agent Builder 平台。如果系统提示您激活 API,请点击“继续并激活 API”。
  2. 点击“创建应用”,然后为您的代理指定一个描述性名称(例如“专利搜索助理”)。
  3. 点击应用类型“代理”。

462bb48664e9a14e.png

  1. 为您的代理指定一个描述性名称,例如“专利搜索助理”,并将区域设置为 us-central1
  2. 输入代理的详细信息:
  3. 将代理名称更改为“专利搜索代理”。
  4. 添加以下“目标”:
You are a professional intelligent patent search agent! Your job is to help the customer find patents matching the context of their search text.

38f7d77d5ed0cb2a.png

  1. 此时保存,暂时将说明留空。
  2. 然后,在导航菜单中点击“工具”,再点击“创建”。

38f7d77d5ed0cb2a.png

输入工具名称: 专利搜索工具

类型: OpenAPI

输入工具说明

This tool refers to the dataset in the backend as the context information for product inventory. It takes as input the user's search text summarized by the agent and matches with the most appropriate list of items and returns as an array of items.

输入架构 - YAML 格式的 OpenAPI

在此部分中,我们将使用后端端点为代理提供支持。复制以下 OpenAPI 规范,然后将网址占位符 (用尖括号括起来)替换为您的 Cloud Functions 端点:

openapi: 3.0.0
info:
  title: Patent Search API
  version: v1
servers:
  - url: YOUR_CLOUDFUNCTION_ENDPOINT_URL
paths:
  /patent-search:
    post:
      summary: Search for patents using a text query.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                search:
                  type: string
                  description: The text query to search for patents.
                  example: A new Natural Language Processing related Machine Learning Model
      responses:
        '200':
          description: Successful search response with a JSON array of matching patents.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    result:
                      type: string
                      description: Patent title.
        '400':
          description: Invalid request body.
        '500':
          description: Internal server error.

将其他配置保留为默认值,然后点击“保存”。

  1. 此时返回代理,因为我们要将“工具”配置添加到代理的“说明”中。将以下内容添加到说明占位符中(请注意,缩进对于定义流程非常重要):
- Greet the users, then ask how you can help them today.
- Summarize the user's request and ask them to confirm that you understood correctly.
    - If necessary, seek clarifying details.
- Use ${TOOL:Patent Search Tool} to help the user with their task.
- Return the response from the ${TOOL:Patent Search Tool} to the user in a well formed string.
- Thank the user for their business and say goodbye.

确保在“可用工具”部分中选择了“专利搜索工具”工具,然后再次保存代理。

5. 测试代理

在右侧窗格中,您应该会看到“预览代理”部分,您可以在其中测试代理。

如以下屏幕截图所示,我以用户身份问候,并开始聊天,请求 “匹配任何运动手环创意的专利”

e4ffaa48b5c1f012.png

这是 JSON 响应:

b0ee0af57ba63943.png

这是处理 AlloyDB 相似性搜索的 Cloud Functions 的原始 JSON 结果。大功告成!我们现在已准备好使用代理。

6. 部署和集成

对代理感到满意后,您可以使用 Agent Builder 的集成功能轻松将其部署到各种渠道。您可以将其嵌入到网站中,与热门消息传递平台集成,甚至可以创建专用的移动应用。我们还可以在 Web 客户端应用中直接使用 Agent Builder API,我们已在此 博客中对此进行了介绍。

7. 清理

为避免系统因本博文中使用的资源向您的 Google Cloud 账号收取费用,请按照以下步骤操作:

  1. 在 Google Cloud 控制台中,前往“管理
  2. 资源页面。
  3. 在项目列表中,选择要删除的项目,然后点击删除
  4. 在对话框中输入项目 ID,然后点击关停 以删除项目。

8. 恭喜

恭喜!通过将我们自定义构建的分析引擎的强大功能与 Agent Builder 的直观界面相结合,我们创建了一个智能文献搜索助理,以使文献搜索变得易于访问、高效且真正以含义为导向。通过结合 AlloyDBVertex AIVector Search 的能力,我们在使上下文搜索和向量搜索变得易于访问、高效、真正以含义为导向且具有智能体功能方面取得了巨大进步!