当前位置: 首页 > news >正文

【大模型-写作】STORM提升文章深度

STORM (Synthesis of Topic Outlines through Retrieval and Multi-perspective Question Asking) ,旨在从零开始(from scratch)生成高质量、有深度、有组织的维基百科式长篇文章。其核心思想是模仿人类作者的写作流程,将任务分解为“预写作”(Pre-writing)和“正式写作”(Writing)两个阶段,并通过一系列精心设计的技术来保证最终文章的质量。
这篇文章可以和LLMxMapReduce v2结合起来看,感觉设计的很巧妙。
其他类似的工作,例如给用户生成菜谱、生成旅行方案推荐,都可以用类似的操作,因为核心都是“搜索背景知识、优化大纲、生成最终方案”


一、 写作整体流程

STORM 的写作流程严格遵循人类写作的“预写作 -> 写作”模式,具体步骤如下:

阶段一:预写作 (Pre-writing) —— 研究与规划

这是保证文章质量的核心阶段。STORM 通过模拟人类的研究过程,为后续写作打下坚实基础。

  1. 发现多样化的视角 (Discovering Diverse Perspectives)

    • 具体做法:系统首先会提示一个大语言模型(LLM),让它根据给定的主题 t,生成一系列相关的主题(例如,“Taylor Hawkins” 可能会关联到 “Foo Fighters”, “Drummers in Rock Music” 等)。
    • 技术技巧:接着,系统会通过 Wikipedia API 获取这些相关主题文章的“目录”(Table of Contents, TOC)。
    • 目的:将这些相关文章的目录内容拼接起来,作为上下文,再次提示 LLM,让它识别出 N 个不同的、能全面覆盖主题 t 的写作“视角”(Perspectives)。例如,对于“2022 Winter Olympics Opening Ceremony”,视角可能包括“Event Planner”(关注预算、交通)、“Cultural Historian”(关注文化象征)、“Sports Journalist”(关注运动员入场)等。
    • 关键点:为了确保基础信息不被遗漏,系统会额外添加一个默认视角:“basic fact writer focusing on broadly covering the basic facts about the topic”。
  2. 模拟多轮对话进行深度研究 (Simulating Conversations for In-depth Research)

    • 具体做法:针对上一步发现的每一个视角 p,系统会模拟一场多轮对话。对话的一方是扮演该视角的“维基百科作者”(由 LLM 扮演),另一方是“领域专家”。
    • 技术技巧
      • 提问:“作者”会根据主题 t、自己的视角 p 以及之前的对话历史 {q1, a1, ..., qi-1, ai-1},提出一个深入的、具体的后续问题 qi。这避免了直接提问时只能生成“What/When/Where”等浅层问题的局限。
      • 回答:为了确保答案的真实性,系统不会让“专家”凭空作答。它会先将问题 qi 拆解成多个具体的搜索查询(Search Queries),然后使用搜索引擎(如 You.com API)获取结果。
      • 过滤:搜索结果会经过一个“基于规则的过滤器”(rule-based filter),该过滤器依据维基百科的“可靠来源”(Reliable Sources)指南,剔除掉不可信的来源(如个人博客、宣传性网站)。
      • 综合:最后,LLM 会综合这些经过筛选的可信来源,生成一个有据可依的答案 ai,并将这些来源添加到参考文献集合 R 中。
    • 目的:通过这种“提问 -> 搜索 -> 过滤 -> 综合”的循环,系统能够像人类一样进行迭代式、有深度的研究,挖掘出主题的多维度信息。
  3. 创建并优化文章大纲 (Creating and Refining the Article Outline)

    • 具体做法
      • 初稿大纲:首先,仅根据主题 t,让 LLM 生成一个初步的大纲 OD。这个大纲通常结构清晰但内容较泛。
      • 精炼大纲:然后,将主题 t、初稿大纲 OD 以及所有模拟对话 {C0, C1, ..., CN} 作为上下文,再次提示 LLM,让它基于收集到的丰富信息来精炼和扩充大纲,生成最终的高质量大纲 O
    • 目的:这一步将 LLM 的内在知识与外部收集到的、经过验证的信息相结合,产出一个内容全面、结构合理的写作蓝图。

