1. 准备工作
在继续学习本 Codelab 之前,请注意以下几点。
前提条件
- 对 LLM 有基本的了解
- 对 RAG 系统有基本的了解
学习内容
- 如何构建一个 Google 品质的搜索引擎,该引擎可以根据您上传的数据回答您的问题
- 如何创建 Vertex AI 数据存储区
- 如何创建 Vertex AI 智能体
- 如何利用 Cloud Run 部署应用
所需条件
- Google Cloud 账号
- Google Cloud 项目
- 带有终端的 IDE
简介
Google 搜索是一款功能强大的工具,它使用庞大的网页和其他内容索引,为用户查询提供相关结果。这得益于一种称为“检索增强生成”(RAG) 的技术,该技术是现代 AI 的关键技术。
RAG 的工作方式是,首先从文档语料库中检索相关段落。这可以通过多种方法实现,例如关键字匹配、语义相似度和机器学习。检索到相关段落后,系统会使用这些段落生成摘要或回答用户的问题。
RAG 的主要优势在于,它能让语言模型避免出现幻觉。“幻觉”一词用于描述生成文档语料库中的证据不支持的文本。如果语言模型无法区分相关信息和不相关信息,就可能会出现这种情况。
RAG 可确保生成的文本始终基于文档语料库中的证据,从而有助于避免幻觉。这使得它成为更可靠、更值得信赖的信息来源。
RAG 是一种强大的技术,已广泛应用于各种应用,包括搜索引擎、聊天机器人和问答系统。在未来几年内,它可能会在 AI 领域发挥越来越重要的作用。
以下是一些 RAG 的实际应用示例:
- 许多搜索系统都使用 RAG 来生成与用户查询相关的搜索结果。
- 聊天机器人使用 RAG 生成信息丰富且富有吸引力的用户问题回答。
- 问答系统使用 RAG 生成准确而全面的用户问题答案。
RAG 是一种多用途技术,可用于在各种领域和应用中生成文本。它是一种强大的工具,有助于让 AI 变得更加智能和信息丰富。
在此 Codelab 中,我们将构建一个 RAG 系统,该系统可以根据您上传的语料库回答您的问题。Vertex AI Search/Agent Builder 是一款开箱即用的 RAG 平台,可帮助您快速构建 RAG 系统,从而避免手动收集文档、解析、分块、生成嵌入、查询扩展、候选检索和排名。虽然开箱即用的 RAG 系统可帮助您快速入门,但 Google Cloud 还为每个流程提供离散的 API,以便您构建自己的 DIY RAG 系统,从而帮助您微调 RAG 系统以满足业务需求。
构建内容
在此 Codelab 结束时,您将部署一个可正常运行的 RAG 系统,该系统可以根据事实信息回答您的问题,并提供正确的参考资料作为依据和引用。
您还将更好地了解如何使用 Vertex AI Search API 在 Google Cloud 上构建此 RAG 架构。此外,您还将学习如何在 Cloud Run 上部署此 RAG 架构应用(包含前端和后端),Cloud Run 是一个无服务器平台,可在 Google Cloud 上以容器形式部署应用。

申请流程
- 上传数据:用户可以上传自己的数据语料库(即 PDF 文件)作为输入。
- 在搜索栏中提出查询:用户可以在搜索栏中根据上传的数据集提出问题。
- 检索答案:用户可以检索搜索结果/候选答案,并根据查询的相关性检查检索到的答案的事实性/依据。
2. 环境设置
- 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。
- 确保您的 Google Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能。
- 您将使用 Cloud Shell,它是在 Google Cloud 中运行的命令行环境。如需访问该工具,请点击 Google Cloud 控制台顶部的“激活 Cloud Shell”。

