只要 Grep 就足夠嗎?分析代理式搜尋中的檢索策略
Grep 在文字資訊恢復上優於向量檢索
在對代理式搜尋系統的比較研究中,透過 grep 進行的文字字串匹配通常比基於向量的檢索在恢復特定、穩定的證據(例如精確日期、計數與偏好)時具有更高的準確度。此發現表明,對於需要高度精確與文字匹配的任務,傳統關鍵字搜尋仍比語意嵌入更為有效。
代理 Harness 與工具呼叫的影響
雖然檢索策略至關重要,但代理式搜尋系統的整體效能在很大程度上取決於「harness」——即管理模型與工具互動以及結果呈現方式的框架。研究比較了多種 harness,包括名為 Chronos 的自訂 harness,以及供應商原生的 CLI harness,如 Claude Code、Codex 與 Gemini CLI。
Key findings regarding harnesses include:
- 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' 這個常見詞彙會被命中。但若是一次關於貝多芬奏鳴曲的對話,然後問關於古典音樂的問題,則基於嵌入的方法會更出色。"
可擴展性與資源成本
雖然 grep 在小至中等規模資料集上提供高準確度,但它會在 token 消耗與延遲方面帶來顯著開銷。
- Token Consumption(Token 消耗):
grep常會將較大的相鄰文字片段拉入上下文視窗,導致每次查詢的成本上升。 - Scaling Limits(可擴展性限制): 有研究者指出,當語料庫超過約 100,000 個檔案時,
grep的效能會崩潰,此時需要更強大的搜尋引擎(如 BM25 或向量資料庫)。
混合方法的案例
許多實務者認為在 grep 與向量搜尋之間的選擇是一種偽二分。有效的代理式工作流程常受益於工具的組合:
- Hybrid Search(混合搜尋): 結合 regex 篩選與語意排序(例如使用 multi-vector embeddings)以同時捕捉文字與概念匹配。
- Tool Autonomy(工具自主性): 讓代理根據使用者請求的具體性質,在
grep、混合搜尋與結構化資料查詢(如圖形框架或 SQL)之間自行選擇。 - Semantic Mapping(語意映射): 使用如 Tree‑Sitter、PageRank 或 Language Server Protocols(LSP)等工具,為程式碼庫建立語意圖譜,提供
grep無法捕捉的上下文。