文章目錄
- L2——進階島
- MindSearch深度解析實踐
- 1 MindSearch 簡介
- 2 開發環境配置
- 2.1. 打開codespace主頁,選擇Blank模板進行創建
- 2.2. 創建conda環境隔離并安裝依賴
- 3. 獲取硅基流動API KEY
- 4. 啟動MindSearch
- 4.1. 啟動后端
- 4.2. 啟動前端
- 5. 部署到自己的 HuggingFace Spaces上
- 5.1 選擇配置
- 5.2 測試結果
L2——進階島
MindSearch深度解析實踐
1 MindSearch 簡介
MindSearch 是一個開源的 AI 搜索引擎框架,具有與 Perplexity.ai Pro 相同的性能。我們可以輕松部署它來構建自己的專屬搜索引擎,可以基于閉源的LLM(如GPT、Claude系列),也可以使用開源的LLM(如經過專門優化的InternLM2.5 系列模型,能夠在MindSearch框架中提供卓越的性能)。
最新版的MindSearch擁有以下特性:
- 🤔 任何你想知道的問題:MindSearch 通過搜索解決你在生活中遇到的各種問題
- 📚 深度知識探索:MindSearch 通過數百個網頁的瀏覽,提供更廣泛、深層次的答案
- 🔍 透明的解決方案路徑:MindSearch 提供了思考路徑、搜索關鍵詞等完整的內容,提高回復的可信度和可用性。
- 💻 多種用戶界面:為用戶提供各種接口,包括 React、Gradio、Streamlit 和本地調試。根據需要選擇任意類型。
- 🧠 動態圖構建過程:MindSearch 將用戶查詢分解為圖中的子問題節點,并根據 WebSearcher 的搜索結果逐步擴展圖。
2 開發環境配置
在入門島我們已經提到過,想要簡單部署到 hugging face上,我們需要將開發機平臺從InternStudio 替換成 GitHub CodeSpace。且隨著硅基流動提供了免費的InternLM2.5-7B-Chat的API服務,大大降低了部署門檻,我們無需GPU資源也可以部署和使用MindSearch,這也是可以利用CodeSpace完成本次實驗的原因。 那就讓我們一起來看看如何使用硅基流動的API來部署MindSearch吧~
2.1. 打開codespace主頁,選擇Blank模板進行創建
2.2. 創建conda環境隔離并安裝依賴
如果只針對于這個實驗的話,其實在codespace里面不用單獨創建conda環境。但是隔離是一個好習慣,因此我們還是創建一個相應的虛擬環境來隔離。
conda create -n mindsearch python=3.10 -y
conda init
如果是新建的codespace,在第一次創建conda環境時,需要conda init,再另啟一個終端并activate
conda activate mindsearchcd /workspaces/codespaces-blank
git clone https://github.com/InternLM/MindSearch.git && cd MindSearch && git checkout ae5b0c5pip install -r requirements.txt
3. 獲取硅基流動API KEY
因為要使用硅基流動的 API Key,所以接下來便是注冊并獲取 API Key 了。 首先,我們打開它的登錄界面來注冊硅基流動的賬號(如果注冊過,則直接登錄即可)。 在完成注冊后,打開api key頁面來準備 API Key。首先創建新 API 密鑰,然后點擊密鑰進行復制,以備后續使用。
4. 啟動MindSearch
4.1. 啟動后端
由于硅基流動 API 的相關配置已經集成在了 MindSearch 中,所以我們在一個終端A中可以直接執行下面的代碼來啟動 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 搜索引擎。
指令執行后,結果如下
此時會彈出在瀏覽器中展示 FastAPI 界面的提示。
界面如下
4.2. 啟動前端
在后端啟動完成后,我們打開新終端B運行如下命令來啟動 MindSearch 的前端:
conda activate mindsearch
# 進入你clone的項目目錄
cd /workspaces/codespaces-blank/MindSearch
python frontend/mindsearch_gradio.py
執行后結果如下,此時會彈出打開瀏覽器頁面的提示。
前后端都啟動后,在 GitHub CodeSpace 頁面,我們可以看到github自動為這兩個進程做端口轉發:
如果啟動前端后沒有自動打開前端頁面的話,我們可以手動用7882的端口轉發地址打開gradio的前端頁面。
然后就可以體驗MindSearch gradio版本啦~ 比如向其詢問:“Find legal precedents in contract law.” 等待一段時間后,會在頁面上輸出它的結果。
在這一步中,可能終端會打印報錯信息,但是只要前端頁面上沒有出現報錯就行。如果前端頁面上出現錯誤并終止,那么可能是MindSearch 中 searcher 模塊的問題。在上面的例子中我們使用的是DuckDuckGoSearch,因此你也可以嘗試其他的搜索引擎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
5. 部署到自己的 HuggingFace Spaces上
在之前課程的學習中,我們已經將模型或者應用上傳/部署到hugging face上過了。在這里我們介紹一種更簡單的方法,它就像克隆一樣,無需編寫代碼即可部署自己的Spaces應用。
首先我們找到InternLM官方部署的MindSearch Spaces應用
5.1 選擇配置
在該頁面的右上角,選擇Duplicate this Space
選擇如下配置后,即可Duplicate Space
- Space Hardware選擇第一條,即Free的2vCPU即可
- 填寫好SILICON_API_KEY,即上面提到的硅基流動的API KEY
5.2 測試結果
等待Spaces應用啟動,啟動完成后,界面如下:
同時上方會顯示綠色的running標志,這時我們可以輸入input進行測試了,我們可以在Sapces應用頁面的輸入框中輸入以下內容:
What are the top 10 e-commerce websites?
測試時可能會發現頁面卡住了很久(兩三分鐘),我們可以查看日志,如有報錯,需要重新啟動。
提出問題后,即可收到回報。
至此,我們就完成了MindSearch在Hugging Face上面的部署。