- 连接到 Cloud Shell 后,您可以使用以下命令检查自己是否已通过身份验证,以及项目是否已设置为您的项目 ID:
gcloud auth list
- 在 Cloud Shell 中运行以下命令,以确认 gcloud 命令了解您的项目。
gcloud config list project
- 如果项目未设置,请使用以下命令进行设置:
gcloud config set project <YOUR_PROJECT_ID>
- 确保已启用以下 API:
- Cloud Run
- Vertex AI
- Cloud Storage
除了使用 gcloud 命令之外,您还可以通过此链接在控制台中完成操作。如需了解 gcloud 命令和用法,请参阅文档。
3. 第 1 步:创建 GCP 存储分区
- 前往控制台,然后在搜索栏中输入“Cloud Storage”。
- 从建议的结果中选择 Cloud Storage。

- 点击“创建存储分区”

- 为存储分区提供全局唯一的名称
- 点击“继续”
- 在“位置类型”中,选择“多区域”
- 在下拉菜单中,请务必选择
us (multiple regions in United States)选项

- 点击“创建存储分区”

- 创建存储分区后,从代码库中上传
alphabet-metadata.json
4. 第 2 步:创建 Vertex AI 数据存储区
- 在控制台页面的搜索栏中,输入“Vertex AI Agent Builder”
- 选择第一个产品“Agent Builder”

- 在 Agent Builder 页面上,点击左侧导航栏中的“数据存储区”,如图所示

- 点击“创建数据存储区”

- 选择 Cloud Storage 作为数据存储区
- 点击 Cloud Storage 图标下方的“选择”

- 在“文件夹”选项下方的标签页中,点击“浏览”按钮
- 选择您在第 1 步中创建的存储分区
- 在以下选项中,请务必选择“链接的非结构化文档(包含元数据的 JSONL)”
- 点击“继续”

- 在“配置”页面上,选择“全球”作为数据存储区的位置
- 为数据存储区提供一个易于识别的名称
- 点击“创建”

Brownie:
- 在“创建”按钮的正上方,您可以看到文档处理选项。
- 您可以尝试使用不同的解析器,例如数字解析器、OCR 解析器或布局解析器
- 您还可以启用高级分块并提供自己的自定义分块大小限制

5. 第 3 步:创建 Agent
- 创建数据存储区后,点击左侧导航栏中的应用,然后选择“应用”
- 点击“创建应用”按钮
- 选择应用类型为“搜索”(您还可以创建代理、对话机器人、推荐等)

- 确保在“内容”下方选择“通用”。您还可以根据要构建的数据存储区、数据类型和系统来选择“媒体”或“推荐”。
- 确保同时开启企业版和高级 LLM 功能
- 提供您的申请名称
- 提供贵公司的名称

- 请务必选择“全球”作为区域
- 点击“继续”

- 在下一个界面中,选择您在第 2 步中创建的数据存储区
- 点击“创建”

