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 基准进行的两个主要实验来完成,该基准测试代理在跨多个会话的长对话中回答问题的能力。

  1. Experiment 1(实验 1): 在不同的 harness(Chronos、Claude Code、Codex、Gemini CLI)以及不同的工具输出格式(内联结果 vs. 模型单独读取的基于文件的结果)之间比较 grep 与向量检索。
  2. 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 无法捕获的上下文。

Sources