首页 > 教程攻略 > ai资讯 >MindSearch:模仿人类思维的开源深度 AI 搜索引擎

MindSearch:模仿人类思维的开源深度 AI 搜索引擎

来源:互联网 时间:2026-08-22 14:02:08

TLDR

  • • MindSearch 是一种基于 LLM 的多智能体网络搜索框架,性能可媲美 Perplexity.ai Pro。

  • • 它采用 WebPlanner 和 WebSearcher 组件,通过问题分解、并行搜索和分层信息检索来模拟人类思维进行深度搜索。

  • • MindSearch 能够处理更长的上下文,提供更深入、更广泛、更准确的答案,优于 ChatGPT-Web 和 Perplexity.ai Pro。

引言:迈向更智能的网络搜索

传统的搜索引擎,就像一位忠实的图书馆管理员,尽心尽责地帮你翻遍书架、找出所有相关书籍。可一旦遇到需要多步推理和信息整合的复杂问题——比如“哪家大模型 API 最便宜?”——这位管理员就有点束手无策了。它能把一堆 API 提供商的网页摆在你面前,但要直接给出对比结论,那就超出能力范围了。

大型语言模型(LLM)的出现带来了转机。它像一位经验丰富的侦探,擅长理解复杂语义,从海量信息中抽丝剥茧。于是,把 LLM 和搜索引擎结合起来,打造更智能的 AI 搜索引擎,成了研究的热点——Perplexity.ai 这类明星产品就是例证。

不过,现有的 LLM+搜索引擎方案大多还停留在浅层应用,比如简单的检索增强生成,很难真正发挥 LLM 的潜力。这些方法就像刚入行的助手,虽然能找到些相关信息,但离专家级别的深度分析和推理还有不少距离。具体来说,它们面临三大挑战:

  • 复杂问题分解:

    面对错综复杂的“案件”,LLM 很难把一个大问题拆成多个原子级的子查询,这就限制了信息的准确性和完整性。

  • 海量信息处理:

    搜索结果就像浩瀚的资料库,如何高效筛选和整合信息,成了瓶颈。

  • 上下文长度限制:

    LLM 的输入容量有限,就像一个侦探的笔记本不能无限加页,太长的搜索结果往往会让关键信息丢失。

MindSearch 框架概述:深度搜索,智胜未来

为了攻克这些难题,这里要介绍一个全新的 AI 搜索引擎框架——

MindSearch

。它采用多智能体设计,把 LLM 的推理能力和搜索引擎的海量信息做了巧妙整合,通过模仿人类思维的深度搜索,给用户带来更优质的体验。

MindSearch 的核心组件有两个:

  • WebPlanner(网络规划师):

    像一位经验丰富的探长,负责把复杂问题拆解成原子级的子问题,构建动态搜索图,并协调多个 WebSearcher 并行搜索。

  • WebSearcher(信息检索师):

    像训练有素的警员,接受 WebPlanner 分配的任务,用搜索引擎做细粒度网络搜索,把和子问题相关的信息收集回来。

图 1

:MindSearch 框架图。它包含两个主要组件:WebPlanner 和 WebSearcher。WebPlanner 充当高级规划器,负责协调推理步骤和多个 WebSearcher。WebSearcher 进行细粒度的网络搜索,并将有价值的信息汇总回规划器,形成一个简单有效的多智能体框架。

MindSearch 的工作流程大致是这样的:

  1. 1.

    问题分解:

    用户提交问题后,WebPlanner 先分析问题,就像探长仔细阅读卷宗,把它分解成多个能独立搜索的子问题。

  2. 2.

    分层信息检索:

    WebPlanner 把子问题分派给多个 WebSearcher,每个 WebSearcher 就像被派到不同地点调查的警员,用搜索引擎对特定子问题做分层检索,从网上收集相关信息。

  3. 3.

    信息整合:

    WebSearcher 把收集到的信息汇总回 WebPlanner,由它来整合分析,就像探长把所有警员的调查结果汇总,寻找关键线索。

  4. 4.

    答案生成:

    最后,WebPlanner 根据整合的信息生成最终答案,清晰呈现给用户——好比探长根据所有线索推理出结论,把案件报告递到用户手上。

核心组件详解:解密 MindSearch 背后的智慧

WebPlanner:运筹帷幄,决胜千里

