MindSearch – 基于大型语言模型的多代理网页搜索引擎框架

MindSearch 的多代理设计使整个框架能够并行从大规模网页中检索和整合信息(例如,在 3 分钟内处理超过 300 个网页的内容),相当于人类耗费 3 小时的工作量。实验表明,MindSearch 在回答质量的深度和广度上,在闭集和开放集问答问题中都显著优于传统方法。此外,基于 InternLM2.5-7B 的 MindSearch 所生成的回答相比于 ChatGPT-Web 和其他同类应用,更受到人类用户的青睐。这表明 MindSearch 已经能够为专有 AI 搜索引擎提供一个具有竞争力的解决方案。

基于大型语言模型的多代理网页搜索引擎框架(如 Perplexity.ai Pro 和 SearchGPT)

信息检索与整合是一项复杂的认知任务,通常需要耗费大量时间和精力。受大型语言模型(LLMs)显著进展的启发,近期的研究尝试通过结合 LLMs 和搜索引擎来解决这一任务。然而,这些方法仍然存在性能不佳的问题,主要面临以下三大挑战:

  1. 对于复杂的请求,搜索引擎通常无法一次性准确、完整地检索相关内容;
  2. 需要整合的相关信息往往分散在多个网页中,同时伴随着大量噪声;
  3. 大量长篇内容的网页可能很快超出 LLMs 的上下文长度限制。

受到人类解决此类问题的认知过程的启发,我们提出 MindSearch,它旨在模拟人类在网页信息检索与整合中的思维过程,并可以通过一种简单但高效的基于 LLM 的多代理框架实现。

框架设计

  • WebPlanner
    WebPlanner 模拟人类在多步骤信息检索中的动态认知过程,将用户查询分解为多个原子子问题,并将这些子问题作为图的节点,根据 WebSearcher 的搜索结果逐步扩展该图。

  • WebSearcher
    WebSearcher 的任务是针对每个子问题,利用搜索引擎执行分层信息检索,收集有价值的信息并反馈给 WebPlanner。

构建MindSearch

第一步:安装依赖

git clone https://github.com/InternLM/MindSearch  
cd MindSearch  
pip install -r requirements.txt  

第二步:设置环境变量

在配置 API 之前,需要设置环境变量。将 .env.example 文件重命名为 .env,并填写所需的值。

mv .env.example .env  
# 打开 .env 文件,添加您的密钥和模型配置  

第三步:设置 MindSearch API

启动 FastAPI 服务器:

python -m mindsearch.app --lang en --model_format internlm_server --search_engine DuckDuckGoSearch --asy  

参数说明:

  • --lang:模型语言,en 表示英文,cn 表示中文。
  • --model_format:模型格式。
    • internlm_server 表示 InternLM2.5-7b-chat,本地服务器运行(InternLM2.5-7b-chat 针对中文进行了更好的优化)。
    • gpt4 表示 GPT4。如果使用其他模型,请修改 models 文件夹中的内容。
  • --search_engine:搜索引擎。
    • DuckDuckGoSearch:DuckDuckGo 搜索引擎。
    • BingSearch:必应搜索引擎。
    • BraveSearch:Brave Web API 搜索引擎。
    • GoogleSearch:Google Serper Web 搜索 API 引擎。
    • TencentSearch:腾讯搜索 API 引擎。

注意:

  • 除 DuckDuckGo 和 TencentSearch 外,其他搜索引擎需要将 API 密钥设置为环境变量 WEB_SEARCH_API_KEY

  • 如果使用 TencentSearch,请将 TENCENT_SEARCH_SECRET_IDTENCENT_SEARCH_SECRET_KEY 设置为环境变量。

  • --asy:部署异步代理。

第四步:设置 MindSearch 前端

提供以下前端接口:

React 前端

  • 配置 Vite 代理的后端 URL:

    HOST="127.0.0.1"  # 根据需求修改  
    PORT=8002  
    sed -i -r "s/target:\s*\"\"/target: \"${HOST}:${PORT}\"/" frontend/React/vite.config.ts  
  • 安装 Node.js 和 npm:
    Ubuntu 用户:

    sudo apt install nodejs npm  

    Windows 用户:
    从官网下载安装

  • 安装依赖并启动服务:

    cd frontend/React  
    npm install  
    npm start  

详细信息请参考 React 前端文档

Gradio 前端

python frontend/mindsearch_gradio.py  

Streamlit 前端

streamlit run frontend/mindsearch_streamlit.py  

参考链接

Comments

No comments yet. Why don’t you start the discussion?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注