基于 Cloudflare 生态的 Serverless 个人知识库 RAG(检索增强生成)系统。
- 🚀 完全 Serverless - 基于 Cloudflare Workers + Pages + Vectorize + R2 + KV
- 📚 文档管理 - 支持 TXT、Markdown 文件上传和管理
- � 多文件上传 - 支持同时选择多个文件,队列自动处理
- �🔍 智能检索 - 向量语义搜索,自动过滤不相关内容
- 💬 智能问答 - 结合知识库内容生成准确回答,不相关时使用通用知识
- ⚡ 流式响应 - 支持流式/非流式切换,实时显示 LLM 回答(默认流式)
- 📐 数学公式 - 完整支持 LaTeX 数学公式渲染(KaTeX)
- 🎨 Markdown - 完整的 Markdown 渲染支持
- 🔐 密码保护 - 首次使用设置密码,保护你的知识库
- ⚡ 智能速率限制 - 自动等待而非失败,支持 RPM/TPM 配置
- 🌐 API 兼容 - 支持任何 OpenAI 兼容的 API
- 📄 分页存储 - 文档列表分页存储,支持海量文档(理论上无限)
- 🚫 重复检测 - 自动检测同名文件,避免重复上传
如果你之前已经使用过旧版本并上传了文档,在 Cloudflare Dashboard 手动迁移:
- 打开 Cloudflare Dashboard → Workers & Pages → KV → 你的命名空间
- 找到
documents_list键,复制它的值(JSON 数组) - 删除
documents_list键 - 创建新键
documents_index,值为{"total":你的文档数量,"pages":1} - 创建新键
documents_list_page_0,值为刚才复制的 JSON 数组
新用户直接跳过此步骤。
git clone https://github.com/your-username/cloudflare-rag.git
cd cloudflare-rag
npm install
npm install -g wrangler
wrangler login# 创建 Vectorize 索引(根据你的 embedding 模型维度选择)
wrangler vectorize create knowledge-base-index --dimensions=768 --metric=cosine
# 创建 R2 存储桶
wrangler r2 bucket create knowledge-base-chunks
# 创建 KV 命名空间
wrangler kv namespace create "KV"cp wrangler.toml.example wrangler.toml编辑 wrangler.toml,填写 KV 命名空间 ID(第 2 步输出的 ID)。
# 部署 Workers
npm run deploy
# 记下 Workers URL,编辑 wrangler.toml 填写 WORKERS_URL
# 部署 Pages
npm run deploy:pages或一次性部署:
npm run deploy:all注意:首次部署 Pages 时,需要在 Cloudflare Dashboard 中设置生产分支:
- Workers & Pages → cloudflare-rag → Settings → Builds & deployments
- 设置 "Production branch" 为
main
- 访问 Pages URL
- 首次使用设置密码
- 配置 Embedding 和 LLM API
- 上传文档,开始提问
常见 embedding 模型维度:
bce-embedding-base_v1: 768text-embedding-ada-002: 1536text-embedding-3-large: 3072
重要:Vectorize 索引维度必须与模型匹配。
支持任何 OpenAI 兼容的 API,包括:
- OpenAI 官方 API
- New API
- 其他兼容服务
在前端设置页面配置:
- Embedding API(Base URL、API Key、模型)
- LLM API(Base URL、API Key、模型)
- 速率限制(RPM/TPM,可选)
# 本地开发
wrangler dev
# 更新部署
npm run deploy # 只更新 Workers
npm run deploy:pages # 只更新 Pages
npm run deploy:all # 同时更新
# 查看日志
wrangler tailCloudflare 免费计划额度:
- Workers: 100,000 请求/天
- Vectorize: 500 万查询/月,3000 万维度存储
- R2: 10GB 存储,100 万次 Class A 操作/月
- KV: 100,000 读取/天,1,000 写入/天
- Pages: 无限请求
个人使用完全免费。
wrangler vectorize delete knowledge-base-index
wrangler vectorize create knowledge-base-index --dimensions=768 --metric=cosine
npm run deploywrangler r2 object delete knowledge-base-chunks --all
wrangler vectorize delete knowledge-base-index
wrangler vectorize create knowledge-base-index --dimensions=768 --metric=cosine删除 KV 中的 password_hash,重新访问前端设置新密码:
wrangler kv key delete password_hash --namespace-id=YOUR_KV_ID欢迎提交 Issue 和 Pull Request!查看 CONTRIBUTING.md 了解详情。
MIT License - 查看 LICENSE 文件