第19章:Research Synthesis:如何让 Agent 写出“深度研报”

23 阅读5分钟

第19章:Research Synthesis:如何让 Agent 写出“深度研报”

搜索(Search)只是找砖头,综合(Synthesis)才是盖房子。大多数 Agent 只能给你一堆砖头,而 Research Synthesis 能给你交付一栋别墅。

0001页.png

你让 Agent:“帮我研究一下 Anthropic 这家公司。”

普通 Agent 的回答:

Anthropic 是一家 AI 安全公司,由前 OpenAI 员工创立。他们的产品是 Claude。最近融了很多钱。

这回答错了吗?没错。 但这有用吗?没用。 这只是一堆碎片的堆砌,连“百度百科”的水平都不到。如果你是投资人,拿着这份报告去上会,会被老板骂死。

Research Synthesis(综合研究)模式 的目标,是让 Agent 像一个 顶级分析师 一样工作:

  1. 多源信源:不只看官网,还要看财报、新闻、甚至社交媒体。
  2. 交叉验证:A 媒体说融资 10 亿,B 媒体说 40 亿,到底信谁?
  3. 查漏补缺:发现“管理团队背景”这一块没查到,自动去补查,而不是直接交卷。
  4. 结构化输出:最终交付一份有目录、有引用、有洞察的深度报告。

0003页.png

01. 为什么“搜完就算”是错误的?

很多人做 RAG(检索增强生成)都有一个误区: 用户提问 -> 搜索 Top 3 结果 -> 扔给 LLM 总结 -> 结束

这种线性流程有两个致命缺陷:

  1. 信息茧房:Top 3 结果往往是同质化的(比如 3 篇都是通稿)。
  2. 盲目自信:Agent 根本不知道自己“漏了什么”。它不知道“产品定价”没查到,它只会假装这个问题不存在。

Research Synthesis 的核心逻辑是:循环迭代。 它不追求“一次搜对”,而是追求“不断逼近全貌”。

02. 核心架构:像写论文一样做研究

我们可以把这个过程想象成 写毕业论文 的五个阶段:

阶段一:开题报告(Planning)

Agent 拿到题目“研究 Anthropic”,首先生成一个 研究大纲

  • 维度 A:公司概况(创始人、愿景)
  • 维度 B:产品矩阵(Claude 3 性能、定价)
  • 维度 C:资本版图(融资额、投资方)
  • 维度 D:风险分析(监管压力、人才流失)

阶段二:分头行动(Parallel Execution)

编排器(Orchestrator)派出 4 个 Researcher Agent,分别去查这 4 个维度。

  • Agent A 去官网查概况。
  • Agent B 去 TechCrunch 查融资。
  • Agent C 去 GitHub 和 HuggingFace 查技术评价。

阶段三:拼图与缺口识别(Coverage Evaluation)

这是最关键的一步。 Agent 把找回来的碎片拼在一起,然后自我审视: “拼图完整了吗?”

  • 现状:概况有了,融资有了。
  • 缺口:产品定价没找到,团队背景太简略。
  • 决策不能交卷

阶段四:定向补全(Iterative Filling)

针对缺口,发起第二轮定向搜索:

  • “搜索 Anthropic Claude 3 API pricing”
  • “搜索 Dario Amodei 之前的论文”

阶段五:终稿合成(Synthesis)

当覆盖率达标(比如 > 80%),或者达到最大轮次,进入最后一步:

  • 去重:把重复的融资新闻删掉。
  • 冲突解决:如果数据打架,标注“据 X 报道是 A,据 Y 报道是 B”。
  • 格式化:生成 Markdown 报告,并在每一处事实后面加上 [1] 这样的引用角标。

0004页.png

03. 关键技术点:覆盖率评估器(The Grader)

如何判断“查够了没”?我们需要一个 评估器(Evaluator)

这不是靠感觉,而是靠 Prompt Engineering + 确定性规则

# 伪代码:覆盖率评估逻辑
def evaluate_coverage(current_report, required_dimensions):
    prompt = f"""
    目标维度:{required_dimensions}
    当前报告内容:{current_report}
    
    请评估:
    1. 每个维度的覆盖程度(0-1分)。
    2. 识别出具体的“关键缺口”(Critical Gaps)。
    3. 如果报告里全是“未找到相关信息”,请打低分。
    """
    score, gaps = llm.evaluate(prompt)
    
    # 确定性护栏(Guardrails)
    if iteration > MAX_ITERATION:
        return "强制结束"  # 防止死循环烧钱
    if score < 0.5:
        return "继续查"
    if has_critical_gaps(gaps):
        return "定向补查"
        
    return "通过"

经验之谈: 最容易出的 Bug 是 “幻觉覆盖” 。 Agent 会说:“我查了产品定价,结果是未公开。” 如果不加干预,评估器可能会觉得“查了”就是“覆盖了”。必须明确告诉评估器: “承认不知道”不等于“覆盖了信息”

04. 数据清洗:实体过滤器(Entity Filter)

在搜“Anthropic”时,搜索引擎可能会返回:

  • “OpenAI 发布了 Sora”(竞品新闻,干扰项)
  • “人类学(Anthropology)的研究进展”(关键词撞车,噪音)

如果把这些垃圾塞进 Context,报告质量会大打折扣。 我们需要一个 实体过滤器

  1. 白名单机制:优先保留 anthropic.comcrunchbase.com 等权威域名的来源。
  2. 相关性打分:计算搜索结果摘要与“Anthropic”这个实体的语义相似度,低于 0.3 的直接丢弃。

05. 输出标准:没有引用就是耍流氓

在专业领域,可信度(Trustworthiness)流利度(Fluency) 更重要。 Research Synthesis 模式要求输出必须包含 内联引用(Inline Citations)

错误示范:

Anthropic 估值 180 亿。

正确示范:

截至 2024 年初,Anthropic 完成了新一轮融资,估值达到 184 亿美元 [1] 。其主要投资方包括 Amazon 和 Google [2]

Sources: [1] New York Times: Anthropic raises $4B... [2] Crunchbase Profile...

这不仅是为了好看,更是为了 免责验证。用户可以点击链接去确认真伪。

总结

Research Synthesis 是 Agent 高级推理能力的集大成者。

  • 它用 Planning 拆解维度。
  • 它用 Parallel Execution 并行搜集。
  • 它用 Reflection 评估覆盖率。
  • 它用 Iterative Loop 查漏补缺。

它是目前最接近 “人类分析师” 的工作流。

0015页.png Part 6(高级推理模式)完结。

我们学习了:

  • ToT:在迷宫中找路。
  • Debate:在冲突中找真理。
  • Research Synthesis:在海量信息中找全貌。

到现在为止,我们在 逻辑层面 已经无懈可击了。 但是,要把这一套复杂的系统搬到 生产环境(Production) ,我们还需要解决最后一公里的问题:性能、并发、部署、监控

Part 7:生产架构(The Production Architecture) 正式开启。 下一章,我们将跳出具体的 Agent 逻辑,从系统架构师的视角,聊聊 Go/Rust/Python 的三层架构设计 —— 怎么让你的 Python Agent 跑在高性能的 Go 甚至 Rust 基础设施上?

第 20 章见。