今天分享的是由中科大和上海人工智能实验室发表的一篇关于MindSearch的技术报告: MindSearch 思·索: Mimicking Human Minds Elicits Deep AI Searcher 文章链接: https://arxiv.org/pdf/2407.20183 代码链接: https://github.com/InternLM/MindSearch 论文摘要 复杂的请求往往不能被搜索引擎一次准确而完整地检索到; 对应的待整合信息散布在多个网页上,并且存在大量的噪声; 大量内容较长的网页可能很快超过LLMS的最大上下文长度; 为了解决以上三个问题,作者参考了人类检索和整合的工作流程设计了MindSearch。 通过基于LLM的WebPlanner和WebSearcher组成的多Agent框架。WebPlanner将多轮检索路径建模为一个动态的图构建过程:它将用户查询分解为原子子问题作为图中的节点,并基于WebSearcher的搜索结果逐步扩展图。WebSearcher负责每个子问题,通过搜索引擎执行分层信息检索,并为WebPlanner收集有价值的信息。 MindSearch的多智能体设计使整个框架能够在3分钟内从300多个网页中并行查找和整合信息,这相当于人类3个小时的工作量。 此外,基于InternLM2.5-7B的MindSearch的响应比ChatGPT-Web(由GPT-4o)和Perplexity.ai的表现更好,这代表着基于开源模型的MindSearch已经可以为专有的AI搜索引擎提供具有竞争力的解决方案。 WebPlanner WebPlanner作为一个规划者,负责生成推理流程。然而,仅仅提示LLM计划整个工作流程并不足以生成准确的查询计划。具体来说,当前的LLM难以分解复杂的问题并理解它们的拓扑关系,从而导致粗粒度的搜索查询。 为了提高LLM解决复杂问题的能力,将问题解决过程建模为有向无环图(DAG)。给定用户问题 ,解决方案轨迹被表示为 ,其中 是搜索节点 的集合,每个节点表示独立的web搜索,包括开始节点(初始问题)和结束节点(最终答案)。 表示指示节点之间的推理拓扑关系(搜索内容)的有向边。这种DAG形式为LLM提供了更正式和直观的表示。 如图所示,WebPlanner将搜索流程通过预设的python函数可视化为图结构,不断地根据搜索结果添加新的搜索节点和边直到最后添加了结束节点为止。其中每轮的搜索节点都是可以并行检索的,通过这种并行的方式提高了整体的检索速度。
WebSearcher WebSearcher充当一个具有Internet访问权限的高级RAG代理,根据搜索结果总结有价值的信息。然而,LLM只能处理有限上下文长度的信息,但Web搜索的结果很有可能超过这个上限。 为了解决这个问题,作者采用了一种直接的从粗到精的选择策略。首先,LLM基于来自WebPlanner的分配的问题生成若干类似的查询,以拓宽搜索内容,从而提高相关信息的召回率。然后,通过各种搜索API(如Google、Bing和DuckDuckGo)执行这些查询,这些API将返回关键内容,包括Web URL、标题和摘要。 下一步会根据这些信息对网页进行合并,并提示LLM选择最有价值的页面进行详细阅读。最后将所选Web URL的完整内容添加到LLM的输入。在阅读这些结果之后,LLM基于搜索结果来生成回答原始问题的响应。 这种层次化的检索方法显著降低了浏览海量网页的难度,并允许高效地提取具有深度细节的高度相关的信息。检索流程如图所示。 另外,为了避免每个Searcher丢失之前的上下文信息和用户的初始问题,它们会收到根节点和父节点的结果。
总结 MindSearch为复杂的信息搜索和与搜索引擎的集成提供了简单的多Agent解决方案。这样的范式也自然地支持不同Agent之间的长上下文管理,这提高了框架的整体效率,特别是在需要模型快速读取大量网页的情况下。 由于WebPlanner将搜索任务分散到单独的搜索代理中,并且只依赖于WebSearcher的搜索结果,因此WebPlanner可以纯粹专注于对用户问题的分解和分析,而不会被过长的Web搜索结果所分散。 同时,每个WebSearcher只需要搜索其任务子查询的内容,而不会分散对其他内容的注意力。由于明确的角色分配,MindSearch大大减少了整个过程中的上下文计算。 编者简介 李剑楠: 华东师范大学硕士研究生,研究方向为向量检索。作为核心研发工程师参与向量数据库、RAG等产品的研发。代表公司参加DTCC、WAIM等会议论坛进行主题分享。
👆 关注 AI 搜索引擎 ,获取更多专业技术分 享 ~