作者:来自 Elastic Jonathan Simon

了解如何使用 Vertex AI 配置 Elastic Chatbot RAG 应用程序并在 Google Kubernetes Engine (GKE) 上运行它。
我最近一直在玩 Elastic Chatbot RAG 示例应用,真的很有趣!它是开源的,非常适合入门了解 RAG(Retrieval Augmented Generation,检索增强生成)概念,并亲自尝试运行一个 RAG 应用。这个应用支持与多种生成式大语言模型(Large Language Models - LLM)集成,比如 OpenAI、AWS Bedrock、Azure OpenAI、Google Vertex AI、Mistral AI 和 Cohere。
你可以使用 Python 或 Docker 在本地电脑上运行该应用,也可以部署到 Kubernetes 上。我最近就在 Google Kubernetes Engine (GKE) 上部署了该应用,并配置使用 Google Vertex AI 作为底层 LLM。我只用了浏览器、Google Cloud 和 Elastic Cloud 就完成了整个过程。这篇博客将逐步介绍我是如何将 Chatbot RAG 应用配置为使用 Vertex AI,并在 GKE 上运行的。
启用 Vertex API
由于这篇博客聚焦于使用 Vertex AI 作为支持 LLM 来运行 Elastic Chatbot RAG 应用,第一步就是前往 Google Cloud 并启用 Vertex AI API。如果这是你第一次使用 Vertex AI,你会看到一个 "Enable all recommended APIs" 按钮。点击该按钮即可启用使用 Vertex AI 所需的 Google Cloud API。完成后,你应该可以看到 Vertex AI API 已启用。

使用 Google Cloud Shell Editor 克隆 Chatbot RAG 应用
现在你已经启用了 Vertex AI API,下一步就是克隆 Chatbot RAG 应用的代码。Google Cloud 提供了一个非常方便的工具,可以直接在浏览器中完成这一步:Cloud Shell Editor。
下面是具体操作步骤:
1. 打开 Google Cloud Shell Editor
在 Google Cloud Console 顶部导航栏点击"终端"图标,选择"打开 Cloud Shell"。加载完成后点击"打开编辑器"即可进入 Cloud Shell Editor。
2. 打开终端窗口
在 Cloud Shell Editor 中,点击顶部菜单栏的 Terminal > New Terminal 打开一个新的终端窗口。
3. 克隆 Chatbot RAG 应用代码
在终端中运行以下命令来克隆项目代码:
bash
`git clone https://github.com/elastic/elasticsearch-labs`AI写代码
4. 使用以下命令切换到 Chatbot RAG 应用的目录
bash
`cd elasticsearch-labs/example-apps/chatbot-rag-app`AI写代码

使用 Google Cloud Shell Editor 创建应用配置文件
该应用需要访问 Elastic Cloud 和 Vertex AI,它通过配置文件中存储的配置值来实现。应用的配置文件应命名为 .env
,你现在将创建该文件。示例应用中包含了一个名为 env.example
的示例配置文件,你可以复制它来创建新的文件。
- 使用以下命令创建一个包含应用配置值的
.env
文件:
bash
`cp env.example .env`AI写代码
-
点击 "View(视图)" 菜单,选择 "Toggle Hidden Files(切换隐藏文件)"。在 Cloud Shell Editor 中,像
.env
这样的文件默认是隐藏的。 -
打开
.env
文件进行编辑。找到设置ELASTICSEARCH_URL
值的那一行。这将是你进行的第一个修改。

Elastic Cloud - 创建部署
Chatbot RAG 应用需要一个 Elasticsearch 后端来支持 RAG 应用中的检索增强部分。所以下一步是创建一个启用了 Elasticsearch 和机器学习(ML)的 Elastic Cloud 部署。一旦部署完成,复制 Elasticsearch Endpoint URL,并将其添加到应用的 .env
配置文件中。
-
创建一个 Elastic Cloud 部署。
-
复制 Elasticsearch Endpoint URL。

使用 Google Cloud Shell 编辑器更新 .env
配置文件中的 Elasticsearch URL
-
将 Elasticsearch Endpoint URL 添加到
.env
文件中对应的ELASTICSEARCH_URL
行 -
注释掉未使用的配置行(在每行前添加
#
) -
取消注释
ELASTICSEARCH_API_KEY
的那一行(确保该行前没有#
)

Elastic Cloud - 创建 API 密钥并将其值添加到 .env
配置文件中
返回 Elastic Cloud 部署页面,点击 Create API Key 按钮,创建一个新的 API 密钥,供应用程序访问你部署中的 Elasticsearch 实例使用。使用 Google Cloud Shell 编辑器,将复制的 API 密钥粘贴到 .env
配置文件中。
- 创建一个 Elastic Cloud API 密钥
- 复制该密钥的编码值,并将其添加到应用的
.env
配置文件中

使用 Google Cloud Shell 编辑器更新 .env 配置文件以使用 Vertex AI
在 .env 配置文件中向下移动,找到配置连接到 Vertex AI 的行并取消注释。你需要设置的第一个自定义值是 GOOGLE_CLOUD_PROJECT 和 GOOGLE_CLOUD_REGION。将 GOOGLE_CLOUD_PROJECT 设置为你的 Google Cloud 项目 ID,可以在 Google Cloud 项目的欢迎页面找到。将 GOOGLE_CLOUD_REGION 设置为你希望使用的 Vertex AI 支持的区域之一。对于这篇博客,我们使用了 us-central1。
- 取消注释 .env 配置文件中的 Vertex AI 行
- 将 GOOGLE_CLOUD_PROJECT 设置为你 Google Cloud 项目 ID
- 将 GOOGLE_CLOUD_REGION 设置为 Vertex AI 支持的一个区域
- 保存对 .env 配置文件的更改

