Ein von der Stanford University entwickeltes KI-Wissenskuratierungssystem, das Themen automatisch recherchiert und lange, Wikipedia-ähnliche Berichte mit Zitaten erstellt.

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

Detaillierte Vorstellung des STORM-Projekts

Projektübersicht

STORM (Synthesis of Topic Outlines through Retrieval and Multi-perspective Question Asking) ist ein Open-Source-KI-Wissenskuratierungssystem, das vom Stanford Open Virtual Assistant Lab (OVAL) der Stanford University entwickelt wurde. Das System ist in der Lage, auf Basis von Internetrecherchen Wikipedia-ähnliche Artikel von Grund auf zu verfassen und automatisch vollständige Zitate zu generieren.

Bislang haben über 70.000 Personen die Online-Forschungsvorschau von STORM ausprobiert, was den praktischen Wert und das breite Interesse an diesem System unterstreicht.

Kernfunktionen

1. Zweistufiger Artikelerstellungsprozess

STORM unterteilt die Erstellung langer Artikel in zwei entscheidende Phasen:

  • Vor-Schreibphase: Das System führt Internetrecherchen durch, sammelt Referenzen und erstellt eine Artikelgliederung.
  • Schreibphase: Das System verwendet die Gliederung und die Referenzen, um den vollständigen Artikel mit Zitaten zu generieren.

2. Mehrperspektivische Fragestellung

STORM verwendet zwei Strategien, um die Tiefe und Breite der Fragen zu erhöhen:

  • Perspektivorientierte Fragestellung: Durch die Untersuchung bestehender Artikel zu ähnlichen Themen werden verschiedene Perspektiven identifiziert, die zur Steuerung des Frageprozesses verwendet werden.
  • Simulierter Dialog: Es wird ein Dialog zwischen Wikipedia-Redakteuren und Fachexperten simuliert, der auf Internetressourcen basiert.

3. Co-STORM: Kollaborativ erweiterte Version

Co-STORM ist die kollaborativ erweiterte Version von STORM, die die Mensch-KI-Kollaboration bei der Wissenskuratierung unterstützt:

  • Mehrere Arten von LLM-Agenten: Dazu gehören Co-STORM-Expertenagenten und Moderatoren.
  • Dynamische Mindmap: Eine dynamisch aktualisierte Mindmap wird gepflegt, um die gesammelten Informationen in einer hierarchischen Konzeptstruktur zu organisieren.
  • Mensch-KI-Kollaborationsprotokoll: Implementiert Strategien zur Übergangsverwaltung, um eine reibungslose Zusammenarbeit zwischen Menschen und KI-Systemen zu ermöglichen.

Technische Architektur

Unterstützte Komponenten

Sprachmodelle:

  • Unterstützt alle von litellm unterstützten Sprachmodelle.
  • Verschiedene Modelle können für unterschiedliche Aufgabenkomponenten konfiguriert werden.

Retrieval-Modul: Unterstützt verschiedene Suchmaschinen und Retriever: YouRM, BingSearch, VectorRM, SerperRM, BraveRM, SearXNG, DuckDuckGoSearchRM, TavilySearchRM, GoogleSearch und AzureAISearch.

Einbettungsmodelle:

  • Unterstützt alle von litellm unterstützten Einbettungsmodelle.

Modulares Design

STORM verfolgt ein hochgradig modulares Design, das auf dem dspy-Framework basiert und vier Hauptmodule umfasst:

  1. Wissenskuratierungsmodul: Sammelt umfassende Informationen zu einem bestimmten Thema.
  2. Gliederungserstellungsmodul: Organisiert die gesammelten Informationen durch die Erstellung einer hierarchischen Gliederung.
  3. Artikelerstellungsmodul: Füllt den Artikel basierend auf der Gliederung und den gesammelten Informationen.
  4. Artikelverfeinerungsmodul: Optimiert und verbessert die Präsentation des geschriebenen Artikels.

Installation und Nutzung

Schnelle Installation

# Installation mit pip
pip install knowledge-storm

# Oder Installation aus dem Quellcode
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

Grundlegendes Anwendungsbeispiel

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

# Sprachmodelle konfigurieren
lm_configs = STORMWikiLMConfigs()
openai_kwargs = {
    'api_key': os.getenv("OPENAI_API_KEY"),
    'temperature': 1.0,
    'top_p': 0.9,
}

# Modelle für verschiedene Komponenten einstellen
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)

# Retrieval-Modul konfigurieren
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)

# Generierung ausführen
topic = input('Thema: ')
runner.run(
    topic=topic,
    do_research=True,
    do_generate_outline=True,
    do_generate_article=True,
    do_polish_article=True,
)

