Appearance
54. 如何设计一个 Deep Research 系统?
难度 P0 必背 · 岗位 应用 · 频率 ★★★ · 预计阅读 5 min
👔面试官:如何设计一个 Deep Research 系统?
🙋♂️我:查询规划、多源检索、报告生成。
👔面试官:对,但要更完整:查询规划器、检索执行器、信息融合层、迭代控制器、报告生成器。而且重点是规划质量、引用质量、可信度、过程可回放。你能展开吗?
TL;DR 速记
- 是什么:Deep Research 是「规划 → 检索 → 融合 → 迭代 → 报告」的研究型 Agent。
- 关键点:不是搜得多就好,而是规划质量、引用质量、冲突处理、可信度和可回放。
- 怎么答:用显式 Workflow 管住状态、预算和停止条件,最终输出可验证的带引用报告。
图解
Deep Research 五步闭环
💡 简要回答
五模块设计:
| 模块 | 职责 |
|---|---|
| 查询规划器 | 把复杂问题拆成子问题 |
| 检索执行器 | 多源检索(搜索、数据库、知识库) |
| 信息融合层 | 去重、冲突检测、证据对齐、可信度加权 |
| 迭代控制器 | 证据不足时继续补检 |
| 报告生成器 | 输出摘要、正文、引用、时间戳 |
设计重点:
- 不只是召回率,是规划质量、引用质量、可信度、可回放性
- 倾向于用 Workflow/LangGraph 显式编排,不是黑盒对话
常见踩坑与反例
- 踩坑 1:把 Deep Research 说成“多搜几次”。错误点是只强调搜索量;正确做法是强调查询规划、证据融合和迭代判断。
- 踩坑 2:只生成报告,不保留证据链。没有引用、时间戳和来源快照,结论无法复核;应让每个关键结论都能追到证据。
- 踩坑 3:不处理信息冲突。多来源结果不一致时不能直接拼接;要做来源可信度、时效性和冲突标注。
- 踩坑 4:完全交给黑盒 Agent 自由跑。生产系统要有 Workflow、预算、超时、停止条件和日志回放。
面试官可能继续追问
- 追问 1:怎么评估 Deep Research 质量? 看问题覆盖率、引用可验证率、冲突处理率、事实错误率和人工复核通过率。
- 追问 2:如何控制成本和延迟? 设置轮次预算、置信度停止、分层检索、结果缓存和并行检索。
- 追问 3:证据不足时怎么办? 明确标注不确定性,触发补检或转人工,而不是强行生成结论。
- 追问 4:为什么适合用 LangGraph/Workflow? 因为研究任务有状态、分支、重试和可回放需求,显式编排更可控。
📝 详细解析
五模块实现细节
查询规划器:接收复杂问题,用 LLM 生成研究提纲和子问题清单。关键:子问题要具体可检索(「2024年英伟达GPU出货量是多少」),而不是模糊抽象(「了解AI芯片市场」)。规划质量决定整体研究质量。
检索执行器:并行执行多类检索:
- 网络搜索(Bing/Google API)获取最新信息
- 内部知识库检索已有文档
- 结构化数据库查询统计数据
- 学术数据库检索研究论文
信息融合层:核心难点在于:
- 去重:不同来源报道同一事实,合并为一条
- 冲突检测:同一问题的数字或结论不一致时,标注冲突,按来源可信度和时效性排序
- 引用管理:每条信息都要关联来源 URL、标题、发布时间
迭代控制器:每轮检索后,LLM 评估「当前信息是否足以回答原问题」:
- 信息充足 → 进入报告生成
- 信息不足 → 生成新的检索查询,回到检索步骤
- 设置最大轮次(如 5 轮)防止无限循环
报告生成器:输出结构化报告(摘要、各章节正文、引用列表)。关键:每个关键结论都要有对应引用,确保可验证。
为什么用显式 Workflow 而不是 ReAct
ReAct 让模型自由决策下一步,适合探索性任务。Deep Research 有清晰的阶段划分(规划→检索→融合→迭代→报告),用 LangGraph 显式编排:每个阶段有明确的输入输出、状态检查点、预算控制,更可控、可观测、易于调试和回放。
🎯 面试总结
五模块:规划→检索→融合→迭代→报告。重点是研究过程可拆解、证据可求证。