跳转到主要内容
Background

在 Kubernetes 上构建基于证据的 RAG 聊天机器人

利用 Python、LangGraph、PostgreSQL 和 LKE,将复杂的航空公司政策转化为结合上下文、附有引用依据的回答。

观看 RAG 聊天机器人的构建过程

从配置 Kubernetes 基础架构,到为政策文档建立索引,再到测试基于证据的回答,带您完整了解整个构建流程。

开始之前

准备好所需的凭据和命令行工具,以便配置基础架构、上传文档并部署应用程序。

  • Akamai Cloud 帐户和 API 令牌
  • OpenAI API 密钥
  • 本地安装 Terraform
  • 本地安装 kubectl
  • 本地安装 s3cmd
  • GitHub 存储库访问权限
  • 用于部署密钥的 SSH 密钥对

四步构建 RAG 聊天机器人

配置基础架构、上传知识库、部署应用程序,并验证已完成的聊天机器人。

克隆项目:

git clone https://github.com/akamai-developers/rag-langgraph-k8s-quickstart.git
cd rag-langgraph-k8s-quickstart

复制 Terraform 示例文件,并配置 Akamai Cloud API 令牌及偏好的资源设置:

cp terraform/terraform.tfvars.example terraform/terraform.tfvars

配置 LKE 集群、两个 PostgreSQL 数据库和 Object Storage 桶:

cd terraform
terraform init
terraform plan
terraform apply

确保 Terraform 输出安全。它们包含敏感的连接信息。

将 Terraform 输出结果加载到环境变量中:

export S3_BUCKET=$(terraform output -raw S3_BUCKET_NAME)
export S3_ENDPOINT=$(terraform output -raw S3_ENDPOINT)
export S3_ACCESS_KEY=$(terraform output -raw S3_ACCESS_KEY)
export S3_SECRET_KEY=$(terraform output -raw S3_SECRET_KEY)

上传所附的航空公司政策文档:

s3cmd sync ../documents/ s3://${S3_BUCKET}/ \
--host=${S3_ENDPOINT} \
--host-bucket=${S3_ENDPOINT} \
--access_key=${S3_ACCESS_KEY} \
--secret_key=${S3_SECRET_KEY}

您可以用自己的 PDF、HTML 或文本文件来替换示例中的政策文档。

设置生成的 kubeconfig:

export KUBECONFIG=./kubeconfig.yaml

从 keycloak 命名空间获取 App Platform 的初始凭据并登录。

在 App Platform 上:

  1. 安装 Harbor 容器注册表。
  2. 生成一个 GitHub 部署密钥。
  3. 将公钥添加到存储库中。
  4. 将私钥存储为 Sealed Secret。
  5. 接入代码存储库。
  6. 构建应用程序镜像。
  7. 为 OpenAI、PostgreSQL、Object Storage 和管理员 API 密钥创建 Sealed Secret。
  8. 为两个 PostgreSQL 数据库添加网络策略。
  9. 使用 charts/workflow.example.yaml 创建工作负载。
  10. 为应用程序创建一个公共服务。

请勿将凭据硬编码在存储库或工作负载配置中。

验证应用程序是否正在运行:

curl http://<your-service-endpoint>/api/health

初始化数据库:

curl -X POST \
--header "x-api-key: <your-admin-api-key>" \
http://<your-service-endpoint>/api/admin/initialize_databases

为政策文档建立索引:

curl -X POST \
--header "x-api-key: <your-admin-api-key>" \
http://<your-service-endpoint>/api/admin/index_documents

使用返回的作业 ID 检查进度:

curl -X GET \
--header "x-api-key: <your-admin-api-key>" \
http://<your-service-endpoint>/api/admin/index_documents/<job-id>

索引建立完成后,打开服务端点并询问有关已上传政策的问题。

常见问题

常见问题

它能从航空公司的政策文档中检索相关章节,并生成附有引用依据的回答。

该应用程序可以处理存储在 Object Storage 中的 PDF、HTML 和文本文件。

一个数据库用于存储向量嵌入,以支持语义检索。另一个用于保存对话历史和 LangGraph 的运行状态。

不需要。当前项目通过 OpenAI API 生成嵌入和聊天回复。后续,您也可以根据需要进行调整,在配备 GPU 的 LKE 节点上运行开源模型。

可以。在上传文档之前,请用您自己的受支持文件替换文档目录中的示例航空公司政策文件。

该项目使用 Sealed Secrets 来保护 OpenAI、数据库、Object Storage、部署密钥以及管理员凭据。

索引端点会返回一个作业 ID。在测试聊天机器人之前,请使用状态端点来监控作业。

不可以。Akamai Cloud 抵扣额度只能用于支付符合条件的 Akamai Cloud 基础架构费用。OpenAI API 的使用费需另行支付。