Hotdry.

Article

搜索即代码生成:以结构化程序合成替代传统检索排序

将搜索查询重构为代码生成任务,通过结构化程序合成实现复杂多步推理,给出搜索系统架构转型的关键参数与落地路径。

2026-06-02ai-systems

传统搜索引擎的范式建立在「检索 - 排序 - 呈现」的三段式流程之上:系统从索引中召回候选文档,通过相关性算法排序,最终返回链接列表。然而,当用户提出需要多步推理的复杂问题时 —— 例如「比较 2024 年 Q4 各云厂商的 AI 基础设施投入与营收增长的关联性」—— 这种架构的局限性便暴露无遗。Perplexity 提出的「搜索即代码生成」(Search as Code Generation)范式,正是对这一瓶颈的根本性重构。

从相关性排序到程序合成

传统检索系统的核心假设是:存在一组预索引的文档能够直接回答用户问题。系统只需找到最相关的文档即可。但在实际场景中,答案往往分散在多个来源中,需要经过聚合、计算、比较甚至假设检验才能得出。

搜索即代码生成的核心洞见在于:将用户的自然语言查询视为一个待生成的「搜索程序」。这个程序不是简单的关键词组合,而是一个结构化的执行计划,包含明确的操作步骤 —— 数据检索、交叉验证、数值计算、时序对齐、结论推导。系统不再返回文档列表,而是执行这个生成的程序,输出经过推理整合的最终答案。

这种范式转换的技术基础是结构化程序合成(Structured Program Synthesis)。与端到端生成相比,程序合成要求输出具有明确的语法结构和可验证的执行语义。在搜索场景下,这意味着将查询分解为可原子化的搜索操作、数据转换操作和推理操作,每个操作都有明确的输入输出规范。

架构重构的关键维度

实现搜索即代码生成需要系统在三个维度进行重构:

查询理解层:从意图分类到程序草图生成

传统系统的查询理解模块输出的是意图标签和关键词权重。在新范式下,这一层需要输出的是「程序草图」—— 一个包含占位符的执行计划框架。草图定义了需要执行的操作类型序列,但具体的操作参数(如检索查询词、数据源选择、过滤条件)可以在后续步骤中填充。

程序草图的生成依赖对查询复杂度的准确评估。系统需要识别查询中隐含的子问题结构:是简单的事实检索,还是需要多源交叉验证?是否涉及时序数据的对比分析?是否包含需要拆解的复合概念?

执行引擎:从单次检索到多步执行

生成程序草图后,系统进入执行阶段。这与传统搜索的单次检索 - 排序流程截然不同。执行引擎需要支持:

  • 条件执行:根据中间结果动态决定后续操作路径
  • 循环与迭代:当单次检索结果不充分时自动扩展查询
  • 并行分支:对可独立执行的子查询进行并发处理
  • 结果聚合:将多源、异构的中间结果整合为统一输出

执行引擎的设计需要权衡确定性与灵活性。过于严格的执行计划可能无法应对信息缺失或冲突的情况;过于灵活的执行则可能导致搜索过程发散,无法收敛到有效答案。

验证与修正:从静态排序到动态自检

程序执行过程中,系统需要持续验证中间结果的可靠性和完整性。这包括:源权威性评估、信息冲突检测、逻辑一致性检验、覆盖度自检。当验证失败时,系统应触发修正流程 —— 可能是重新检索、调整过滤条件、或请求用户澄清。

工程落地的关键参数

将搜索即代码生成范式落地为生产系统,需要在以下参数上做出明确选择:

程序表示的粒度

搜索程序应该以何种抽象级别表示?粗粒度表示(如「检索 - 分析 - 总结」三步)实现简单但表达能力有限;细粒度表示(具体到每个 API 调用和参数)表达能力更强,但生成难度和错误传播风险也更高。实践中,采用分层表示 —— 高层定义执行阶段,低层在运行时动态生成 —— 是较为稳健的策略。

执行深度的控制

复杂查询可能触发指数级增长的子查询。系统必须设定执行深度的硬性上限:最大迭代次数、最大并行分支数、最大数据源数量。同时,需要建立「足够好」的判定标准,当答案质量达到阈值时及时终止搜索,避免过度计算。

回退策略的设计

当程序生成失败或执行异常时,系统需要优雅降级。回退策略的层级可以包括:简化查询后重试、切换为传统检索模式、或坦诚告知用户当前查询超出系统能力范围。回退触发条件应基于置信度评估,而非简单的超时或错误捕获。

延迟与质量的权衡

多步推理必然带来延迟增长。系统需要提供流式输出机制,在最终答案生成前展示中间进展(如「正在检索相关财报」「发现数据冲突,正在进行交叉验证」)。这不仅改善用户体验,也为系统提供了人工干预的窗口。

与传统 RAG 的本质区别

搜索即代码生成与流行的 RAG(检索增强生成)架构常被混淆,但二者存在本质差异。RAG 的核心是「先检索、后生成」—— 检索阶段固定,生成阶段基于检索结果进行总结。而搜索即代码生成将检索本身纳入生成范畴,检索策略、数据源选择、甚至检索次数都是由模型动态决定的。

这种差异在复杂查询场景下尤为明显。RAG 系统面对需要多跳推理的问题时,往往受限于单次检索的召回范围;而搜索即代码生成可以通过生成条件检索、迭代扩展等程序结构,主动探索信息空间。

实施路径建议

对于希望引入搜索即代码生成能力的团队,建议采用渐进式演进路径:

第一阶段,在现有搜索系统之上构建「查询复杂度分类器」,识别需要多步推理的查询类型,将其路由至专门的处理通道。这允许团队在有限范围内验证新范式的有效性。

第二阶段,针对高频复杂查询类型,构建模板化的程序库。这些模板定义了标准化的执行流程,系统只需填充具体参数即可执行。这降低了程序生成的难度,同时保证了执行的可预测性。

第三阶段,引入程序合成模型,支持从自然语言到完整程序的端到端生成。此阶段需要建立完善的结果验证机制和人工反馈闭环,持续优化生成质量。

搜索即代码生成代表了搜索技术从「信息检索」向「知识计算」的跃迁。它不再满足于帮用户找到可能包含答案的文档,而是直接计算并呈现答案本身。这一范式的成熟,将重新定义人机信息交互的边界。


参考来源

  • Perplexity AI Blog: Rethinking Search as Code Generation
  • Hacker News Discussion on Search-as-Code Architecture

ai-systems

内容声明:本文无广告投放、无付费植入。

如有事实性问题,欢迎发送勘误至 i@hotdrydog.com