斯坦福大学开发的AI知识策展系统,能够自动研究主题并生成带引用的维基百科风格长篇报告
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框架实现,包含四个主要模块:
- 知识策展模块:收集关于给定主题的广泛信息
- 大纲生成模块:通过生成层次化大纲来组织收集的信息
- 文章生成模块:基于大纲和收集的信息填充生成文章
- 文章润色模块:优化和增强写作文章的呈现效果
安装与使用
快速安装
# 使用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辅助知识策展领域的重要突破,为自动化研究和写作提供了强大的工具和方法。