斯坦福大学开发的AI知识策展系统,能够自动研究主题并生成带引用的维基百科风格长篇报告

MITPythonstormstanford-oval 27.4k Last Updated: June 27, 2025

STORM项目详细介绍

项目概述

STORM(Synthesis of Topic Outlines through Retrieval and Multi-perspective Question Asking)是由斯坦福大学开放虚拟助手实验室(Stanford Open Virtual Assistant Lab, OVAL)开发的一个开源AI知识策展系统。该系统能够基于互联网搜索,从零开始编写类似维基百科的文章,并自动生成完整的引用文献。

截至目前,已有超过7万人试用了STORM的在线研究预览版,这表明了该系统的实用价值和广泛关注度。

核心功能特点

1. 双阶段文章生成流程

STORM将长篇文章生成分解为两个关键阶段:

  • 预写作阶段:系统进行基于互联网的研究,收集参考资料并生成文章大纲
  • 写作阶段:系统使用大纲和参考资料生成完整的带引用的文章

2. 多视角问答机制

STORM采用两种策略来提高问题的深度和广度:

  • 视角导向问答:通过调研相似主题的现有文章发现不同视角,用于控制问答过程
  • 模拟对话:模拟维基百科编辑者与主题专家之间的对话,基于互联网资源进行讨论

3. Co-STORM协作增强版

Co-STORM是STORM的协作增强版本,支持人机协作的知识策展:

  • 多类型LLM智能体:包括Co-STORM专家智能体和调节者
  • 动态思维导图:维护动态更新的思维导图,组织收集的信息为层次化概念结构
  • 人机协作协议:实现转换管理策略,支持人类与AI系统的顺畅协作

技术架构

支持的组件

语言模型

  • 支持litellm支持的所有语言模型
  • 可配置不同模型用于不同任务组件

检索模块: 支持多种搜索引擎和检索器:YouRM、BingSearch、VectorRM、SerperRM、BraveRM、SearXNG、DuckDuckGoSearchRM、TavilySearchRM、GoogleSearch和AzureAISearch

嵌入模型

  • 支持litellm支持的所有嵌入模型

模块化设计

STORM采用高度模块化的设计,基于dspy框架实现,包含四个主要模块:

  1. 知识策展模块:收集关于给定主题的广泛信息
  2. 大纲生成模块:通过生成层次化大纲来组织收集的信息
  3. 文章生成模块:基于大纲和收集的信息填充生成文章
  4. 文章润色模块:优化和增强写作文章的呈现效果

安装与使用

快速安装

# 使用pip安装
pip install knowledge-storm

# 或从源码安装
git clone https://github.com/stanford-oval/storm.git
cd storm
conda create -n storm python=3.11
conda activate storm
pip install -r requirements.txt

基础使用示例

import os
from knowledge_storm import STORMWikiRunnerArguments, STORMWikiRunner, STORMWikiLMConfigs
from knowledge_storm.lm import LitellmModel
from knowledge_storm.rm import YouRM

# 配置语言模型
lm_configs = STORMWikiLMConfigs()
openai_kwargs = {
    'api_key': os.getenv("OPENAI_API_KEY"),
    'temperature': 1.0,
    'top_p': 0.9,
}

# 设置不同组件的模型
gpt_35 = LitellmModel(model='gpt-3.5-turbo', max_tokens=500, **openai_kwargs)
gpt_4 = LitellmModel(model='gpt-4o', max_tokens=3000, **openai_kwargs)

lm_configs.set_conv_simulator_lm(gpt_35)
lm_configs.set_question_asker_lm(gpt_35)
lm_configs.set_outline_gen_lm(gpt_4)
lm_configs.set_article_gen_lm(gpt_4)
lm_configs.set_article_polish_lm(gpt_4)

# 配置检索模块
engine_args = STORMWikiRunnerArguments(...)
rm = YouRM(ydc_api_key=os.getenv('YDC_API_KEY'), k=engine_args.search_top_k)
runner = STORMWikiRunner(engine_args, lm_configs, rm)

