




















上周刷到 Vercel 的一篇博客,标题直接就是"Build knowledge agents without embeddings"。一开始以为是噱头——做知识检索不用向量数据库?读完发现,他们的思路确实巧妙:与其让 LLM 学会「语义检索」,不如让它做它最擅长的事——读文件、跑命令。
这个方案把成本砍了 75%,答案质量反而提高了。关键是调试变得极其直观:agent 答错了?打开 trace 看它跑了什么 grep 命令,拉了哪个文件的哪一段。几分钟定位问题。
绝大多数知识 Agent 的搭建路径是这样的:
然后 agent 回答错误。你开始排查:是哪个 chunk 被检索到了?为什么这个 chunk 得分 0.82 而正确答案只有 0.79?是 embedding 模型的问题?chunk 策略的问题?还是 reranking 逻辑的问题?
Embedding 管线擅长语义相似度检索,但在需要精确值的场景下经常翻车。 比如用户问"API 的速率限制是多少",embedding 可能返回一段提到速率限制但没给出具体数字的段落,而正确答案在另一个被截断的 chunk 里。
更痛苦的是调试。向量的相似度分数是一个黑盒数字——你没法直观地理解为什么 0.82 大于 0.79,更没法告诉用户"因为向量空间中这两个 chunk 更近"。
Vercel 的思路是:LLM 天生就理解文件系统。
它们在训练数据里见过海量代码——遍历目录、grep 搜索文件、跨文件管理状态。代码补全、文件操作本身就是 LLM 的强项。与其教模型一个新技能(向量检索),不如用它最擅长的能力(文件操作)。
核心架构异常简洁:
MERMAID_BLOCK_0
工作流程:
1. 数据源(GitHub repo、YouTube 字幕、Markdown 文档)同步到文件系统
2. 用户提问时,Vercel Sandbox 启动一个临时 Linux VM
3. Agent 在 Sandbox 里用 Bash 命令搜索文件(grep、find、cat)
4. 拿到搜索结果后,LLM 生成答案
5. 返回答案,附带来源引用
没有向量数据库,没有 chunking 管线,没有 embedding 模型。 文件就是文件,命令就是命令,结果可追溯。
成本数据也很直接:单次调用从 ~$1.00 降到 ~$0.25,降了 75%。
Vercel 把这套方案打包成了 Knowledge Agent Template,一个开源模板,可以一键 fork、定制、部署到 Vercel。
技术栈由三个核心组件撑起:
| 组件 | 作用 | 技术 |
|---|---|---|
| Vercel Sandbox | 安全执行环境 | Firecracker MicroVM,隔离的临时 Linux |
| AI SDK | Agent 编排 | TypeScript,支持多模型 |
| Chat SDK | 多平台接入 | Discord、Slack、Teams、GitHub 等适配器 |
Sandbox 是整个方案的关键基础设施。它本质上是一个 Firecracker MicroVM——和 Vercel 每天 200 万次构建用的同一套底层技术。
import { Sandbox } from "@vercel/sandbox";
const sandbox = await Sandbox.create({
source: {
url: "https://github.com/your-org/your-docs.git",
type: "git",
},
resources: { vcpus: 4 },
runtime: "node24",
});
// Agent 在 Sandbox 里执行搜索
const result = await sandbox.runCommand({
cmd: "grep",
args: ["-r", "rate limit", "--include=*.md", "."],
stdout: process.stdout,
});
每次搜索请求启动一个干净的 VM,跑完即销毁。没有状态污染,没有安全问题——agent 跑的是不可信代码,但被安全隔离在 MicroVM 里。
AI SDK(GitHub: vercel/ai,24k+ stars)是 Vercel 的 AI 工具链,支持多种 LLM provider。在 Knowledge Agent 里,它负责:
grep、find、cat 等文件操作工具模板里内置了一个 智能复杂度路由器(Complexity Router):
简单问题 → 快速便宜的模型(如 GPT-4o-mini)
复杂问题 → 强力但昂贵的模型(如 Claude Sonnet)
这一层路由进一步压低了成本。大部分 FAQ 级别的问题用轻量模型就够了,只有需要多步推理的复杂问题才动用重模型。
知识 Agent 不应该只活在网页里。你的工程师在 Slack 上,社区在 Discord 上,Bug 报告在 GitHub 上——agent 应该跟到用户所在的地方。
Chat SDK 提供了一组平台适配器:
// Discord 适配器
import { createDiscordAdapter } from "@vercel/chat-sdk/discord";
// GitHub 适配器
import { createGitHubAdapter } from "@vercel/chat-sdk/github";
// 都指向同一个 Agent 管线
discordAdapter.onMention(async (message) => {
const response = await agentPipeline(message.text);
return response;
});
每个适配器处理平台特有的认证、事件格式、消息格式,而 agent 本身的逻辑保持不变。模板开箱自带 GitHub 和 Discord 适配器,Chat SDK 还支持 Slack、Microsoft Teams、Google Chat 等。
通过 Admin 界面添加数据源,内容存入 Postgres。支持的数据源类型:
grep 搜索代码和文档数据同步后就是一堆普通文件,不需要任何预处理。
Agent 不是简单地跑一个 grep 就完了。它有完整的搜索策略:
find 定位相关文件grep 搜索关键词cat 读取具体段落这些步骤由 LLM 动态编排——它会根据问题类型决定搜索策略。简单的事实查询可能只需要一轮 grep,复杂的技术问题可能需要多轮交叉检索。
模板自带完整的 Admin 界面:
这个 Admin Agent 本身也是一个知识 Agent——它用 Vercel 的 Instrumentation 提供日志查询能力,让你用自然语言调试 agent。
| 维度 | 文件系统方案 | Embedding 管线 |
|---|---|---|
| 精确检索 | ✅ grep 精确匹配,无歧义 | ❌ 语义相似度可能模糊 |
| 语义理解 | ⚠️ 依赖 LLM 的理解能力 | ✅ 天然支持语义搜索 |
| 调试难度 | ✅ 看命令和文件即可 | ❌ 向量相似度是黑盒 |
| 成本 | ✅ ~$0.25/调用 | ❌ ~$1.00/调用 |
| 规模 | ⚠️ 文件数量极大时搜索变慢 | ✅ 向量检索 O(log n) |
| 实时性 | ✅ 文件更新立即可搜 | ❌ 需要 re-embed |
| 搭建复杂度 | ✅ 无需额外基础设施 | ❌ 向量 DB + 管线 |
| 非文本数据 | ❌ 主要适用于文本 | ✅ 多模态 embedding |
文件系统方案最适合的场景:
Embedding 管线仍然适合的场景:
这两种方案不互斥。Vercel 的思路是:很多团队在不需要 Embedding 的场景下被迫用 Embedding,因为这是"标准做法"。而文件系统方案提供了一个更简单、更可调试、更便宜的替代——至少在特定场景下。
一键部署到 Vercel,配置数据源,开始回答问题。没有向量数据库,没有 chunking 管线,没有 embedding 模型。
作者: itech001
来源: 公众号:AI人工智能时代
网站: https://www.theaiera.cn/
每日分享最前沿的AI新闻资讯和技术研究。
本文首发于 AI人工智能时代,转载请注明出处。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。