스탠포드 대학교에서 개발한 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의 협업 강화 버전으로, 인간과 AI의 협업 지식 큐레이션을 지원합니다:
- 다양한 유형의 LLM 에이전트: Co-STORM 전문가 에이전트 및 조절자(moderator)를 포함합니다.
- 동적 마인드맵: 수집된 정보를 계층적 개념 구조로 조직화하기 위해 동적으로 업데이트되는 마인드맵을 유지합니다.
- 인간-AI 협업 프로토콜: 인간과 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 데이터셋: 2022년 2월부터 2023년 9월까지 가장 많이 편집된 페이지에 초점을 맞춘 100개의 고품질 위키백과 문서 모음입니다.
WildSeek 데이터셋: 복잡한 정보 검색 작업에서 사용자의 관심사를 연구하는 데 사용되며, 각 데이터 포인트는 주제와 사용자가 심층 검색을 수행하는 목표를 포함합니다.
평가 및 피드백
자동 평가 결과
STORM은 LM 평가 및 인간이 작성한 문서와의 비교 지표를 포함한 모든 자동 지표에서 강력한 검색 증강 생성(RAG) 기준선보다 우수한 성능을 보였습니다.
전문가 평가
경험이 풍부한 위키백과 편집자들과의 인간 평가에서 모든 참가자는 시스템이 사전 작성 단계에 도움이 된다는 데 동의했습니다. 개요 기반 검색 증강 기준선이 생성한 문서와 비교했을 때, 더 많은 STORM 문서가 체계적이고(절대 25% 증가) 광범위한 내용을 다루는 것으로(10% 증가) 평가되었습니다.
적용 시나리오
적용 사용자 그룹
- 학생: 인용이 포함된 연구 논문 및 보고서 작성
- 연구원: 종합적인 문헌 검토 자료 편찬
- 콘텐츠 제작자: 구조화되고 심층적인 문서 생성
- 위키백과 편집자: 사전 작성 단계의 보조 도구
사용 제한
시스템이 바로 게시할 수 있는 문서를 생성할 수는 없지만(일반적으로 많은 편집이 필요함), 경험이 풍부한 위키백과 편집자들은 사전 작성 단계에서 유용하다고 평가했습니다.
프로젝트 발전
최신 진행 상황
- 2025년 1월: 언어 모델 및 임베딩 모델을 위한 litellm 통합 추가
- 2024년 9월: Co-STORM 코드베이스가 출시되어 knowledge-storm python 패키지 v1.0.0에 통합
- 2024년 7월:
pip install knowledge-storm
을 통해 설치 가능
미래 방향
팀은 다음을 적극적으로 개발 중입니다:
- 인간-AI 상호작용 기능: 사용자가 지식 큐레이션 과정에 참여할 수 있도록 지원
- 정보 추상화: 위키백과 스타일 보고서를 넘어선 표현 형식을 지원하기 위한 큐레이션 정보의 추상화 개발
오픈 소스 기여
이 프로젝트는 완전히 오픈 소스이며, 커뮤니티의 기여를 환영합니다. 특히 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 보조 지식 큐레이션 분야의 중요한 돌파구를 나타내며, 자동화된 연구 및 작성을 위한 강력한 도구와 방법을 제공합니다.