
Claude Code 为什么不用 RAG 向量检索?
反直觉的结论
大家都在做 RAG,但 Claude Code——目前最成功的编程 Agent——根本不用向量检索。
Boris 的解释
Claude Code 创始人 Boris Cherny 在访谈中说:
在早期开发中,我们尝试过本地向量数据库做 RAG。但发现 Agent-based 的关键词搜索在实际编程场景中效果更好。
为什么 RAG 在编程场景效果不佳?
1. 代码的语义和自然语言不同
向量嵌入模型主要在自然语言上训练。getUserById 和 fetchUserFromDB 语义相近,但向量距离可能很远。
2. 精确匹配比模糊匹配重要
编程中经常需要找到精确的函数名、变量名、文件路径。关键词搜索(grep/ripgrep)在这方面天然优势。
3. Agent 可以迭代搜索
RAG 是一次性检索。而 Agent 可以:
- 先搜
getUserById - 没找到,改搜
getUser - 找到了,继续搜它的调用方
- 逐步构建完整上下文
4. 代码有结构
文件树、import 关系、类型定义——这些结构信息比向量相似度更有价值。Agent 可以利用这些结构做导航。
启示
不是所有场景都需要 RAG。在结构化数据、精确匹配重要、可迭代搜索的场景下,Agent + 关键词搜索可能是更好的选择。
RAG 更适合:非结构化文档、模糊语义匹配、一次性问答。
来源: @dotey 宝玉的翻译解读