Co-STORM Anwendungsbeispiel

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

# Co-STORM konfigurieren
lm_config = CollaborativeStormLMConfigs()
# ... verschiedene Sprachmodelle konfigurieren ...

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

# System warmstarten
costorm_runner.warm_start()

# Kollaborativen Dialog führen
conv_turn = costorm_runner.step()
# Oder Benutzereingabe injizieren
costorm_runner.step(user_utterance="IHRE EINGABE HIER")

# Bericht generieren
costorm_runner.knowledge_base.reorganize()
article = costorm_runner.generate_report()

Akademische Forschung und Datensätze

Forschungsarbeiten

Die Forschungsergebnisse von STORM wurden auf der NAACL 2024 Konferenz veröffentlicht, unter dem Titel „Assisting in Writing Wikipedia-like Articles From Scratch with Large Language Models“. Die Arbeit zu Co-STORM wurde von der EMNLP 2024 Hauptkonferenz angenommen.

Datensatzbeiträge

FreshWiki-Datensatz: Eine Sammlung von 100 hochwertigen Wikipedia-Artikeln, die sich auf die am häufigsten bearbeiteten Seiten zwischen Februar 2022 und September 2023 konzentrieren.

WildSeek-Datensatz: Wird verwendet, um das Nutzerinteresse bei komplexen Informationssuchaufgaben zu untersuchen. Jeder Datenpunkt enthält ein Thema und die Ziele des Nutzers für eine tiefgehende Suche.

Evaluierung und Feedback

Automatische Evaluierungsergebnisse

STORM übertrifft bei allen automatischen Metriken starke Retrieval-Augmented-Generation-Baselines, einschließlich LM-Evaluierung und Vergleichsmetriken mit von Menschen verfassten Artikeln.

Expertenbewertung

Bei einer menschlichen Bewertung mit erfahrenen Wikipedia-Redakteuren stimmten alle Teilnehmer zu, dass das System für ihre Vor-Schreibphase hilfreich ist. Im Vergleich zu Artikeln, die von gliederungsbasierten Retrieval-Augmented-Baselines generiert wurden, wurden mehr STORM-Artikel als gut organisiert (absolute Steigerung von 25 %) und umfassend (Steigerung von 10 %) bewertet.

Anwendungsszenarien

Anwendbare Nutzergruppen

  • Studierende: Erstellung von Forschungsarbeiten und Berichten mit Zitaten.
  • Forschende: Zusammenstellung umfassender Literaturübersichten.
  • Content-Ersteller: Generierung strukturierter, tiefgehender Artikel.
  • Wikipedia-Redakteure: Unterstützung in der Vor-Schreibphase.

Nutzungseinschränkungen

Obwohl das System keine veröffentlichungsreifen Artikel produzieren kann (die in der Regel umfangreiche Bearbeitungen erfordern), fanden erfahrene Wikipedia-Redakteure es in der Vor-Schreibphase hilfreich.

Projektentwicklung

Neueste Fortschritte

  • Januar 2025: litellm-Integration für Sprachmodelle und Einbettungsmodelle hinzugefügt.
  • September 2024: Co-STORM-Codebasis veröffentlicht und in das knowledge-storm Python-Paket v1.0.0 integriert.
  • Juli 2024: Über pip install knowledge-storm installierbar.

Zukünftige Richtungen

Das Team entwickelt aktiv weiter:

  • Mensch-Computer-Interaktionsfunktionen: Unterstützung der Benutzerbeteiligung am Wissenskuratierungsprozess.
  • Informationsabstraktion: Entwicklung von Abstraktionen für kuratierte Informationen, um Präsentationsformate jenseits von Wikipedia-ähnlichen Berichten zu unterstützen.

Open-Source-Beitrag

Das Projekt ist vollständig Open Source, und Beiträge der Community sind willkommen. Insbesondere PRs zur Integration weiterer Suchmaschinen/Retriever in knowledge_storm/rm.py sind sehr willkommen.

Projektadresse: https://github.com/stanford-oval/storm Online-Demo: https://storm.genie.stanford.edu/ Projekt-Website: https://storm-project.stanford.edu/

Zitierinformationen

Wenn Sie STORM in Ihrer Forschung verwenden, zitieren Sie bitte die entsprechenden Arbeiten:

@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",
}

Das STORM-Projekt stellt einen bedeutenden Durchbruch im Bereich der KI-gestützten Wissenskuratierung dar und bietet ein leistungsstarkes Werkzeug und Methoden für die automatisierte Forschung und das Schreiben.

Star History Chart