兼看两个科研助手项目实现思路
文章转自公众号老刘说NLP
自从Openai O1推出之后,就有了一个新的名词,LRMs(大型推理模型),与传统LLMs相对。
背景是,随着大型语言模型(LLM)的兴起,其规划能力备受关注。OpenAI 的 o1(Strawberry)模型旨在突破自回归 LLM 的局限,成为新型的大型推理模型(LRM)。
那么,其到底是个啥东西,在规划能力上的主要区别是什么?我们先开看看。
这个可以看看工作《LLMs Still Can't Plan; Can LRMs? A Preliminary Evaluation of OpenAI's o1 on PlanBench》,https://arxiv.org/abs/2409.13373,大致的结论如下:
LRMs (如OpenAl的o1模型)与传统LLMs在规划能力上的主要区别在于其架构和训练方式。
LRMs结合了底层的大型语言模型和一个通过强化学习预训练的系统,该系统负责指导推理痕迹的创建、管理和最终选择。
LRMs的训练过程中包含一个额外的强化学习预训练阶段,可能用于从大量合成数据中学习不同Chain-of-Thought (CoT) 的q值。
此外, LRMs采用了一种新的自适应扩展推理过程,可能在选择特定CoT之前通过某种形式的展开进一步细化学到的q值。这些机制使得LRMs在处理复杂的规划任务时表现出更好的性能,但同时也增加了计算成本和复杂性。
另一个,我们也来看看大模型用于科研的两个实现项目Llama Researcher及GPT-Researcher,Llama Researcher,https://github.com/rsrohan99/Llama-Researcher在线研究助手,利用Llamaindex工作流和Tavily API,进行特定主题的在线研究,灵感来源于GPT-Researcher,https://github.com/assafelovic/gpt-researcher/blob/master/README-zh_CN.md,我们可以看看其实现思路。
一、GPT-Researcher实现思路
GPT-Researcher是一个智能体代理,专为各种任务的综合在线研究而设计。
其提出的前提在于,因为人工研究任务形成客观结论可能需要时间和经历,有时甚至需要数周才能找到正确的资源和信息。 目前的LLM是根据历史和过时的信息进行训练的,存在严重的幻觉风险,因此几乎无法胜任研究任务。
网络搜索的解决方案(例如 ChatGPT + Web 插件)仅考虑有限的资源和内容,在某些情况下会导致肤浅的结论或不客观的答案。
只使用部分资源可能会在确定研究问题或任务的正确结论时产生偏差。
因此,GPT-Researcher主要思想是运行“计划者”和“执行”代理,而计划者生成问题进行研究,“执行”代理根据每个生成的研究问题寻找最相关的信息。最后,“计划者”过滤和聚合所有相关信息并创建研究报告。
代理同时利用gpt-40-mini和gpt-4o(128K 上下文)来完成一项研究任务。我们仅在必要时使用这两种方法对成本进行优化。研究任务平均耗时约3分钟,成本约为~0.1美元。
最上方是一个任务(Task),任务会传给上方的Research Questions Generator(研究问题生成器),生成器向下生成query #1, query #2...query n多个查询问题,再将这些查询问题分别传给下方的Report Agent报告代理,报告代理将整合所有查询问题得到最终报告。
具体的流程可以拆解为:
- step1,根据研究搜索或任务创建特定领域的代理。
- step2, 生成一组研究问题,这些问题共同形成答案对任何给定任务的客观意见。
- step3, 针对每个研究问题,触发一个爬虫代理,从在线资源中搜索与给定任务相关的信息。
- step4, 对于每一个抓取的资源,根据相关信息进行汇总,并跟踪其来源。
- step5, 最后,对所有汇总的资料来源进行过滤和汇总,并生成最终研究报告。
二、Llama-Researcher实现思路
我们可以从下图中找到Llama-Researcher的实现步骤,首先,用户输入一个研究主题,然后系统会将这个主题拆分成若干子话题。接着,系统通过LlamaIndex从互联网上获取与这些子话题相关的内容,并进行清洗和分块处理。
之后,内容会被送入到LLM(Large Language Model)中进行处理,生成相似度后由SimilarityPostProcessor进行进一步的处理。最后,根据用户的需要,系统会过滤出与每个子话题相关的节点,并将它们组合在一起形成完整的上下文信息,用于生成报告。
具体地,可以拆分成如下几个步骤:
- 用户输入一个研究主题
这是整个过程的起点,用户需要明确自己想要研究的主题或领域。 2. 系统将该主题拆分成若干个子话题
在这个步骤中,系统会对用户输入的主题进行细分,以便于后续的搜索和分析。
- LlamaResearcher使用Tavily从互联网上获取与这些子话题相关的内容
在这一阶段,系统会利用Tavily工具从互联网上搜集与各个子话题有关的信息。 4. 获取到的内容经过Clean & Chunk处理,将其分为多个片段
在这一步骤中,系统会对收集到的数据进行清理和切割,使其更容易管理和理解。
- 这些片段被送入到LlamaIndex VectorStoreIndex中进行索引
在这个过程中,系统会对分割后的数据进行索引,以便于快速查找和检索。
- 索引后的数据经过SimilarityPostProcessor处理,得到相似度结果
在这个阶段,系统会对索引后的数据进行相似性计算,以确定哪些信息与用户的研究主题最为接近。
- 根据相似度结果,系统筛选出与每个子话题最相关的节点
在此步骤中,系统会根据之前计算出的相似度值,选择与每个子话题最相关的部分作为最终的结果。
- 最终,所有筛选出来的节点被整合成一份完整的上下文信息,用于生成报告
在最后一个步骤中,系统会将所有筛选出来的信息整合起来,形成一份完整的研究报告,供用户参考和使用。
参考文献
1、Llama Researcher,https://github.com/rsrohan99/Llama-Researcher
2、https://github.com/assafelovic/gpt-researcher