阶段二:正式写作 (Writing) —— 基于大纲生成文章

有了高质量的大纲和丰富的参考文献,正式写作阶段就水到渠成。

  1. 分章节生成内容

    • 具体做法:系统会根据最终大纲 O,按章节(section)和子章节(subsection)逐一生成内容。
    • 技术技巧:由于参考文献集合 R 通常非常庞大,无法一次性放入 LLM 的上下文窗口。因此,系统会根据当前要写的章节标题,从 R 中检索出最相关的文档片段(基于 Sentence-BERT 计算的语义相似度),然后将这些片段和章节标题一起作为提示,让 LLM 生成该章节的内容,并要求其为每句话添加引用。
    • 目的:确保每个章节的内容都有据可依,且引用了最相关的资料。
  2. 后期润色与整合

    • 具体做法
      • 去重:由于章节是并行生成的,可能会出现重复内容。系统会将所有章节拼接成完整文章后,再次提示 LLM 删除重复信息,以提高文章的连贯性。
      • 生成导语:最后,系统会提示 LLM 根据整篇文章的内容,生成一个符合维基百科风格的“导语”(Lead Section),放在文章开头,概括全文要点。

二、 如何保证写作质量?—— 具体策略与技术细节

STORM 通过以下多层次的策略来保证最终文章的质量:

  1. 源头保证:基于可信来源的“接地”写作 (Grounding on Trusted Sources)

    • 这是防止“幻觉”(hallucination)和保证事实准确性的第一道防线。所有在对话模拟阶段生成的答案,都必须基于从互联网上检索到的、经过“维基百科可靠来源指南”过滤后的信息。这确保了文章的根基是真实可靠的。
  2. 过程控制:通过“多视角提问”保证内容的广度与深度 (Ensuring Breadth and Depth via Multi-perspective Question Asking)

    • 有趣发现:研究发现,直接让 LLM 提问(Direct Prompting)只能产生浅层问题。而通过赋予 LLM 不同的“角色”或“视角”,能显著提升提问的质量和多样性。
    • 效果:这种方法能挖掘出单一视角下容易被忽略的细节和关联,使文章内容更加全面、立体。人类专家评估也证实,STORM 生成的文章在“覆盖面”(Coverage)和“组织性”(Organization)上比基线模型有显著提升(分别高出10%和25%)。
  3. 结构先行:通过“大纲评估”在早期控制质量 (Early Quality Control via Outline Evaluation)

    • 具体做法:论文定义了两个自动评估指标来衡量大纲质量:
      • 标题软召回率 (Heading Soft Recall):计算生成大纲的标题与人工撰写文章标题在语义上的相似度(使用 Sentence-BERT 嵌入的余弦相似度),而非字面匹配。这更符合人类对“内容覆盖”的判断。
      • 标题实体召回率 (Heading Entity Recall):计算生成大纲的标题中,覆盖了多少人工文章标题中出现的命名实体(使用 FLAIR NER 工具提取)。这确保了关键信息点不被遗漏。
    • 目的:在投入大量精力写完整篇文章之前,先评估大纲的质量,可以及早发现问题并进行修正,这是一种高效的质量控制手段。
  4. 结果验证:多维度的自动化与人工评估 (Multi-dimensional Automated and Human Evaluation)

    • 自动化评估
      • 文章层面:使用 ROUGE 分数、实体召回率、以及一个名为 Prometheus 的 13B 评估模型,从“兴趣度”、“连贯性与组织”、“相关性与焦点”、“覆盖面”四个维度对文章进行打分(1-5分)。
      • 可验证性:使用 Mistral 7B-Instruct 模型检查文章中的每句话是否能被其引用的段落所支持,计算“引用召回率”和“引用精确率”。
    • 人工评估
      • 具体做法:邀请了 10位经验丰富的维基百科编辑(每人至少有500次编辑记录)对文章进行评估。
      • 评估维度:同样从“兴趣度”、“连贯性与组织”、“相关性与焦点”、“覆盖面”、“可验证性”五个维度进行打分(1-7分),并提供开放式反馈和偏好选择。
      • 有趣发现:专家评估揭示了自动化评估无法捕捉到的深层问题,例如:
        • 情感化与不中立 (Emotional and Unneutral Language):文章有时会带有情感色彩或偏向性,这是因为其信息源(互联网)本身就存在偏见。这是未来研究的一个重要方向。
        • 无中生有/错误关联 (Red Herring Fallacy / Over-association):模型有时会将不相关的信息强行关联起来,或基于现有信息做出过度推断。这比简单的“事实性幻觉”更难检测和纠正。
  5. 迭代优化:通过消融实验验证各模块的有效性 (Validation via Ablation Studies)

    • 具体做法:论文通过消融实验,移除 STORM 的关键组件(如“多视角”或“对话模拟”),来验证它们对最终质量的贡献。
    • 关键发现
      • 移除“对话模拟”会导致大纲质量大幅下降,证明“阅读相关信息后再提问”对于生成有效问题是至关重要的。
      • 移除“大纲阶段”会显著降低最终文章的质量,证明“先规划后写作”的流程是有效的。

