1. 准备工作
在继续学习此 Codelab 之前,需要注意以下事项。
前提条件
- 对 LLM 有基本的了解
- 对 RAG 系统有基本的了解
学习内容
- 如何构建可根据您上传的数据解答您的问题的 Google 优质搜索引擎
- 如何创建 Vertex AI Datastore
- 如何创建 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 系统,该系统可以使用您上传的语料库来帮助回答您的问题。名为 Vertex AI Search/Agent Builder 的开箱即用 RAG 平台可帮助您加速构建 RAG 系统,从而避免您需完成手动收集文档、解析、分块、生成嵌入、查询扩展、候选人检索和排名等工作。虽然开箱即用的 RAG 系统可帮助您快速上手,但 Google Cloud 还为每个流程提供独立的 API,以构建您自己的 DIY RAG 系统,从而帮助微调您的 RAG 系统以满足您的业务需求。
构建内容
学完此 Codelab 后,您将部署一个正常运行的 RAG 系统,该系统可帮助您以事实信息、有依据并以正确的参考引用的方式回答您的问题。
您还将更好地了解如何使用 Vertex AI Search API 在 Google Cloud 上构建此 RAG 架构。除此之外,您还将学习如何在 CloudRun 上部署此 RAG 架构应用(包含前端和后端)。Cloud Run 是一个无服务器平台,用于将应用作为容器部署到 Google Cloud 上。
应用的运作方式
- 上传您的数据:用户可以上传自己的数据资料库,即 PDF 文件作为输入。
- 在搜索栏中提问:用户可以根据上传的数据语料库在搜索栏中提问。
- 检索答案:用户可以检索搜索结果/候选内容,并根据查询的相关性检查所检索答案的真实性/有依据性。
2. 环境设置
- 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。
- 确保您的 Google Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能。
- 您将使用 Cloud Shell,这是一个在 Google Cloud 中运行的命令行环境。如需访问 Cloud Shell,请点击 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
(从链接 https://github.com/kkrishnan90/gcp-vertex-search-demo/blob/main/alphabet-metadata.json 下载)
4. 第 2 步:创建 Vertex AI Datastore
- 在控制台页面的搜索栏中,输入“Vertex AI Agent Builder”
- 选择第一个产品“Agent Builder”
- 在 Agent Builder 页面上,点击左侧导航栏中所示的“Data Stores”
- 点击“Create Data Store”
- 选择 Cloud Storage 作为数据存储区
- 点击 Cloud Storage 图标下方的“选择”
- 在“文件夹”选项下的标签页上,点击“浏览”按钮
- 选择您在第 1 步中创建的存储分区
- 在下面的选项中,请务必选择“Linked nonstructured documents (JSONL with metadata)”(链接的非结构化文档(包含元数据的 JSONL))。
- 点击“继续”
- 在“配置”页面上,选择“全局”作为数据存储区的位置
- 为数据存储区提供一个可识别名称
- 点击“创建”
Brownie:
- 在“创建”按钮的正上方,您可以看到文档处理选项。
- 你可以尝试使用不同的解析器,例如数字解析器、OCR 解析器或布局解析器
- 您还可以启用高级分块并提供自己的自定义分块大小限制
5. 第 3 步:创建代理
- 创建数据存储区后,在左侧导航栏中点击该应用,然后选择“Apps”(应用)
- 点击“Create App”(创建应用)按钮
- 选择“搜索”应用类型(您也可以创建代理、对话机器人、推荐应用等)。
- 确保在“内容”下选择“通用”。您还可以根据数据存储区、数据类型和要构建的系统,选择“媒体”或“推荐”。
- 确保同时开启企业版和高级 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 实现,将有助于为前端创建与之交互的静态端点。
- 前端 - 它将存储基于反应的应用并将提供界面。这还包含通过 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”
- 将 Service Auto Scaling 修改为 1(在生产环境中,建议运行最小实例数以处理每日流量,甚至可以保留 0,即 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 可为您提供更高的透明度、更强大的功能和效率,以有效处理流水线流程的每个环节。