开源大数据知识管理平台STORM

360影视 2025-01-06 08:50 3

摘要:视角引导式提问:给定输入主题,通过调查来自类似主题的现有文章来发现不同的视角,并使用它们来控制提问过程。模拟对话:模拟维基百科作者和基于互联网资源的主题专家之间的对话,使语言模型能够更新对主题的理解并提出后续问题。

今天给大家分享一个单日新增上千STAR的大数据知识管理平台。Let's go!

storm是一个以大数据算法为基础的知识管理系统,可以提供研究一个主题并生成一份包含引文的完整报告,包含通过检索和多角度提问的综合主题大纲。

storm基于互联网搜索从头开始编写类似维基百科的文章。目前已经有超过7万人参与了相关的研究,提供了丰富的测试素材。

storm的工作原理分为两个步骤:

写作前阶段:系统进行基于互联网的研究,收集参考文献并生成大纲。写作阶段:系统使用大纲和参考文献生成带引用的全文文章。

同时,storm的内核在于会自动提出好的问题。很多小伙伴可能会有疑问,那如何保障提出问题的深度和广度,storm提供了多种方式,例如:

视角引导式提问:给定输入主题,通过调查来自类似主题的现有文章来发现不同的视角,并使用它们来控制提问过程。模拟对话:模拟维基百科作者和基于互联网资源的主题专家之间的对话,使语言模型能够更新对主题的理解并提出后续问题。

基于storm的进阶版本还提出了一种协作话语协议,该协议实施了回合管理策略,以支持以下各方之间的顺利协作:

专家提问:这种类型的代理基于外部知识源生成答案和/或根据话语历史提出后续问题主持人:该代理根据检索者发现的信息生成发人深省的问题,但这些信息在之前的轮次中没有直接使用。问题生成也可以扎根。普通用户:普通用户将主动(1)观察话语以加深对主题的理解,或(2)通过注入话语来引导讨论焦点,从而积极参与对话。

storm还维护着一个动态更新的思维导图,将收集到的信息组织成一个分层的概念结构,旨在在普通用户和系统之间建立一个共享的概念空间。思维导图已被证明有助于在话语长而深入时减轻负荷。

安装代码:

gitclone https://github.com/stanford-oval/storm.gitcd stormconda create -n storm python=3.11conda activate stormpip install -r requirements.txt

当前支持的api接口

OpenAIModel, AzureOpenAIModel, ClaudeModel, VLLMClient, TGIClient, TogetherClient, OllamaClient, GoogleModel, DeepSeekModel, GroqModel as language model componentsYouRM, BingSearch, VectorRM, SerperRM, BraveRM, SearXNG, DuckDuckGoSearchRM, TavilySearchRM, GoogleSearch, and AzureAISearch as retrieval module components

搜索引擎和OpenAI模型的示例:

import osfrom knowledge_storm import STORMWikiRunnerArguments, STORMWikiRunner, STORMWikiLMConfigsfrom knowledge_storm.lm import OpenAIModelfrom knowledge_storm.rm import YouRMlm_configs = STORMWikiLMConfigsopenai_kwargs = {'api_key': os.getenv("OPENAI_API_KEY"),'temperature': 1.0,'top_p': 0.9,}# STORM is a LM system so different components can be powered by different models to reach a good balance between cost and quality.# For a good practice, choose a cheaper/faster model for `conv_simulator_lm` which is used to split queries, synthesize answers in the conversation.# Choose a more powerful model for `article_gen_lm` to generate verifiable text with citations.gpt_35 = OpenAIModel(model='gpt-3.5-turbo', max_tokens=500, **openai_kwargs)gpt_4 = OpenAIModel(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)# Check out the STORMWikiRunnerArguments class for more configurations.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)

来源:火力冲锋劲

相关推荐