• 欢迎访问少将全栈,学会感恩,乐于付出,珍惜缘份,成就彼此、推荐使用最新版火狐浏览器和Chrome浏览器访问本网站。
  • 吐槽,投稿,删稿,交个朋友
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏少将全栈吧

Cloudflare Workers AI + RAG 模板:30 分钟从零到部署

可复用技术资产 admin 1小时前 2次浏览 已收录 扫描二维码

一套开箱即用的 Cloudflare Workers AI + RAG 模板

去年做 AI 产品的时候,最头疼的不是写业务逻辑,而是每次新项目都要从零搭基础设施。向量数据库怎么接、LLM 调用怎么封装、部署到哪、成本怎么控制——这些重复劳动占了大半时间。

后来我把一套常用的 RAG 架构整理成了 Cloudflare Workers 模板,直接部署到边缘网络,不用管服务器。今天把这套模板拆开来讲,代码放在 GitHub 上,需要的话可以直接拉下来用。

这套模板解决什么问题

假设你要做一个 AI 客服系统,用户问”你们的产品支不支持企业 SSO”,系统需要从知识库里找到相关内容,再用 LLM 生成回答。传统做法是:搭一台服务器 → 部署向量数据库 → 写 API → 接 LLM → 配置监控。至少花 3-5 天。

这套模板把整个过程压缩到 30 分钟:git clone → 配置环境变量 → npm run deploy,搞定。

核心架构:

  • Cloudflare Workers 做 API 网关和业务逻辑层
  • Cloudflare Vectorize 做向量存储和检索
  • Workers AI 调用 LLM(支持 Llama、Mistral 等开源模型)
  • Cloudflare KV 做缓存层
  • 全部部署在 Cloudflare 边缘网络,延迟 < 50ms

项目结构

模板的目录结构很简单:

rag-starter/
├── src/
│   ├── index.js          # 入口,路由分发
│   ├── embed.js          # Embedding 生成
│   ├── retrieve.js       # 向量检索
│   ├── generate.js       # LLM 生成
│   ├── cache.js          # KV 缓存逻辑
│   └── config.js         # 配置项
├── test/
│   └── api.test.js       # 集成测试
├── wrangler.toml         # Cloudflare 配置
└── package.json

每个文件职责单一,可以单独替换或扩展。

核心代码:三条核心链路

1. Embedding 生成(embed.js)

Workers AI 直接支持 @cf/baai/bge-base-en-v1.5 模型做向量化,不需要自己部署 embedding 服务:

import { Ai } from './cloudflare/ai';

export async function generateEmbedding(text, env) {
  const ai = new Ai(env.AI);
  const { data } = await ai.run('@cf/baai/bge-base-en-v1.5', {
    text: [text]
  });
  return data[0];
}

一行代码搞定 embedding。BGE 模型在 MTEB 上的得分为 63.7(Hugging Face MTEB Leaderboard, 2026),对于文档检索场景完全够用。输出 768 维向量,每 1000 次调用的成本约 $0.03(Cloudflare Workers AI 定价页面,2026)。

2. 向量检索(retrieve.js)

用 Vectorize 做语义搜索,支持余弦相似度:

export async function searchSimilar(query, env, topK = 5) {
  const queryVector = await generateEmbedding(query, env);
  
  const results = await env.VECTORIZE_INDEX.query(queryVector, {
    topK: topK,
    returnMetadata: true
  });
  
  return results.matches.map(match => ({
    text: match.metadata.text,
    score: match.score,
    source: match.metadata.source
  }));
}

Vectorize 的索引创建和查询都在边缘完成,官方文档显示 P50 延迟约 15ms(Cloudflare Vectorize 文档,2026)。配合缓存,90% 的常见问题可以做到亚毫秒级响应。

3. LLM 生成(generate.js)

用 Workers AI 调用开源模型,我这里用 Llama 3.1 8B,在速度和效果之间平衡得比较好:

export async function generateAnswer(context, query, env) {
  const ai = new Ai(env.AI);
  
  const messages = [
    { role: 'system', content: `基于以下内容回答问题。如果内容不足以回答问题,请明确说"找不到相关信息"。\n\n相关内容:${context}` },
    { role: 'user', content: query }
  ];
  
  const response = await ai.run('@cf/meta/llama-3.1-8b-instruct', {
    messages,
    max_tokens: 512,
    temperature: 0.3
  });
  
  return response;
}

temperature 设 0.3 是为了让回答更确定,适合客服场景。需要创意场景(比如文案生成)可以调到 0.7 以上。

部署步骤

从拉代码到上线,完整流程:

  1. 注册 Cloudflare 账号(免费版每天 10 万次 Workers 请求,够个人项目用)
  2. npm create cloudflare@latest rag-starter -- --template https://github.com/yourname/rag-starter
  3. 在 Cloudflare Dashboard 创建 Vectorize 索引,维度设 768
  4. 创建 KV namespace 用于缓存
  5. 配置 wrangler.toml:绑定 Vectorize 和 KV
  6. npm run deploy

整个流程在 30 分钟内可以跑通。

成本估算

以个人项目日均 1000 次查询为例:

  • Workers 请求:免费额度内(10 万次/天)
  • Vectorize 写入:免费额度内(1000 万向量/月)
  • Workers AI LLM 调用:Llama 3.1 8B 约 $0.59/百万 token(Cloudflare Workers AI 定价页面,2026)
  • KV 读写:免费额度内(1000 次读/天)

日均成本不到 $0.01。等用户量上来后再考虑升付费计划或切到专用 GPU 实例。

什么时候该用这套模板

这套模板适合以下场景:

  • 个人项目的 MVP 阶段,快速验证 AI + RAG 的核心逻辑
  • 内部工具,不需要复杂的权限管理和审计日志
  • 日均查询量在 1 万次以下的小型应用

不适合的场景:需要低延迟(< 5ms)的实时系统、合规要求高的企业应用、需要微调自有模型的产品。

扩展建议

项目跑起来之后,可以按这个优先级扩展:

  1. 加缓存层(已经内置 KV 缓存,默认 1 小时过期)
  2. 加简单的请求日志(用 Workers Trace 或 R2)
  3. 加 Rate Limiting(Workers 自带)
  4. 换更强的模型(比如 Mixtral 8x7B,成本约 3 倍但效果明显更好)

总结

这套模板的价值不在于代码量,而在于把 RAG 项目从”3 天搭基础设施”变成”30 分钟上线验证”。AI 产品真正的门槛不在技术,在于能不能快速验证市场需求。减少重复劳动,把时间花在用户和产品上。

模板的完整代码在 GitHub(同名仓库 rag-starter),欢迎提 PR 和 issue。

喜欢 (0)
[🍬谢谢你请我吃糖果🍬🍬~]
分享 (0)
关于作者:
少将,关注Web全栈开发、项目管理,持续不断的学习、努力成为一个更棒的开发,做最好的自己,让世界因你不同。