6. 第 4 步:将应用容器化
- 在 Google Cloud 控制台中打开终端
- 使用以下命令克隆代码库 <sample_repository_link>
git clone https://github.com/kkrishnan90/vertex-ai-search-agent-builder-demo
- 使用以下命令更改目录并导航到克隆的代码库
cd vertex-ai-search-agent-builder-demo
- 文件夹结构
- 后端 - 这将包含一个基于 Python 的 API 实现,可帮助您创建前端可与之交互的 RESTful 端点。
- 前端 - 这将包含一个基于 React 的应用,并提供界面。它还将包含通过 REST 端点向后端发出的必要应用级调用
- Dockerfile - 此文件将包含用于创建 Docker 容器的所有相关命令
- 在代码库目录的根目录下,运行以下命令,该命令将有助于构建 Docker 映像(注意:在 MacBook 中构建使用 Apple Silicon 芯片(如 M1、M2 等)的 Docker 容器时,请务必使用
- - platform标志。如果您使用 Windows 机器进行构建,或者您的 CPU 架构基于 Intel,则无需使用此标志)
docker build --platform linux/amd64 -t your-image-name .
- 成功构建 Docker 容器后,运行以下命令来使用正确的标记标记容器,以确保您提供映像的版本。请注意,应用可能有多个版本,因此 Docker 容器中也可能有多个版本作为代码。从 DevOps 角度来看,确保始终使用最新的稳定版本是一种很好的推荐方法。
docker tag your-image-name REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG
- 成功标记 Docker 容器映像后,我们现在将映像推送到 Google Artifact Registry (GAR)。GAR 是 Google 提供的完全托管式平台,可帮助您管理 Docker 容器并进行版本控制。运行以下命令,将上述已标记的容器推送到 GAR。如需了解详情,请参阅以下链接 [ https://cloud.google.com/artifact-registry/docs/docker/pushing-and-pulling]
docker push REGION-docker.pkg.dev/PROJECT-ID/REPOSITORY-NAME/IMAGE-NAME:TAG
7. 第 5 步:在 Cloud Run 上部署应用
- 最小化终端。在 Google Cloud 控制台搜索栏中,搜索 Cloud Run
- 点击建议的 Cloud Run 产品

- 点击“创建服务”
- 在下一页中,确保选中“从现有容器映像部署一个修订版本”
- 点击下方的“选择”
- 系统现在会在右侧显示一个导航栏。
- 确保检查 Artifact Registry 是否已选为标签页
- 确保检查项目是否已正确选择
- 点击箭头展开已部署的容器映像链接上的手风琴
- 选择容器代码并展开(始终选择已部署的最新代码 - 具有正确的最新标记,即 v1、v2 等)
- 点击容器标记名称下方显示的容器映像

- 在“配置”区域中
- 为 Cloud Run 应用提供服务名称(当您在 Cloud Run 上部署应用时,此名称将成为网址的一部分)
- 选择适当的区域(在本例中为 us-central1 或您选择的任何区域)
- 在“身份验证”下
- 确保选中“允许未经身份验证的调用”
- 在“CPU 分配和价格”下
- 选择“仅在请求处理期间才分配 CPU”
- 将服务自动扩缩修改为 1(出于生产目的,建议运行最少的实例来处理日常流量,您甚至可以将其保留为 0,即零)
- 将“入站流量控制”设置为“全部”,以允许来自互联网的流量访问您的应用
- 点击“创建”
- 这会部署一个 Cloud Run 实例,而预配该实例可能需要几分钟时间

- 部署完成后,您将能够看到可用于访问 Web 应用的公开网址

8. 所有这一切是如何做到的
- 进入应用的首页后,点击“上传证件”按钮
- 上传 PDF 文件
- 上传完成后
- 点击网页顶部的搜索栏
- 开始搜索与上传的文档相关的查询
- 输入查询内容并点击“搜索”后,系统应会显示您刚刚上传的文档中的所有相关答案
- 您可以查看后端代码并添加更多配置(如下所示),自行尝试
- 添加代码段
- 添加提取式片段
- 添加答案
- 调整前 k 个结果,以帮助 LLM 总结答案(类似于 Google 搜索中的 AI 概览)
- 作为插件,您还可以在上传文档时添加元数据标记。这有助于生成多面搜索和可过滤的类别
9. 清理
为避免系统因本 Codelab 中使用的资源向您的 Google Cloud 账号收取费用,请按照以下步骤操作:
10. 恭喜
恭喜!您已成功使用由 Google 提供支持的先进模型构建了一个开箱即用的快速 RAG 系统,可为您的搜索查询提供 Google 品质的搜索结果。本 Codelab 仅用于演示目的,对于生产用例,必须设置更多安全措施和防护措施。点击此处可查看完整的代码库。借助 Google Cloud,只需 5 个步骤,我们就能生成一个端到端 RAG 系统,该系统可在几分钟内为您提供开箱即用的 Google 质量结果。随着生成式 AI 和大语言模型的发展,构建此类 RAG 系统还有助于我们避免出现幻觉和显示未引用信息等陷阱。
虽然这只是一个起点,但我们可以利用完全可自定义的 DIY RAG API 创造奇迹,该 API 可为您提供更高的透明度、更强大的功能和更高的效率,以便您有效地处理流水线流程的每个环节。