Cloudflare 部署

本节将介绍如何利用 Cloudflare 平台部署 RAG 系统和聊天机器人。内容涵盖 Cloudflare Workers 的配置方法、Vectorize 向量数据库的设置、环境变量管理,以及部署流程。通过合理配置和部署,可以有效降低延迟、提升访问速度,并确保系统在高并发场景下依然稳定运行。

Cloudflare Workers 配置

Cloudflare Workers 是在边缘网络上运行代码的无服务器平台,非常适合部署我们的 RAG 聊天机器人应用。

配置路由

通过 wrangler.toml 文件配置路由规则:

name = "website-rag-worker"
main = "src/worker.ts"
compatibility_date = "2024-07-01"

# 自定义域名
routes = [
  { pattern = "website-rag-worker.jimmysong.io", custom_domain = true }
]

[vars]
# 选择模型提供商 'gemini' 或 'qwen'
PROVIDER = "qwen"
# 确保与 Vectorize 索引维度匹配
EMBED_DIM = 1024
# 用于生成的 LLM 模型
LLM_MODEL = "qwen-turbo-latest"
# Qwen 嵌入模型
QWEN_EMBED_MODEL = "text-embedding-v4"

[[vectorize]]
binding = "VECTORIZE"
# 预先在 Cloudflare Vectorize 中创建此索引
index_name = "website-rag"

[observability]
enabled = true

管理环境变量

敏感信息如 API 密钥需要通过 wrangler secret 命令进行管理:

# 设置管理员令牌(用于管理接口)
wrangler secret put ADMIN_TOKEN

# 根据 PROVIDER 设置相应的 API 密钥
wrangler secret put GOOGLE_API_KEY   # 如果使用 Gemini
wrangler secret put QWEN_API_KEY     # 如果使用通义千问

# 可选配置
wrangler secret put QWEN_BASE        # 自定义 Qwen API 端点

Vectorize 向量数据库设置

Cloudflare Vectorize 是专门为向量搜索设计的数据库服务,用于存储文档的向量表示。

创建向量索引

在部署应用之前,需要先创建向量索引:

# 创建向量索引,维度需与 EMBED_DIM 一致
wrangler vectorize create website-rag --dimensions 1024

向量索引配置

确保向量索引的维度与应用配置中的 EMBED_DIM 保持一致,否则会导致向量检索失败。

部署流程

环境准备

  1. 安装 Node.js (版本 >= 20)

  2. 安装 Wrangler CLI:

    npm install -g wrangler
    
  3. 登录 Cloudflare 账户:

    wrangler login
    

依赖安装

# 进入 rag-worker 目录
cd tools/rag-worker

# 安装项目依赖
npm install

本地开发测试

# 本地开发模式运行
npm run dev

这将启动本地开发服务器,可以在 http://localhost:8787 访问应用。

生产环境部署

# 部署到 Cloudflare
npm run deploy

部署完成后,应用将在配置的自定义域名上可用。

前端 Widget 集成

前端聊天界面以 widget.js 的形式提供,可以嵌入到任何网页中:

<script 
  src="https://website-rag-worker.jimmysong.io/widget.js" 
  data-endpoint="https://website-rag-worker.jimmysong.io">
</script>

其中:

  • src:widget.js 脚本的 URL 地址
  • data-endpoint:RAG 服务的 API 端点

环境变量配置详解

完整的环境变量配置包括:

变量名用途是否必需
ADMIN_TOKEN管理接口认证令牌
PROVIDER模型提供商 (gemini/qwen)
EMBED_DIM向量维度
LLM_MODEL大语言模型名称
GOOGLE_API_KEYGemini API 密钥否(如果使用 Gemini 则必需)
QWEN_API_KEY通义千问 API 密钥否(如果使用通义千问则必需)
QWEN_BASE通义千问 API 端点
QWEN_EMBED_MODEL通义千问嵌入模型

数据导入

部署完成后,需要将网站内容导入到向量数据库中:

# 使用 fast-ingest 脚本导入内容
PROVIDER=qwen \
QWEN_API_KEY=YOUR_QWEN_KEY \
ADMIN_TOKEN=YOUR_ADMIN_TOKEN \
WORKER_URL=https://<your-worker>.workers.dev \
CONTENT_DIR=<your-content-dir> \
BASE_URL=<your-base-url> \
EMBED_DIM=1024 \
npm run ingest

监控与日志

启用 observability 可以通过 Cloudflare Dashboard 监控应用的运行状态:

[observability]
enabled = true

通过 Cloudflare 控制台可以查看:

  • 请求量和响应时间
  • 错误率
  • 地理分布
  • 执行日志

故障排除

常见问题及解决方案:

  1. 部署失败

    • 检查 wrangler.toml 配置是否正确
    • 确认已登录 Cloudflare 账户
    • 确保有足够的权限
  2. API 调用失败

    • 检查 API 密钥是否正确配置
    • 确认环境变量是否设置正确
    • 查看日志了解具体错误信息
  3. 向量检索异常

    • 确认向量索引维度与 EMBED_DIM 一致
    • 检查是否已成功导入数据

小结

通过本节的介绍,您已经了解了如何在 Cloudflare 平台上部署 RAG 系统和聊天机器人。我们重点讲解了 Cloudflare Workers 的配置方法、Vectorize 向量数据库的设置、环境变量管理以及完整的部署流程。这些内容将帮助您快速部署和运行基于 Cloudflare 的 RAG 聊天机器人系统,并确保在全球范围内提供卓越的用户体验。接下来,您可以将这些知识应用到实际项目中,进一步优化和扩展系统功能。

文章导航

章节完成

恭喜完成本章节!下一章节即将开始。下一章节:质量优化与监控

章节概览

评论区