スタンフォード大学が開発したAI知識キュレーションシステムで、テーマを自動的に調査し、引用付きのウィキペディアスタイルの長編レポートを生成できます。
STORMプロジェクト詳細紹介
プロジェクト概要
STORM(Synthesis of Topic Outlines through Retrieval and Multi-perspective Question Asking)は、スタンフォード大学オープン仮想アシスタントラボ(Stanford Open Virtual Assistant Lab, OVAL)によって開発されたオープンソースのAI知識キュレーションシステムです。このシステムは、インターネット検索に基づいて、ゼロからWikipediaのような記事を作成し、完全な引用文献を自動生成することができます。
これまでに7万人以上がSTORMのオンライン研究プレビュー版を試用しており、本システムの実用的な価値と幅広い関心が示されています。
主要機能と特徴
1. 2段階の記事生成プロセス
STORMは、長文記事の生成を2つの重要な段階に分解します。
- プレライティング段階: システムがインターネットベースの調査を行い、参考文献を収集し、記事のアウトラインを生成します。
- ライティング段階: システムがアウトラインと参考文献を使用して、引用付きの完全な記事を生成します。
2. 多角的な視点からの質問メカニズム
STORMは、質問の深さと広さを向上させるために2つの戦略を採用しています。
- 視点指向の質問: 類似テーマの既存記事を調査することで異なる視点を発見し、質問プロセスを制御するために使用します。
- 対話シミュレーション: Wikipediaの編集者とテーマの専門家との間の対話をシミュレートし、インターネットリソースに基づいて議論を行います。
3. Co-STORM協調強化版
Co-STORMはSTORMの協調強化バージョンであり、人間とAIの協調による知識キュレーションをサポートします。
- 複数タイプのLLMエージェント: Co-STORM専門家エージェントとモデレーターを含みます。
- 動的マインドマップ: 収集された情報を階層的な概念構造に整理するために、動的に更新されるマインドマップを維持します。
- 人間とAIの協調プロトコル: 変換管理戦略を実装し、人間とAIシステムの円滑な協調をサポートします。
技術アーキテクチャ
サポートされるコンポーネント
言語モデル:
- litellmがサポートするすべての言語モデルをサポートします。
- 異なるタスクコンポーネントに異なるモデルを構成できます。
検索モジュール: YouRM、BingSearch、VectorRM、SerperRM、BraveRM、SearXNG、DuckDuckGoSearchRM、TavilySearchRM、GoogleSearch、AzureAISearchなど、複数の検索エンジンと検索器をサポートします。
埋め込みモデル:
- litellmがサポートするすべての埋め込みモデルをサポートします。
モジュール設計
STORMは、dspyフレームワークに基づいて高度にモジュール化された設計を採用しており、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データセット: 2022年2月から2023年9月にかけて最も編集されたページに焦点を当てた、100本の高品質なWikipedia記事のコレクションです。
WildSeekデータセット: 複雑な情報検索タスクにおけるユーザーの関心を研究するために使用され、各データポイントにはテーマとユーザーが深い検索を行う目標が含まれています。
評価とフィードバック
自動評価結果
STORMは、LM評価や人間が書いた記事との比較指標を含む、すべての自動指標において強力な検索拡張生成ベースラインを上回る性能を示しました。
専門家評価
経験豊富なWikipedia編集者との人間による評価では、すべての参加者がシステムがプレライティング段階で役立つことに同意しました。アウトラインベースの検索拡張ベースラインによって生成された記事と比較して、より多くのSTORM記事が「整理されている」(絶対値で25%増加)および「広範な内容をカバーしている」(10%増加)と評価されました。
応用シナリオ
適用ユーザー層
- 学生: 引用付きの研究論文やレポートの作成
- 研究者: 包括的な文献レビューの作成
- コンテンツクリエイター: 構造化された深みのある記事の生成
- Wikipedia編集者: プレライティング段階の補助ツール
使用上の制限
システムは公開可能な状態の記事を生成することはできませんが(通常、大量の編集が必要)、経験豊富なWikipedia編集者はプレライティング段階で非常に役立つと感じています。
プロジェクトの進展
最新の進捗
- 2025年1月: 言語モデルと埋め込みモデルのためのlitellm統合を追加
- 2024年9月: Co-STORMコードベースがリリースされ、knowledge-storm pythonパッケージv1.0.0に統合
- 2024年7月:
pip install knowledge-storm
でインストール可能に
今後の展望
チームは積極的に以下の開発を進めています。
- 人間とAIのインタラクション機能: ユーザーが知識キュレーションプロセスに参加できるようにサポート
- 情報抽象化: Wikipediaスタイルのレポートを超えた表現形式をサポートするためのキュレーション情報の抽象化を開発
オープンソースへの貢献
このプロジェクトは完全にオープンソースであり、コミュニティからの貢献を歓迎します。特に、knowledge_storm/rm.py
へのより多くの検索エンジン/検索器の統合に関するプルリクエストを歓迎します。
プロジェクトアドレス: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支援知識キュレーションの分野における重要なブレークスルーを代表し、自動化された研究と執筆のための強力なツールと方法を提供します。