WebPlanner 是 MindSearch 的大脑,它模仿人类专家解决问题的思路,通过以下步骤实现深度搜索:

  1. 1.

    问题分解:

    先把用户问题拆成多个搜索引擎能理解和处理的子问题。比如面对“哪家大模型 API 最便宜?”,WebPlanner 会拆成“目前有哪些主要的大模型 API 提供商?”和“每个 API 提供商的收费标准是什么?”这类子问题。

  2. 2.

    动态搜索图构建:

    把这些子问题作为节点,构建一个动态搜索图。图中的边表示依赖关系——比如要回答“每个 API 提供商的收费标准”,得先知道“有哪些提供商”。

  3. 3.

    搜索任务调度:

    WebPlanner 根据动态搜索图,把子问题分派给多个 WebSearcher 并行搜索。同时,它还会根据搜索结果动态调整策略——比如某个子问题搜得不理想,就修改关键词或补充新子问题。

WebPlanner 的关键创新,在于把问题求解过程建模成动态图构建。这种方式不仅更贴近人类的推理过程,也为处理复杂问题和超长上下文提供了可能。

WebSearcher:明察秋毫,高效精准

WebSearcher 是 MindSearch 的信息收集者,负责用搜索引擎高效地找到和子问题相关的信息。它采用分层信息检索策略,具体步骤是:

  1. 1.

    关键词生成:

    根据分配到的子问题生成搜索关键词。

  2. 2.

    初步搜索:

    用关键词做初步检索,拿到网页列表。

  3. 3.

    网页筛选:

    根据标题、摘要等信息筛选,保留最相关的网页。

  4. 4.

    信息提取:

    对筛选后的网页深度分析,提取关键信息——比如针对“每个 API 的收费”,提取价格数据。

WebSearcher 的设计目标,是在保证信息准确性的前提下,尽可能提高检索效率。分层策略可以有效减少需要处理的信息量,从而提升效率。

性能评估:MindSearch vs. 现有方法

为了评估 MindSearch 的表现,研究团队在封闭集和开放集问答问题上做了实验,和 ChatGPT-Web(基于 GPT-4o)以及 Perplexity.ai Pro 做了对比。结果显示,MindSearch 在以下方面明显更胜一筹:

  • 深度:

    能把大问题拆成多个子问题分别深挖,答案自然更详细——就像探长对每条线索都做深入调查。

  • 广度:

    从多个来源收集信息,答案更全面、更客观——好比探长会从不同角度搜集证据,确保判断准确。

  • 事实性:

    能评估信息来源,过滤掉不可靠的,答案更可靠——就像探长仔细甄别证据真伪,排除干扰。

图 2

:由人类专家判断的开放集问答问题的主观评价结果。MindSearch 在深度、广度和事实性方面均大幅优于 ChatGPT-Web 和 Perplexity.ai Pro。

系统架构和代码实现

MindSearch 的系统架构采用多智能体设计,WebPlanner 和 WebSearcher 各司其职,协同完成深度网络搜索任务。代码实现主要基于 Python 的 FastAPI 框架,通过消息队列实现智能体之间的通信。

WebPlanner 核心代码

WebPlanner 的核心代码包含这几个关键部分:

  • 问题分解:

    把用户复杂问题拆成多个原子级子问题,比如用正则表达式或其他 NLP 技术识别关键实体和关系。

  • 动态图构建:

    把子问题作为节点,构建动态搜索图,定义节点间的依赖关系——比如用 WebSearchGraph 类中的 add_nodeadd_edge 方法。

  • 搜索任务调度:

    把子问题分派给多个 WebSearcher 并行搜索,并根据搜索结果动态调整策略——比如用多线程或异步任务管理库。

下面这段代码展示了 WebPlanner 如何用 WebSearchGraph 类构建和管理搜索图:

from mindsearch.agent.mindsearch_agent import WebSearchGraph

# 初始化搜索图
graph = WebSearchGraph()

# 添加根节点,即用户初始问题
graph.add_root_node(node_content="哪家大模型API最便宜?", node_name="root")

# 添加子问题节点
graph.add_node(node_name="大模型API提供商", node_content="目前有哪些主要的大模型API提供商?")
graph.add_node(node_name="API价格", node_content="每个 API 提供商的收费标准是什么?")

