书生大模型实战营

书生大模型实战营-MindSearch 快速部署

任务要点

  • 部署MindSearch到 hugging face Spaces上
  • 在官方的MindSearch页面 复制 Spaces应用到自己的Spaces下

MindSearch 简介

MindSearch 是一个开源的 AI 搜索引擎框架,具有与 Perplexity.ai Pro 相同的性能。我们可以轻松部署它来构建自己的专属搜索引擎,可以基于闭源的LLM(如GPT、Claude系列),也可以使用开源的LLM(如经过专门优化的InternLM2.5 系列模型,能够在MindSearch框架中提供卓越的性能)
请添加图片描述

实践流程

开发环境配置

随着硅基流动提供了免费的InternLM2.5-7B-Chat的API服务,大大降低了部署门槛,我们无需GPU资源也可以部署和使用MindSearch,所以可以利用CodeSpace完成本次实验
接下来使用硅基流动的API来部署MindSearch

  • 打开codespace主页,选择Blank模板进行创建
    在这里插入图片描述
    浏览器会自动在新页面打开一个web版的vscode,接下来的操作就和我们使用vscode基本没差别了
    在这里插入图片描述
  • 创建conda环境隔离并安装依赖
    conda create -n mindsearch python=3.10 -y
    conda init
    
  • 新建的codespace,在第一次创建conda环境时,需要conda init,再另启一个终端并activate
    conda activate mindsearch
    
    cd /workspaces/codespaces-blank
    git clone https://github.com/InternLM/MindSearch.git && cd MindSearch && git checkout ae5b0c5
    
    pip install -r requirements.txt
    
  • 获取硅基流动API KEY
    因为要使用硅基流动的 API Key,所以接下来便是注册并获取 API Key 了。 首先,我们打开它的登录界面来注册硅基流动的账号(如果注册过,则直接登录即可)。 在完成注册后,打开api key页面来准备 API Key。
    首先创建新 API 密钥,然后点击密钥进行复制,以备后续使用
    在这里插入图片描述

启动MindSearch

启动后端

由于硅基流动 API 的相关配置已经集成在了 MindSearch 中,所以在终端中可以直接执行下面的代码来启动 MindSearch 的后端

export SILICON_API_KEY=<硅基流动的API KEY>
conda activate mindsearch

# 进入你clone的项目目录
cd /workspaces/codespaces-blank/MindSearch
python -m mindsearch.app --lang cn --model_format internlm_silicon --search_engine DuckDuckGoSearch --asy
  • –lang: 模型的语言,en 为英语,cn 为中文
  • –model_format: 模型的格式
    • internlm_silicon 为 InternLM2.5-7b-chat 在硅基流动上的API模型
  • –search_engine: 搜索引擎
    • DuckDuckGoSearch 为 DuckDuckGo 搜索引擎
    • BingSearch 为 Bing 搜索引擎
    • BraveSearch 为 Brave 搜索引擎
    • GoogleSearch 为 Google Serper 搜索引擎
    • TencentSearch 为 Tencent 搜索引擎
      在这里插入图片描述

启动前端

打开新终端运行如下命令来启动 MindSearch 的前端:

conda activate mindsearch
# 进入你clone的项目目录
cd /workspaces/codespaces-blank/MindSearch
python frontend/mindsearch_gradio.py

在这里插入图片描述
前后端都启动后,可以看到github自动为这两个进程进行了端口转发
在这里插入图片描述
本地浏览器访问7882的端口转发地址(如:https://reimagined-robot-p579rvvrp472649-7882.app.github.dev/)
在这里插入图片描述

  • 也可以尝试其他的搜索引擎API。如我们可以替换为BingSearch 或者 TencentSearch 进行尝试。

    # BingSearch
    python -m mindsearch.app --lang cn --model_format internlm_silicon --search_engine BingSearch --asy
    # TencentSearch
    # python -m mindsearch.app --lang cn --model_format internlm_silicon --search_engine TencentSearch --asy
    

部署到 HuggingFace Spaces上

在之前的学习中,已经将模型或者应用上传/部署到hugging face上过了。
在这里介绍一种更简单的方法,它就像克隆一样,无需编写代码即可部署自己的Spaces应用
首先我们找到InternLM官方部署的MindSearch Spaces应用
在这里插入图片描述

选择配置

  • 在该页面的右上角,选择Duplicate this Space
    在这里插入图片描述
  • 选择如下配置后,即可Duplicate Space
  • SILICON_API_KEY,即上面提到的硅基流动的API KEY
    在这里插入图片描述

测试结果

等待Spaces应用启动,当启动好后上方会显示绿色的running标志(可以尝试刷新页面)

  • 可以在Sapces应用页面的输入框中进行提问
    在这里插入图片描述

  • 测试时如果发现页面卡住了很久(两三分钟),我们可以查看日志,最后两行可能报如下错误:

    graph.add_edge(start_node="root", end_node("contract_enforcement"))
      SyntaxError: positional argument follows keyword argument
    

    此时需要在页面右上角选择Restart Space,待到重启完成后(显示绿色running标志后)再刷新一下网页页面,再次测试
    在这里插入图片描述

总结

如果你想要造一艘船,不要急着找人来收集木材,而是先教会他们向往大海。