grep 已足够吗?对代理搜索中的检索策略进行分析
grep 在字面信息恢复方面优于向量检索
在对代理搜索系统的比较研究中,通过 grep 进行的字面字符串匹配通常比基于向量的检索在恢复特定、稳定的证据(如精确日期、计数和偏好)时表现出更高的准确率。该发现表明,对于需要高精度和字面匹配的任务,传统的关键词搜索仍然比语义嵌入更为有效。
代理 harness 与工具调用的影响
虽然检索策略至关重要,但代理搜索系统的整体性能在很大程度上取决于“harness”——即管理模型如何与工具交互以及结果如何呈现的框架。研究比较了多个 harness,包括名为 Chronos 的自定义 harness,以及提供商原生的 CLI harness,如 Claude Code、Codex 和 Gemini CLI。
关键发现包括:
- Harness Influence(harness 影响): 即使底层对话数据相同,准确率分数也会因使用的 harness 和工具调用方式而显著不同。
- Programming-Tuned Harnesses(面向编程的 harness): 证据表明,针对编程任务优化的 harness(例如 Claude Code 和 Codex)对
grep有更强的偏好并能从中受益。 - Neutral Harnesses(中性 harness): 相比之下,中性 harness 在使用向量搜索时可能获得更好的结果。
实验方法
研究通过使用 LongMemEval 基准进行的两个主要实验来完成,该基准测试代理在跨多个会话的长对话中回答问题的能力。
- Experiment 1(实验 1): 在不同的 harness(Chronos、Claude Code、Codex、Gemini CLI)以及不同的工具输出格式(内联结果 vs. 模型单独读取的基于文件的结果)之间比较
grep与向量检索。 - Experiment 2(实验 2): 在逐步添加无关对话历史的情况下,评估仅使用
grep与仅使用向量检索,以测试模型处理干扰材料的能力。
批判性分析与社区观点
围绕该研究的技术讨论突出了若干局限性和关于在代理搜索中依赖 grep 的实际考量。
基准偏差与字面主义
批评者认为,结果可能受到 LongMemEval 基准选择的偏倚。由于该基准奖励对“字面证据”(精确文本跨度)的恢复,它本质上偏向 grep 而非语义搜索。
一次关于自行车的对话,随后查询自行车(bike(s)),其中 “bike” 是常见的 token 命中。但如果是一次关于贝多芬奏鸣曲的对话,随后提问古典音乐,则基于嵌入的方法会更出色。
可扩展性与资源成本
虽然 grep 在小到中等规模的数据集上提供高准确率,但它在 token 消耗和延迟方面会带来显著开销。
- Token Consumption(Token 消耗):
grep往往将更大块的上下文文本拉入上下文窗口,导致每次查询的成本上升。 - Scaling Limits(可扩展性限制): 有研究者指出,一旦语料库超过约 100,000 个文件,
grep的有效性就会下降,此时需要更强大的搜索引擎(如 BM25 或向量数据库)。
混合方法的案例
许多实践者认为,在 grep 与向量搜索之间的选择是一种错误的二分法。有效的代理工作流常常受益于工具的组合:
- Hybrid Search(混合搜索): 将正则过滤与语义排序相结合(例如使用多向量嵌入),以捕获字面和概念匹配。
- Tool Autonomy(工具自主性): 让代理根据用户请求的具体性质在
grep、混合搜索和结构化数据查询(如图框架或 SQL)之间进行选择。 - Semantic Mapping(语义映射): 使用诸如 Tree-Sitter、PageRank 或语言服务器协议(LSP)等工具构建代码库的语义映射,提供
grep无法捕获的上下文。