问题解答

问题1:在阶段一中,参考文献集合 R 与高质量大纲 O 有什么关系?

  • 原文依据与融合答案
    在预写作阶段(阶段一),参考文献集合 R 是生成高质量大纲 O直接信息来源和基石。两者的关系是输入与输出的关系。
    • 信息收集:在“模拟多轮对话”环节(3.2节),系统会模拟不同视角的“百科作者”与“领域专家”的对话。专家的回答 ai 并非凭空生成,而是基于从互联网搜索并经过过滤的可信来源。这些来源会被直接添加到参考文献集合 R
    • 大纲生成:在“创建并优化文章大纲”环节(3.3节),系统会先生成一个初步大纲 OD。然后,为了精炼这个大纲,系统会将主题 t、初步大纲 OD 以及所有模拟对话 {C0, C1, ..., CN} 作为提示,让模型生成最终的高质量大纲 O。这里的“模拟对话” {C0, C1, ..., CN} 包含了从参考文献 R 中提炼出的核心信息和问答。因此,大纲 O 的丰富性和准确性直接依赖于 R 中信息的广度和深度。
    • 总结R 是通过研究过程收集到的原始资料库,而 O 则是基于这些资料库进行归纳、整理和结构化后形成的写作蓝图。没有 R 提供的详实内容,O 就会是空洞和缺乏依据的。

问题2:Prometheus 的 13B 如何进行评估?

  • 原文依据与融合答案
    根据原文4.2节,Prometheus 是一个13B参数的开源评估模型(evaluator LLM),它通过一个定制的1-5分评分标准(rubric)来评估文章质量。
    • 评估方式:Prometheus 会阅读生成的文章,并根据预设的评分标准,从“兴趣度 (Interest Level)”、“连贯性与组织 (Coherence and Organization)”、“相关性与焦点 (Relevance and Focus)”和“覆盖面 (Coverage)”这四个维度分别给出1到5分的评分。
    • 输入处理:由于文章可能很长,而模型的上下文窗口有限,系统会将文章修剪到2000词以内,方法是迭代地从最短的章节开始移除内容,以确保输入能被模型处理。
    • 评估依据:Prometheus 的评估是基于其对文章内容的理解,将其与评分标准进行比对。原文提到,即使不提供5分的参考答案(reference answer),Prometheus 的评分也与人类偏好有很好的相关性。
    • 总结:Prometheus 的评估是一个自动化、基于规则和内容理解的过程。它像一个训练有素的评委,根据一套明确的书面标准,对文章的特定方面进行打分。

