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
保持一致,否则会导致向量检索失败。
部署流程
环境准备
安装 Node.js (版本 >= 20)
安装 Wrangler CLI:
npm install -g wrangler
登录 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_KEY | Gemini 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 控制台可以查看:
- 请求量和响应时间
- 错误率
- 地理分布
- 执行日志
故障排除
常见问题及解决方案:
部署失败
- 检查 wrangler.toml 配置是否正确
- 确认已登录 Cloudflare 账户
- 确保有足够的权限
API 调用失败
- 检查 API 密钥是否正确配置
- 确认环境变量是否设置正确
- 查看日志了解具体错误信息
向量检索异常
- 确认向量索引维度与 EMBED_DIM 一致
- 检查是否已成功导入数据
小结
通过本节的介绍,您已经了解了如何在 Cloudflare 平台上部署 RAG 系统和聊天机器人。我们重点讲解了 Cloudflare Workers 的配置方法、Vectorize 向量数据库的设置、环境变量管理以及完整的部署流程。这些内容将帮助您快速部署和运行基于 Cloudflare 的 RAG 聊天机器人系统,并确保在全球范围内提供卓越的用户体验。接下来,您可以将这些知识应用到实际项目中,进一步优化和扩展系统功能。