# 添加节点间的依赖关系
graph.add_edge(start_node="root", end_node="大模型API提供商")
graph.add_edge(start_node="大模型API提供商", end_node="API价格")

# ...

WebSearcher 核心代码

WebSearcher 的核心代码主要包含 SearcherAgent 类,这个类继承自 Internlm2Agent,负责和 LLM 交互,并通过调用搜索引擎 API 获取结果。下面来分析 mindsearch_agent.pySearcherAgent 类的核心代码:

  • 初始化 (__init__)

    class SearcherAgent(Internlm2Agent):
    def __init__(self, template='{query}', **kwargs) -> None:
    super().__init__(**kwargs)
    self.template = template

    SearcherAgent 的初始化方法接收一个 template 参数,用于定义和 LLM 交互的 Prompt 模板。

  • 流式聊天 (stream_chat)

    def stream_chat(self,
    question: str,
    root_question: str = None,
    parent_response: List[dict] = None,
    **kwargs) -> AgentReturn:
    # ...

    stream_chat 方法接收三个参数:question(当前子问题)、root_question(用户初始问题)和 parent_response(父节点的搜索结果,提供上下文)。它先用模板把这三个参数整合进 Prompt,然后调用父类的 stream_chat 方法和 LLM 交互,最后把返回的答案封装成 AgentReturn 对象。下面展示如何生成 Prompt:

    message = self.template['input'].format(question=question,
    topic=root_question)
    if parent_response:
    if 'context' in self.template:
    parent_response = [
    self.template['context'].format(**item)
    for item in parent_response
    ]
    message = 'n'.join(parent_response + [message])
    • question: 当前需要搜索的子问题。

    • root_question: 用户最初提交的完整问题。

    • parent_response: 父节点的搜索结果,用于提供上下文信息。

WebPlanner 和 WebSearcher 的交互

WebPlanner 和 WebSearcher 之间通过消息队列进行异步通信,实现高效的搜索任务管理和结果收集。WebPlanner 把分解后的子问题和上下文信息发送到消息队列,WebSearcher 从队列中获取任务并执行搜索,再把搜索结果发回队列,供 WebPlanner 整合。

核心 Prompt 分析

MindSearch 使用了精心设计的 Prompt 来引导 LLM 的行为:

  • WebPlanner Prompt:

    引导 LLM 把用户问题分解为子问题,并构建动态搜索图。这个 Prompt 包含 API 使用说明和示例代码,帮助 LLM 生成符合规范的 Python 代码。

  • WebSearcher Prompt:

    引导 LLM 根据搜索问题和上下文信息,调用搜索引擎 API 并返回答案。里面包含了人物设定、回复格式、搜索要求等,确保 LLM 的回复满足质量要求。

下面是 WebSearcher 使用的 Prompt 示例:

searcher_system_prompt_cn = """## 人物简介
你是一个可以调用网络搜索工具的智能助手。请根据"当前问题",调用搜索工具收集信息并回复问题。你能够调用如下工具:
{tool_info}
## 回复格式

调用工具时,请按照以下格式:

你的思考过程...<|action_start|><|plugin|>{{"name": "tool_name", "parameters": {{"param1": "value1"}}}}<|action_end|>


## 要求

- 回答中每个关键点需标注引用的搜索结果来源,以确保信息的可信度。给出索引的形式为`[[int]]`,如果有多个索引,则用多个[[]]表示,如`[[id_1]][[id_2]]`。
- 基于"当前问题"的搜索结果,撰写详细完备的回复,优先回答"当前问题"。

"""

结论与展望:AI 搜索引擎的未来

MindSearch 为 AI 搜索引擎提供了一种全新的解决方案——通过模仿人类思维的深度搜索,给用户带来更优质的体验。

展望未来,MindSearch 将在以下几个方向继续深入:

  • 处理更复杂的问题:

    进一步提高处理复杂问题的能力,比如多语言搜索、跨模态搜索等。

  • 处理超长上下文:

    探索更强大的 LLM 模型和更先进的算法,突破上下文长度的限制,从而处理更长的搜索结果。

  • 个性化搜索:

    根据用户的搜索历史、兴趣爱好等信息,提供个性化的搜索结果。

MindSearch 的出现,标志着 AI 搜索引擎进入了一个新的发展阶段。可以预见,在不久的将来,它会为我们带来更智能、更高效、更便捷的搜索体验,开启网络搜索的新纪元。