Google Cloud IAM - 创建服务账户并下载其密钥文件
现在是时候为应用程序设置访问 Vertex AI 和 GKE 的权限了。你可以通过创建一个 Google IAM 服务账户并分配必要的角色来授予所需的权限。
- 创建一个服务账户,并为其分配访问 Vertex AI 和 GKE 所需的 IAM 角色。
- 添加以下 IAM 角色:
- Vertex AI 自定义代码服务代理
- Kubernetes 引擎默认节点服务账户
- 创建服务账户密钥并将其下载到你的本地计算机。

Google Kubernetes Engine - 创建集群
Google Kubernetes Engine (GKE) 是你将要部署和运行 Chatbot RAG 应用的地方。GKE 是托管 Kubernetes 的黄金标准,为你的应用提供超高可扩展性的基础设施。在创建新 GKE 集群时,在"创建集群"对话框中,编辑 Advanced settings > Security 设置,使用你在上一步创建的服务账户。
- 创建一个新的 GKE 集群
- 在创建集群时,在 Advanced settings > Security 中使用之前创建的服务账户

Google Cloud Shell Editor - 上传 Google 服务账户密钥文件
回到 Google Cloud Shell Editor,现在你可以通过添加之前下载到本地计算机的 Google 服务账户密钥来完成应用的配置。
点击 Cloud Shell Editor 的 More 按钮,上传并添加 Google Cloud 服务账户密钥文件到应用中。
- 使用 Cloud Shell Editor 上传 Google Cloud 服务账户密钥文件
- 将文件保存到 Chatbot RAG 应用的顶级目录

Google Cloud Shell Editor - 将应用部署到 Google Kubernetes Engine
应用的配置已经完成,现在可以将应用部署到 GKE。使用 gcloud 命令行工具将 Cloud Shell 终端连接到你的 GKE 集群。连接到集群后,你可以使用 kubectl 命令行工具将 .env 配置文件中的配置值添加到集群中。接下来,使用 kubectl 将 Google Cloud 服务账户密钥文件添加到集群中。然后,使用 kubectl 将应用部署到 GKE。
- 使用 gcloud 将 Cloud Shell 终端连接到 GKE 集群。将命令中的 example-project 替换为你在 Google Cloud 项目的欢迎页面上找到的 Google Cloud 项目 ID
css
`gcloud container clusters get-credentials chatbot-rag-app-test --location=us-central1 --project=example-project`AI写代码
- 使用 kubectl 将你的 .env 配置文件的值添加到集群中
ini
`kubectl create configmap chatbot-rag-app-env --from-env-file=.env`AI写代码
- 使用 kubectl 将 Google Cloud 服务账户密钥文件添加到你的集群中
ini
`kubectl create secret generic gcloud-credentials --from-file=application_default_credentials.json=./application_default_credentials.json`AI写代码
- 使用 kubectl 将应用程序部署到你的集群。此命令将创建一个新的 Elasticsearch 索引,并将示例数据添加到 Elastic Cloud,使用你在 .env 文件中提供的值初始化应用程序的前端和后端,然后将应用程序部署到 GKE 集群。应用程序部署需要几分钟时间,你可以使用 GKE 集群的详情页面来查看其状态。
go
`kubectl apply -f k8s-manifest.yml`AI写代码

Google Kubernetes Engine - 曝露部署的应用程序
最后一步是将应用程序在 GKE 中曝露出来,这样它就可以在互联网上和你的浏览器中查看。你可以在 Google Cloud 的 GKE Workloads 中完成此操作,你的部署应用程序将作为 chatbot-rag-app 出现在正在运行的 GKE 工作负载列表中。通过点击工作负载 Name 链接来选择你的工作负载。在应用程序工作负载的详情页面,使用 Actions 菜单选择 Expose 动作。在 Expose 对话框中,将 Target port 1 设置为 4000,这是 Chatbot RAG 应用程序在 k8s-manifest.yml 文件中配置的端口,用于其在 GKE 上的部署。
- 选择 GKE 工作负载中的 chatbot-rag-app
- 在 Actions 菜单中使用 Expose 动作来曝露应用程序
- 在 Expose 对话框中,将 Target port 1 设置为 4000

试用应用程序
点击工作负载的 Expose 按钮后,你将被带到 GKE 中工作负载的服务详情页面。一旦曝露的应用程序准备就绪,你将看到显示的 External Endpoints 和一个链接的 IP 地址。点击该 IP 地址来试用 Chatbot RAG 应用程序。

Elastic Cloud 是你构建 GenAI RAG 应用程序的起点
感谢阅读。查看本文中所有步骤的引导式教程。
今天就开始构建 GenAI RAG 应用程序,并尝试使用 Elastic Cloud。
准备好深入探索吗?试试一个实际操作教程,在沙盒环境中构建 RAG 应用程序。
想了解如何将 RAG 用于实际应用,请查看我们最近的博客系列《GenAI 用于客户支持》。
想获得 Elastic 认证吗?查看下次 Elasticsearch 工程师培训的时间!
Elasticsearch 配备了新功能,帮助你为你的用例构建最佳搜索解决方案。深入了解我们的示例笔记本,了解更多信息,开始免费云试用,或立即在本地机器上尝试 Elastic。