搜索即代码(Search as Code,SaC)
概述
搜索即代码(SaC)是一种检索架构范式,由 Perplexity AI 于 2025 年 9 月提出。其核心思想是:让语言模型生成可执行代码,按需组装针对具体任务的检索流水线,而非依赖预先设计的固定流水线进行路由。传统搜索的本质是"回答查询",但对于需要完成任务的智能体而言,这远远不够——任务形态千变万化,每种任务都需要专属的检索策略,而这些策略在流水线设计阶段根本无法预知。
在 SaC 中,模型充当控制平面:读取用户指令,将其分解为子任务,并编写代码——把 SDK 中的搜索原语组合成定制化的检索流水线。生成的流水线随后在安全的计算沙箱中运行。这一机制将"搜索基础设施"的定义从刚性后端转变为以 SDK 形式暴露的可编程接口层。
架构
SaC 由三个功能层组成。
1. 模型作为控制平面
语言模型对用户指令进行推理,将其分解为离散的子任务,决定每个子任务所需的检索与处理流水线,并生成相应的 Python 代码加以实现。模型本身不直接执行搜索——它以代码形式定义执行计划,并将确定性操作委托给沙箱执行。
2. 计算沙箱
安全的代码执行运行时为模型生成的代码提供确定性计算环境。沙箱承载以下能力:
- 控制流(条件判断、循环、分支)
- 检索操作的批处理与并行化
- 重试与错误处理
- 结果的过滤、连接与聚合
- 所有确定性后处理步骤
沙箱确保在单次推理轮次内可编排多达数千次操作,同时避免宿主环境暴露于任意代码执行的风险之中。
3. 智能体搜索 SDK
该 SDK 将 Perplexity 的搜索栈以可组合原语的形式对外暴露,涵盖从低层检索操作(原始文档抓取、片段排序)到高层语义操作(实体提取、语义解析、跨文档综合)的完整能力。SDK 内嵌于沙箱执行运行时,可直接被模型生成的代码调用。
这种可组合性意味着模型可以按需混用各类检索原语。例如,针对一项 CVE 审计任务,模型可能直接抓取厂商安全公告、对 CVE 数据库执行结构化查询、交叉比对修复版本、汇总调查结果——所有操作都在一个生成的脚本中完成。
核心概念
- 任务专属流水线:传统 RAG 的流水线固定不变,只有查询在变化;SaC 则为每个任务生成全新的流水线。流水线的拓扑结构(调用哪些原语、按何种顺序、使用什么参数)本身就是模型的输出。
- 确定性计算卸载:过滤、连接、排序和聚合等操作委托给沙箱而非模型推理来执行,从而提升准确性、降低 Token 消耗。
- 模型无关平台:Perplexity SaC 栈设计为可与任意语言模型协同工作,控制平面并不局限于 Perplexity 自有模型。
- 智能体化,而非仅仅检索增强:SaC 定位为面向长周期任务智能体的搜索基础设施,而非单轮问答的文档检索层。
性能与评测
WANDR 基准测试
WANDR(Wide And Nuanced Deep Research)评测智能体在"广度研究"任务上的表现——这类任务需要精心编排搜索、计算与模型推理。WANDR 围绕 Perplexity Computer 为用户处理的知识密集型专业任务设计,在 WideSearch 等已有基准测试的基础上迭代改进,着重引入更复杂的任务结构。
SaC 在 WANDR 上相较第二名取得了 2.5 倍的领先优势,在需要多源综合与结构化输出约束的任务上提升尤为显著。
在全部五项基准测试中,SaC 在四项上优于所有其他系统,仅在剩余一项(HLE)上与最优系统基本持平。
CVE 审计案例研究
一项真实场景评测要求系统识别并刻画 2023—2025 年间 200 余个高危 CVE,每条记录须引用受影响厂商的安全公告并给出正确的修复版本。与非 SaC 基线的对比结果如下:
| 指标 | 非 SaC 基线 | SaC |
|---|---|---|
| 准确率 | 低于 100% | 100% |
| Token 总用量 | 基线 | −85.1% |
Token 用量的大幅下降源于沙箱承担了结构化过滤与聚合工作,这些操作若由模型完成将需要多轮迭代。
与传统 RAG 的对比
| 维度 | 传统 RAG | 搜索即代码(SaC) |
|---|---|---|
| 流水线结构 | 设计时固定 | 由模型按任务动态生成 |
| 查询处理 | 单次查询 → 检索 → 回答 | 带分支的多步骤程序 |
| 聚合方式 | 检索后由模型在上下文中处理 | 在沙箱中确定性执行(更低成本) |
| 检索粒度 | 块级相似度匹配 | 可组合的 SDK 原语 |
| 错误处理 | 手动或缺失 | 沙箱中的程序化重试 |
| Token 效率 | 随检索内容规模线性增长 | 确定性操作卸载至沙箱 |
| 适用场景 | 文档问答、知识检索 | 长周期智能体任务、结构化研究 |
Python SDK
Perplexity 通过 perplexityai Python 包对外暴露 SaC 能力:
pip install perplexityai
该 SDK 原生支持三类 API:
- Search API:核心检索能力,支持细粒度片段排序
- Agent API:面向智能体工作流的托管运行时,集成搜索、工具执行与多模型编排
- Sonar API:带集成搜索的事实接地 LLM 补全
Agent API 提供托管运行时,开发者无需自行管理沙箱基础设施即可构建智能体工作流。
Perplexity Computer
Perplexity Computer 是一个多模型智能体编排平台,协调 19 个不同的 AI 模型来完成复杂、长时运行的工作流。该平台体现了一个核心判断:AI 模型正走向专业化分工,而非趋同为通用商品。Perplexity Computer 是 SaC 架构的主要生产消费者,发布时定价为每月 200 美元。
最佳实践
| 挑战 | 描述 | 建议 |
|---|---|---|
| 任务分解质量 | SaC 的质量取决于模型将指令分解为子任务的能力 | 在系统提示词中加入分解引导;将分解质量作为独立指标进行评测 |
| 沙箱资源限制 | 生成的代码在大规模运行时可能产生无限循环或内存密集型连接操作 | 设置每次执行的 CPU/内存配额;在 SDK 中强制限制最大操作次数 |
| 原语选择 | 在低层原语足够的情况下使用高层原语会增加延迟 | 按任务类型分析原语使用情况;对规律性任务优先选用低层原语 |
| 检索接地 | 模型生成的代码可能引用不存在的 SDK 方法 | 严格锁定 SDK 版本;在模型系统提示词或工具 Schema 中包含完整 API 接口说明 |
| 评测 | 传统 RAG 指标(召回率、MRR)无法衡量 SaC 特有的质量维度 | 在任务完成层面而非单纯检索层面进行评测(如准确率、引用正确性);采用 WANDR 风格的基准测试 |
参见
参考资料
- Rethinking Search as Code Generation — Perplexity AI Research,2025 年 9 月。介绍 SaC 架构、三层模型及 WANDR 基准测试结果。
- Architecting and Evaluating an AI-First Search API — Perplexity AI Research。Search API 设计与评测方法论的配套文章。
- Agent API: A Managed Runtime for Agentic Workflows — Perplexity AI。Agent API 托管运行时详解。
- Perplexity Search API Launch — Perplexity AI。初始发布公告及检索基础设施概述。