1. 准备工作
在继续本 Codelab 之前,请注意以下几点。
前提条件
- 对 LLM 有基本的了解
- 对 RAG 系统有基本的了解
学习内容
- 如何构建一个 Google 品质的搜索引擎,从您上传的数据中回答您的问题
- 如何创建 Vertex AI 数据存储区
- 如何创建 Vertex AI Agents
- 如何利用 CloudRun 部署应用
所需条件
- Google Cloud 账号
- Google Cloud 项目
- 带有终端的 IDE
简介
Google 搜索是一款功能强大的工具,使用大量由网页和其他内容构成的索引,为用户提供相关结果。这得益于一种名为“检索增强生成”(RAG) 的技术,它是现代 AI 领域的一项关键技术。
RAG 的工作原理是首先从文档语料库中检索相关段落。为此,您可以使用各种方法,例如关键字匹配、语义相似度和机器学习。检索到相关段落后,系统会使用这些段落生成摘要或回答用户的查询。
RAG 的主要优势在于,它可以让语言模型避免幻觉。幻觉是指文档语料库中的证据不支持生成的文本。如果语言模型无法区分相关和不相关的信息,就可能会出现这种情况。
RAG 可确保生成的文本始终基于文档语料库中的证据,有助于避免幻觉。这使其成为更可靠、更可靠的信息来源。
RAG 是一种强大的技术,被用于包括搜索引擎、聊天机器人和问答系统在内的各种应用。在未来几年里,它在 AI 领域发挥的作用可能会越来越重要。
以下是 RAG 在实际中的应用示例:
- 许多搜索系统都使用 RAG 生成与用户查询相关的搜索结果。
- 聊天机器人使用 RAG 为用户的问题生成既有参考价值又有吸引力的回答。
- 问答系统使用 RAG 生成准确、全面的用户问题解答。
RAG 是一种多用途技术,可用于在各种领域和应用中生成文本。它是一款功能强大的工具,有助于提升 AI 的智能程度和信息量。
在此 Codelab 中,我们将构建一个 RAG 系统,该系统可以根据您上传的提供的语料库帮助回答您的问题。开箱即用的 RAG 平台 Vertex AI Search/Agent Builder 可帮助您加快构建 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
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”
- 在“代理构建器”页面上,点击左侧导航栏中的“数据存储区”
- 点击“创建数据存储区”
- 选择 Cloud Storage 作为数据存储区
- 点击 Cloud Storage 图标下方的“选择”
- 在“文件夹”选项下的标签页中,点击“浏览”按钮
- 选择您在第 1 步中创建的存储分区
- 在下面的选项中,请务必选择“Linked nonstructured documents (JSONL with metadata)”(链接的非结构化文档(包含元数据的 JSONL))。
- 点击“继续”
- 在“配置”页面上,选择“全局”作为数据存储区的位置
- 为数据存储区提供可识别的名称
- 点击“创建”
Brownie:
- 在“创建”按钮上方,您可以看到文档处理选项。
- 你可以尝试使用不同的解析器,例如数字解析器、OCR 解析器或布局解析器
- 您还可以启用高级分块功能,并提供自己的自定义分块大小限制
5. 第 3 步:创建代理
- 创建数据存储区后,点击左侧导航栏中的应用,然后选择“应用”
- 点击“创建应用”按钮
- 将应用类型选择为“搜索”(您还可以创建客服人员、对话式聊天机器人、推荐等)
- 确保在“内容”下选择“通用”。您还可以根据数据存储区、数据类型和要构建的系统,选择“媒体”或“推荐”。
- 请务必同时开启企业版和高级 LLM 功能
- 提供您的应用名称
- 提供贵公司的名称
- 请务必将地区选择为“全球”
- 点击“继续”
- 在下一个屏幕中,选择您在第 2 步中创建的数据存储区
- 点击“创建”
6. 第 4 步:对应用进行 Docker 化
- 在 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 映像(注意:在使用 M1、M2 等 Apple Silicon 芯片的 Macbook 中构建 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,也可以选择任何其他区域)
- 在“Authentication”(身份验证)下
- 确保已选择“允许未经身份验证的调用”
- 在 CPU 分配和价格下
- 选择“仅在请求处理期间分配 CPU”
- 将服务自动扩缩设置更改为 1(出于生产目的,建议运行最少的实例来处理您的每日流量,您甚至可以将其保留为 0,即零)
- 将“入站流量控制”设置为“全部”,以允许来自互联网的流量访问您的应用
- 点击“创建”
- 这将部署一个 Cloud Run 实例,并且预配需要几分钟时间
- 部署后,您将能够看到可从中访问您的 Web 应用的公开网址
8. 运作方式
- 进入应用首页后,点击“上传文件”按钮
- 上传 PDF 文件
- 上传完成后
- 点击网页顶部的搜索栏
- 开始搜索与您上传的文档相关的查询
- 当您输入查询并点击“搜索”后,它应该会显示您刚刚上传的文档中的所有相关答案
- 您可以查看后端代码并添加更多配置,如以下代码所示
- 添加代码段
- 添加提取片段
- 添加回答
- 调整前 k 个结果,以帮助 LLM 总结答案(类似于 Google 搜索中的 AI 概览)
- 作为附加功能,您还可以在上传文档时添加元数据标记。这将有助于生成分面和可过滤类别
9. 清理
为避免系统因本 Codelab 中使用的资源向您的 Google Cloud 账号收取费用,请按照以下步骤操作:
10. 恭喜
恭喜!您已成功使用由 Google 提供支持的先进模型构建了开箱即用的 RAG 系统,并为您的搜索查询提供 Google 品质的结果。本 Codelab 仅用于演示目的,对于生产用例,您必须设置更多安全措施和防护措施。完整代码库的链接在此处。只需 5 个步骤,您就可以利用 Google Cloud 生成端到端 RAG 系统,该系统可在几分钟内为您提供 Google 品质的结果。随着生成式 AI 和大语言模型的不断发展,构建此类 RAG 系统还有助于我们避免出现幻觉和显示未引用信息的陷阱。
虽然这只是一个开始,但我们可以用完全可定制的 DIY RAG API 创造奇迹,这些 API 可为您提供更高的透明度、更强大的功能和效率,以有效处理流水线流程的每个环节。