问题3:如何识别出 N 个不同的、能全面覆盖主题 t 的写作“视角”(Perspectives)?

  • 原文依据与融合答案
    识别写作“视角”的过程是一个数据驱动的、由模型执行的分析过程,而非人工指定。
    1. 第一步:调查相关文章。系统首先提示一个LLM,让它根据给定主题 t 生成一系列相关的主题。然后,系统会通过 Wikipedia API 获取这些相关主题对应文章的“目录”(Table of Contents, TOC)。
    2. 第二步:提取与整合。将所有相关文章的目录内容拼接起来,形成一个综合的上下文。
    3. 第三步:模型识别。将这个综合上下文和主题 t 一起作为提示,再次提示LLM,让它从这些目录中识别出 N 个不同的视角 P = {p1, ..., pN}。这些视角被定义为能够共同为 t 贡献一篇全面文章的不同角度(例如,对于“奥运会开幕式”,视角可以是“活动策划者”、“文化历史学家”、“体育记者”等)。
    4. 第四步:补充基础视角。为了确保基础信息不被遗漏,系统会额外添加一个默认视角:“专注于广泛覆盖主题基本事实的基础事实作者”。
    • 总结:视角的识别完全依赖于LLM对相关领域知识结构(通过目录体现)的分析和归纳能力。这是一种自动化的内容分析和角色分配

问题4:模拟多轮对话中,百科作者负责提问、领域专家负责回答,如何确保百科作者的提问有深度?领域专家的答案如何参与到后面的流程中?

  • 原文依据与融合答案
    • 确保提问有深度
      • 赋予特定视角:如问题3所述,每个“百科作者”都被赋予一个特定的、有深度的视角(如“活动策划者”)。这个视角本身就引导模型提出更专业、更深入的问题,而不是泛泛的“What/When/Where”。
      • 利用对话历史:在第 i 轮对话中,模型生成问题 qi 时,不仅基于主题 t 和其视角 p,还会基于之前的对话历史 {q1, a1, ..., qi-1, ai-1}。这使得问题可以是追问基于之前答案的深化,从而形成一个迭代研究的动态过程。
    • 专家答案的后续参与
      • 构建参考文献 R:专家的每一个回答 ai 都是基于从互联网检索并过滤后的可信来源生成的。这些来源会被直接添加到参考文献集合 R,成为后续写作的素材库。
      • 用于大纲精炼:所有模拟对话 {C0, C1, ..., CN}(包含所有问答)会被作为关键输入,与初步大纲 OD 一起,用于生成最终的高质量大纲 O。专家的答案是构成这些对话的核心内容,直接影响大纲的细节和结构。
      • 用于正式写作:在正式写作阶段,系统会根据大纲的每个章节标题,从 R 中检索最相关的文档片段,然后让LLM基于这些片段生成该章节的内容。因此,专家答案所依赖的原始信息,最终会通过 R 流向最终的文章。
    • 总结:通过“角色扮演”和“对话历史”确保提问深度;通过将答案来源加入 R 并将对话内容用于大纲精炼,确保专家答案深度参与到后续流程中。

问题5:创建并优化文章大纲中,论文需要“人工撰写文章标题”,这不太现实。是否可以参照其他论文做法,根据你所搜索到的集合 R ,来创建大纲?

  • 原文依据与融合答案
    论文中完全不需要“人工撰写文章标题”。这是一个误解。
    • 自动化的大纲创建:STORM 系统的所有步骤都是自动化的。在大纲创建阶段(3.3节),系统首先让LLM根据主题 t 自动生成一个初步大纲 OD。然后,再让LLM根据主题 t、初步大纲 OD 以及模拟对话 {C0, C1, ..., CN}自动精炼出最终大纲 O
    • “人工撰写文章标题”的用途:原文中提到“人工撰写文章标题”仅用于评估(2.2节)。为了衡量自动生成的大纲 O 的质量,研究人员需要一个“标准答案”,即人类撰写的、高质量的维基百科文章的标题(Heading)作为参照物(Ground Truth),来计算“标题软召回率”和“标题实体召回率”。
    • 关于集合 R:可以参照LLMxMapReduce-V2来优化大纲。这个工具根据搜索到的文档集合,来扩展大纲,感觉比这篇文章更靠谱。
    • 总结:整个大纲的创建和优化过程是全自动的,由LLM完成。人工撰写的标题仅作为评估的黄金标准,而非生成过程的输入。因此,不存在“不现实”的问题。STORM 的方法本身就是为了解决“人工撰写大纲成本高昂”这一现实问题。

