简介
最近发现到了 MindSearch 这个新兴项目。根据官方的介绍,MindSearch 是一个开源的AI搜索引擎框架。截至 2024 年 9 月 19 日,它仍处于初创阶段,仅具备 Demo 级别的功能,但其背后的技术和设计理念却引起了我的兴趣,它试图通过模拟人类的思维过程,从而提供更为深入和精准的信息检索体验。但是目前网络极少关于这个项目部署和介绍的文档,这也算变相推广介绍了。
PS: 项目目前迭代非常快,因此本文以参考为主
原理
MindSearch 是一款开源的AI搜索引擎,旨在通过模拟人类思维过程来提供深度的信息检索能力。其技术原理主要基于一个多智能体框架(Multi-Agent),结合了大语言模型和复杂的搜索策略,以实现高效的信息获取和处理。受限于项目的快速发展,这里主要以介绍逻辑而不是具体的代码实现(同时也是基于项目论文进行总结)
参考论文:《MindSearch: Mimicking Human Minds Elicits Deep AI Searcher》
核心组件(逻辑)
WebPlanner
WebPlanner 是 MindSearch 中的高级规划器,负责将用户的查询分解为多个子问题。其工作流程包括:
- 查询分解:当用户输入问题时,WebPlanner 会分析该问题,并将其拆分为多个可以独立解决的子问题。这种分解使得复杂问题能够被逐步处理。
- 动态图构建:WebPlanner 利用有向无环图(DAG)来动态构建问题解决的逻辑图。每个子问题作为图中的节点,随着信息的获取,图会不断扩展和细化。这种方法模拟了人类在解决问题时的思维过程,使得搜索结果更加符合逻辑。
构建完成的 DAG 包含了多个节点和边,其中节点表示独立的搜索任务,边表示节点之间的推理关系。每个节点代表一个独立的搜索任务,包括一个 START 节点(用户的原始问题)和一个 END 节点(最终的回答)
WebSearcher
WebSearcher 是负责实际信息检索的组件,其功能包括:
- 并行搜索:对于每个从 WebPlanner 接收到的子问题,WebSearcher 会进行并行搜索。这意味着多个子问题可以同时被处理,从而显著提高信息检索的速度。
- 层次化信息检索:WebSearcher 采用从粗到细的检索策略,首先广泛收集相关信息,然后针对最有价值的页面进行深入分析。这种策略确保了回答的全面性和准确性。
- 信息提取:在获取到相关网页后,WebSearcher 会提取与子问题相关的关键信息,并将其汇总回WebPlanner,以便生成最终答案。
相较于市面上目前的商业相似品,例如 Perplexity.ai 或者 GPT Research,它更多强调去中心化和用户控制,同时并不是简单的将索引到的网页当成上下文传入到 LLM 进行辅助检索,缺点也正是因为每个步骤都会逐步分解,导致不具备立刻即时响应的能力,以及如果使用商业大模型会非常消耗 Token(如果是 GPT-4 恐怕分分钟烧光余额),一些简单的问题就不适应使用这种方式进行检索了
部署
推荐使用 2C2G 的机器进行部署,磁盘推荐大于 20G 以留出空间给 Python 依赖,同时出于搜索速度也推荐使用境外服务器进行部署,这里优先选择直接安装,或者自己手动封装成镜像,整个项目分为前后端分离
依赖安装
后端智能体框架的安装
$ git clone https://github.com/InternLM/MindSearch.git
$ cd MindSearch
$ sudo apt install python3-venv
$ python3 -m venv venv
$ source venv/bin/activate
$ echo "class_registry" >> requirements.txt # 如果后续修复了则可以去掉该条命令
$ pip install -r requirements.txt