CodeRoad Map 程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。
由 程序员柏风 独立维护 · 关于作者
学习 更多
Workers AI 边缘 AI 与 Vectorize。
Workers AI
这一课你将能做到
在 Worker 中调用 Workers AI 完成文本生成、分类、翻译、向量嵌入
使用 AI Gateway 统一代理多家 AI 提供商(OpenAI、Anthropic、Workers AI)并实现缓存和限流
结合 Vectorize 构建语义搜索 / RAG 应用
为什么要学
你想给本站 Next.js 前端加一个「AI 智能问答」功能。传统做法是前端调用你的 Next.js API Route,API Route 再转发到 OpenAI,链路是:用户 → Cloudflare CDN → 你的服务器 → OpenAI。这一圈下来延迟高、成本高、还暴露了你的 API Key。
人话:Workers AI 让你直接在边缘跑模型推理——Llama、Mistral、BGE 嵌入模型,一行绑定调用,不用管 GPU、不用管 API Key 泄露、不用跨洋调用。再配合 AI Gateway,你可以把 OpenAI、Anthropic、Workers AI 统一成一个网关,做缓存、限流、监控、Key 池管理。
先建立图像
传统 AI 调用: Workers AI + AI Gateway:
[浏览器] [浏览器]
│ │
▼ ▼
[Next.js API Route] ──> [OpenAI] [Cloudflare Edge Worker]
(你的服务器) │
│ 跨洋调用 ┌─────┴─────┐
▼ ▼ ▼
美国 OpenAI 机房 [Workers AI] [AI Gateway]
延迟 300ms+ (边缘推理) │
├──> OpenAI
├──> Anthropic
└──> Workers AI
(缓存/限流/Key池)
跟着做
步骤 1:绑定 Workers AI
wrangler.toml:
[ai]
binding = "AI"
步骤 2:调用 LLM 生成文本
export interface Env {
AI: Ai;
}
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const { prompt } = await request.json();
const response = await env.AI.run('@cf/meta/llama-3.1-8b-instruct', {
messages: [
{ role: 'system', content: 'You are a helpful assistant.' },
{ role: 'user', content: prompt },
],
max_tokens: 512,
});
return Response.json(response);
},
} satisfies ExportedHandler<Env>;
步骤 3:生成向量嵌入
const embedding = await env.AI.run('@cf/baai/bge-base-en-v1.5', {
text: 'Cloudflare Workers is a serverless platform',
});
// embedding.data 是一个 number[][],可以存入 Vectorize
步骤 4:创建 Vectorize 索引
npx wrangler vectorize create my-embeddings --dimensions=768 --metric=cosine
[[vectorize]]
binding = "VECTORIZE"
index_name = "my-embeddings"
步骤 5:写入和查询向量 // 写入
await env.VECTORIZE.upsert([
{
id: 'doc-1',
values: embedding.data[0],
metadata: { title: 'Workers 文档', url: '/docs/workers' },
},
]);
// 查询
const results = await env.VECTORIZE.query(queryEmbedding.data[0], {
topK: 5,
returnMetadata: 'all',
});
步骤 6:配置 AI Gateway 到 Dashboard → AI → AI Gateway 创建一个 gateway,拿到 gateway URL。然后:
const gatewayUrl = 'https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_name}/openai';
const response = await fetch(`${gatewayUrl}/chat/completions`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${env.OPENAI_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'gpt-4o-mini',
messages: [{ role: 'user', content: prompt }],
}),
});
AI Gateway 会自动做:请求日志、缓存(相同 prompt 直接返回缓存结果)、限流、重试、Key 池轮询。
讲清楚要点
Workers AI 是边缘推理 :模型跑在 Cloudflare 的 GPU 节点上,延迟比跨洋调用 OpenAI 低得多。但模型规模有限(当前最大是 Llama 3.1 8B 级别),不适合超复杂推理。
AI Gateway 是统一网关 :支持 OpenAI、Anthropic、Workers AI、HuggingFace 等多家提供商。核心价值是:缓存、限流、监控、Key 池、统一日志。
Vectorize 是向量数据库 :专为 RAG 设计。把文档转成向量存入 Vectorize,查询时把问题也转成向量,做相似度搜索。
流式响应 :LLM 生成是流式的,用 ReadableStream 返回可以边生成边推给前端,提升体验。
成本控制 :Workers AI 按 token 计费,AI Gateway 免费(只收底层提供商费用)。缓存命中可以省 100% 的 API 调用费用。
你可能会懵的地方
Workers AI 和 OpenAI 怎么选?
简单任务(分类、翻译、摘要)用 Workers AI,延迟低、成本低;复杂推理(代码生成、长文写作)用 OpenAI/Anthropic,通过 AI Gateway 统一管理。
向量维度怎么确定?
由嵌入模型决定。bge-base-en-v1.5 是 768 维,bge-large-en-v1.5 是 1024 维。创建 Vectorize 索引时必须匹配。
AI Gateway 会泄露我的 API Key 吗?
不会。Key 存在 Cloudflare 的密钥管理服务里,请求只在 Cloudflare 内部网络转发,不经过第三方。
Workers AI 支持中文吗?
支持。Llama 3.1、Mistral 等多语言模型都能处理中文。嵌入模型建议用 bge-m3(多语言)而不是 bge-base-en。
RAG 的完整链路是什么?
文档 → 切分 → 嵌入 → 存入 Vectorize → 用户提问 → 问题嵌入 → Vectorize 检索 → 把相关文档 + 问题一起发给 LLM → 生成回答。
错法对照 错法 问题 正解 在前端直接调用 OpenAI API Key 暴露,任何人都能刷你的额度 通过 Worker 或 AI Gateway 代理 不做缓存,相同 prompt 重复调用 浪费 API 费用 开启 AI Gateway 缓存 嵌入模型和 Vectorize 维度不匹配 查询失败或结果错误 创建索引时确认模型输出维度 一次性传入整本电子书做嵌入 超过模型上下文限制 文档切分成 chunk(500-1000 token) 用 Workers AI 做超长文生成 模型上下文有限(通常 4K-8K) 超长任务用 OpenAI/Anthropic
卡点急救
Workers AI 返回 500 :模型可能暂时过载。加重试逻辑,或 fallback 到 AI Gateway + OpenAI。
Vectorize 查询结果为空 :检查嵌入模型是否一致(写入和查询必须用同一个模型);检查 topK 是否太小。
AI Gateway 缓存不生效 :缓存默认按完整请求体匹配。如果 prompt 有细微差异(如时间戳),缓存不会命中。建议规范化 prompt。
面试常问
Workers AI 和 OpenAI 的核心差异?
Workers AI 是边缘推理,延迟低、成本低,但模型规模有限;OpenAI 模型更强,但需要跨洋调用,延迟高。生产环境通常混合使用:简单任务走 Workers AI,复杂任务走 OpenAI,统一通过 AI Gateway 管理。
RAG 的完整流程?
文档切分 → 嵌入模型转向量 → 存入向量数据库 → 用户提问 → 问题转向量 → 向量检索 Top-K → 拼接上下文 → LLM 生成回答。关键点是嵌入模型一致性、chunk 大小、检索质量。
AI Gateway 的价值?
统一入口、缓存降本、限流保护、Key 池管理、日志监控。相当于给你的 AI 调用加了一层「CDN + 防火墙 + 监控系统」。
自测三问
如果用户问的问题在 Vectorize 里检索不到相关文档,RAG 会怎么表现?怎么优化?
Workers AI 的流式响应怎么用 ReadableStream 实现?
AI Gateway 的缓存键是什么?怎么设计 prompt 才能最大化缓存命中率?
小结一句话 Workers AI + Vectorize + AI Gateway 构成了边缘 AI 的三件套:边缘推理降延迟、向量搜索做 RAG、统一网关做治理。
延伸