文章转载自:

http://UVQ9tgrS.qdxwf.cn
http://Gl9J4clS.qdxwf.cn
http://xlRYlo5V.qdxwf.cn
http://9ytKVlK2.qdxwf.cn
http://484bvSmc.qdxwf.cn
http://VJWhLGrM.qdxwf.cn
http://GVuYwMDr.qdxwf.cn
http://DbZZ8aXy.qdxwf.cn
http://23vKLgII.qdxwf.cn
http://DzizvW9q.qdxwf.cn
http://FAz1hKmh.qdxwf.cn
http://Q2SybVsf.qdxwf.cn
http://mLzkLkk2.qdxwf.cn
http://r3xUYNsu.qdxwf.cn
http://T4q2nnEq.qdxwf.cn
http://cridQlAZ.qdxwf.cn
http://0TLI9t1E.qdxwf.cn
http://1uAQxq6r.qdxwf.cn
http://eukeAUNt.qdxwf.cn
http://HOA2HoDJ.qdxwf.cn
http://D2e1rcDg.qdxwf.cn
http://ePbFLLC0.qdxwf.cn
http://tBGqg5cp.qdxwf.cn
http://VUOE1pb1.qdxwf.cn
http://13kBqbWi.qdxwf.cn
http://TiLwQVpD.qdxwf.cn
http://DU8TIF23.qdxwf.cn
http://9L7xVoug.qdxwf.cn
http://bQofOUzN.qdxwf.cn
http://OO3kNgSZ.qdxwf.cn
http://www.dtcms.com/a/376690.html

相关文章:

  • (纯新手教学)计算机视觉(opencv)实战十四——模板与多个对象匹配
  • 论文阅读:arxiv 2024 Large Language Model Enhanced Recommender Systems: A Survey
  • 微店平台商品详情接口技术实现:从接口解析到数据结构化全方案
  • (12)使用 Vicon 室内定位系统(一)
  • 疯狂星期四文案网第65天运营日记
  • 【从零开始】12. 一切回归原点
  • JavaSE之深入浅出 IO 流:字节流、字符流与序列化流详解(含完整代码示例)
  • 【大模型推理】Qwen2.5模型硬件要求与4090Ti多并发推理方案
  • Node 中进程与子进程的区别及使用场景
  • 【C++进阶系列】:万字详解红黑树(附模拟实现的源码)
  • 以供应链思维为钥,启数字化转型之门——读《供应链思维》有感
  • 体验访答浏览器
  • Zynq开发实践(FPGA之spi实现)
  • 2025年度总结
  • Redis 哨兵模式详解:实现高可用的自动故障转移方案
  • 电动汽车充电系统(EVCS)的入侵检测
  • 自定义事件发布器
  • 零基础学AI大模型之从0到1调用大模型API
  • vue3:调用接口的时候怎么只传递一个数组进去,得到一个key-value数据
  • Transformer 训不动:注意力 Mask 用反 / 广播错位
  • Prometheus部署监控实战
  • vue3引入海康监控视频组件并实现非分屏需求一个页面同时预览多个监控视频(2)
  • AGV 智能车驱动仓储效率提升:应用场景,智慧物流自动化实践指南
  • 【全栈实战】Elasticsearch 8.15.2 高可用集群部署与AI搜索全特性指南
  • Django REST Framework 构建安卓应用后端API:从开发到部署的完整实战指南
  • neo4j数据库创建范例(SQL文)
  • [rStar] docs | 求解协调器
  • WPF迁移avalonia之触发器
  • 【WPF+Prism】日常开发问题总结
  • 差异基因分析实战:手把手教你用R语言找到关键基因