# 运行生成
topic = input('Topic: ')
runner.run(
    topic=topic,
    do_research=True,
    do_generate_outline=True,
    do_generate_article=True,
    do_polish_article=True,
)

Co-STORM使用示例

from knowledge_storm.collaborative_storm.engine import CollaborativeStormLMConfigs, RunnerArgument, CoStormRunner

# 配置Co-STORM
lm_config = CollaborativeStormLMConfigs()
# ... 配置各种语言模型 ...

topic = input('Topic: ')
runner_argument = RunnerArgument(topic=topic, ...)
costorm_runner = CoStormRunner(lm_config=lm_config, ...)

# 热启动系统
costorm_runner.warm_start()

# 进行协作对话
conv_turn = costorm_runner.step()
# 或注入用户话语
costorm_runner.step(user_utterance="YOUR UTTERANCE HERE")

# 生成报告
costorm_runner.knowledge_base.reorganize()
article = costorm_runner.generate_report()

学术研究与数据集

研究论文

STORM的研究成果发表在NAACL 2024会议上,论文标题为《Assisting in Writing Wikipedia-like Articles From Scratch with Large Language Models》。Co-STORM的论文被EMNLP 2024主会议接收。

数据集贡献

FreshWiki数据集: 包含100篇高质量维基百科文章的集合,专注于2022年2月至2023年9月期间编辑最多的页面。

WildSeek数据集: 用于研究用户在复杂信息搜索任务中的兴趣,每个数据点包含一个主题和用户进行深度搜索的目标。

评估与反馈

自动评估结果

STORM在所有自动指标上都优于强大的检索增强生成基线,包括LM评估和与人类撰写文章的比较指标。

专家评估

在与经验丰富的维基百科编辑者进行的人类评估中,所有参与者都同意该系统对他们的预写作阶段有帮助。与基于大纲的检索增强基线生成的文章相比,更多的STORM文章被认为是有组织的(绝对增加25%)和覆盖面广的(增加10%)。

应用场景

适用用户群体

  • 学生:创建带引用的研究论文和报告
  • 研究人员:编制综合性文献综述
  • 内容创作者:生成结构化、有深度的文章
  • 维基百科编辑者:预写作阶段的辅助工具

使用限制

虽然系统无法产生发布就绪的文章(通常需要大量编辑),但经验丰富的维基百科编辑者发现它在预写作阶段很有帮助。

项目发展

最新进展

  • 2025年1月:添加了litellm集成,用于语言模型和嵌入模型
  • 2024年9月:Co-STORM代码库发布并集成到knowledge-storm python包v1.0.0中
  • 2024年7月:可通过pip install knowledge-storm安装

未来方向

团队正在积极开发:

  • 人机交互功能:支持用户参与知识策展过程
  • 信息抽象:开发策展信息的抽象,以支持超越维基百科风格报告的呈现格式

开源贡献

该项目完全开源,欢迎社区贡献。特别欢迎集成更多搜索引擎/检索器到knowledge_storm/rm.py的PR。

项目地址:https://github.com/stanford-oval/storm 在线演示:https://storm.genie.stanford.edu/ 项目网站:https://storm-project.stanford.edu/

引用信息

如果在研究中使用STORM,请引用相关论文:

@inproceedings{shao-etal-2024-assisting,
    title = "Assisting in Writing {W}ikipedia-like Articles From Scratch with Large Language Models",
    author = "Shao, Yijia and Jiang, Yucheng and Kanell, Theodore and Xu, Peter and Khattab, Omar and Lam, Monica",
    booktitle = "Proceedings of the 2024 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies (Volume 1: Long Papers)",
    month = jun,
    year = "2024",
    address = "Mexico City, Mexico",
    publisher = "Association for Computational Linguistics",
    pages = "6252--6278",
}

STORM项目代表了AI辅助知识策展领域的重要突破,为自动化研究和写作提供了强大的工具和方法。

Star History Chart