超越语义相似性:代理式与词法检索的必要性
当前 AI 驱动的信息检索 (IR) 趋势严重向语义相似性倾斜——即使用嵌入 (embeddings) 来寻找与查询在“概念上”相关的文档。虽然这种方法解决了同义词问题(例如在搜索“canine”时找到“dog”),但它也引入了一系列新挑战:缺乏可解释性、结果不可预测以及失去细粒度控制。
最近围绕论文 Beyond Semantic Similarity 的讨论表明,视角正在发生转变。人们对“代理式搜索 (agentic search)”的兴趣日益增长——在这种模式下,LLM 充当编排器,可以迭代地优化搜索词,使用词法工具(如 grep),并根据发现的上下文在语料库中进行导航。
语义搜索的摩擦点
对于许多开发者和高级用户来说,向纯语义搜索的转变令人沮丧。主要问题在于缺乏透明度。当关键词搜索失败时,原因很明确:那个词不在那里。而当语义搜索失败或返回无关结果时,往往无法理解为什么嵌入模型会将该查询与特定文档关联起来。
正如一位从业者所指出的:
语义搜索的可解释性很差。关键词搜索很棒,因为你可以准确理解它找到了什么以及没找到什么,并且可以对其进行智能迭代。
这种控制权的缺失反映了当前对现代 Web 搜索引擎的挫败感,这些引擎往往试图解释用户意图,而不是提供用户请求的精确匹配。在代理式工作流中,为搜索工具提供精确反馈的能力,对于代理实现收敛到正确答案至关重要。
代理式工作流中词法检索的力量
虽然语义搜索通常被视为“现代”而关键词搜索被视为“传统”,但后者在与 LLM 结合时依然非常强大。代理可以利用 grep 或 BM25 等工具来寻找精确匹配,然后利用得到的结果上下文来优化其下一个查询。这种迭代循环允许代理通过在过程中发现的领域生成多个搜索词来处理同义词。
某些领域比其他领域更受益于这种方法。例如,技术文档和源代码,它们拥有高度精确的术语。在这些环境中,固定字符串搜索通常比语义近似值更可靠。
相反,医疗或法律文本——其中同一个概念可以用几十种不同的方式表达——可能仍需要语义搜索进行初步筛选以确保覆盖范围。
一些开发者甚至发现,利用现有的版本控制工具可以简化他们的代理框架。通过使用 git grep、git log 或 git diff,代理可以以一种嵌入式 RAG (Retrieval-Augmented Generation) 经常缺失的精确度来导航复杂的代码库。
实际约束:延迟、规模与语言
尽管代理式词法搜索在理论上很有吸引力,但在生产环境中仍面临若干障碍:
1. 延迟与可预测性
迭代搜索本质上比单次向量查找慢。虽然向量数据库可以在毫秒级返回结果,但一个在语料库中“漫游”并多次迭代优化搜索的代理可能会引入不可预测的延迟。对于需要低于五秒响应时间的企业级系统,除非限制在后台任务中,否则这种方法可能太慢了。
2. 规模问题
使用 grep 搜索小型本地语料库很快。但搜索数百 GB 的企业级数据则是另一回事。如果没有分布式文件系统或高度优化的索引,数据流出的成本以及扫描海量数据集所需的时间可能会使原始词法搜索变得难以承受。
3. 跨语言检索
语义嵌入在跨语言检索方面通常更优(例如,使用英语查询来查找印地语文档)。词法搜索在这些场景下会完全失效,除非添加了翻译层,因为它依赖于精确的字符匹配。
新兴模式:混合搜索与 Map-Reduce
为了平衡这些权衡,业界正在趋向于混合模型。最稳健的生产系统通常采用多阶段流水线:
- 初始检索: 结合 BM25 (词法) 和基于嵌入的 (语义) 搜索,以撒下一张既广泛又相关的网。
- 重排序 (Reranking): 使用更昂贵的 “LLM-as-judge” 或 cross-encoder 来优化顶层结果的精确度。
- 代理式优化: 如果初始结果不足,允许代理迭代地查询索引。
此外,人们也对在 IR 中复兴 Map-Reduce 模式感兴趣。通过将语料库的分片映射到不同的代理,并汇总 (reduce) 它们的发现,系统可以实现高度的局部化和覆盖率,通过迭代遍历语料库直到找到所需信息。
结论
“超越语义相似性”并不是要放弃嵌入,而是要意识到它们只是众多工具中的一种。对于高精度任务,特别是在技术领域,当由智能代理编排时,词法搜索的透明度和控制力往往优于语义相似性的“黑盒”。