英語 | 簡體中文
HuiyangDou是一位基於LLM的專業知識助理。
優點:
chat_in_group
應對群聊場景,回答用戶問題,不會出現訊息氾濫,參見2401.08772、2405.02817,混合檢索和精確度報告chat_with_repo
用於即時串流聊天看看回想豆運作的場景,加入微信群試試裡面的AI助手。
如果對您有幫助,請給個star
我們的網頁版已經發佈到OpenXLab,您可以在其中建立知識庫、更新正反例、開啟網頁搜尋、測試聊天、加入飛書/微信群組。請參閱 BiliBili 和 YouTube!
Android 的網頁版 API 也支援其他裝置。請參閱 Python 範例程式碼。
langchain
?? | LoRA-Qwen1.5-14B | LoRA-Qwen1.5-32B | 羊駝數據 | arXiv |
法學碩士 | 文件格式 | 檢索方式 | 一體化 | 預處理 |
|
|
|
|
|
以下是不同功能對GPU顯存的要求,差異僅在於選項是否開啟。
配置範例 | GPU 記憶體需求 | 描述 | 在 Linux 上驗證 |
---|---|---|---|
配置-cpu.ini | - | 使用siliconcloud API 僅適用於文字 | |
配置-2G.ini | 2GB | 使用openai API(例如kimi、deepseek和stepfun)僅搜尋文本 | |
配置-multimodal.ini | 10GB | 使用 openai API 進行法學碩士、圖像和文字檢索 | |
【標準版】config.ini | 19GB | 法學碩士本地部署,單一模式 | |
配置高級.ini | 80GB | 本地法學碩士,照應解析,單一模態,適用於微信群 |
我們以標準版(本地運行LLM、文字檢索)為例進行介紹。其他版本只是配置選項不同。
點選同意BCE模型協議,登入huggingface
huggingface-cli login
安裝依賴項
# parsing `word` format requirements
apt update
apt install python-dev libxml2-dev libxslt1-dev antiword unrtf poppler-utils pstotext tesseract-ocr flac ffmpeg lame libmad0 libsox-fmt-mp3 sox libjpeg-dev swig libpulse-dev
# python requirements
pip install -r requirements.txt
# For python3.8, install faiss-gpu instead of faiss
使用mmpose文件建立mmpose知識庫並過濾問題。如果你有自己的文檔,只需將它們放在repodir
下即可。
複製並執行以下所有命令(包括“#”符號)。
# Download the knowledge base, we only take the documents of mmpose as an example. You can put any of your own documents under `repodir`
cd HuixiangDou
mkdir repodir
git clone https://github.com/open-mmlab/mmpose --depth=1 repodir/mmpose
# Save the features of repodir to workdir, and update the positive and negative example thresholds into `config.ini`
mkdir workdir
python3 -m huixiangdou.service.feature_store
運行後,使用python3 -m huixiangdou.main --standalone
進行測試。此時,回覆mmpose相關問題(與知識庫相關),同時不回覆天氣問題。
python3 -m huixiangdou.main --standalone
+---------------------------+---------+----------------------------+-----------------+
| Query | State | Reply | References |
+===========================+=========+============================+=================+
| How to install mmpose ? | success | To install mmpose, plea.. | installation.md |
--------------------------------------------------------------------------------------
| How is the weather today ? | unrelated.. | .. | |
+-----------------------+---------+--------------------------------+-----------------+
? Input your question here, type ` bye ` for exit:
..
筆記
也可以使用gradio
運行一個簡單的 Web UI:
python3 -m huixiangdou.gradio_ui
或執行伺服器來監聽 23333,預設管道是chat_with_repo
:
python3 -m huixiangdou.server
# test async API
curl -X POST http://127.0.0.1:23333/huixiangdou_stream -H " Content-Type: application/json " -d ' {"text": "how to install mmpose","image": ""} '
# cURL sync API
curl -X POST http://127.0.0.1:23333/huixiangdou_inference -H " Content-Type: application/json " -d ' {"text": "how to install mmpose","image": ""} '
請更新repodir
文檔,good_questions和bad_questions,並嘗試你自己的領域知識(醫療,金融,電力等)。
我們提供typescript
前端和python
後端原始碼:
與OpenXlab APP相同,請閱讀Web部署文件。
如果沒有可用的GPU,可以使用siliconcloud API完成模型推理。
以docker miniconda+Python3.11為例,安裝CPU依賴並運作:
# Start container
docker run -v /path/to/huixiangdou:/huixiangdou -p 7860:7860 -p 23333:23333 -it continuumio/miniconda3 /bin/bash
# Install dependencies
apt update
apt install python-dev libxml2-dev libxslt1-dev antiword unrtf poppler-utils pstotext tesseract-ocr flac ffmpeg lame libmad0 libsox-fmt-mp3 sox libjpeg-dev swig libpulse-dev
python3 -m pip install -r requirements-cpu.txt
# Establish knowledge base
python3 -m huixiangdou.service.feature_store --config_path config-cpu.ini
# Q&A test
python3 -m huixiangdou.main --standalone --config_path config-cpu.ini
# gradio UI
python3 -m huixiangdou.gradio_ui --config_path config-cpu.ini
如果您發現安裝速度太慢,Docker Hub 中提供了預先安裝的映像。只需在啟動 docker 時替換它即可。
如果你的GPU mem超過1.8G,或是你追求性價比。此配置放棄本地LLM,改用遠端LLM,與標準版相同。
以siliconcloud
為例,將官網申請的API TOKEN填入config-2G.ini
中
# config-2G.ini
[ llm ]
enable_local = 0 # Turn off local LLM
enable_remote = 1 # Only use remote
..
remote_type = " siliconcloud " # Choose siliconcloud
remote_api_key = " YOUR-API-KEY-HERE " # Your API key
remote_llm_model = " alibaba/Qwen1.5-110B-Chat "
筆記
執行以下命令以取得Q&A結果
python3 -m huixiangdou.main --standalone --config-path config-2G.ini # Start all services at once
如果你有10G GPU內存,你可以進一步支援圖像和文字檢索。只需修改config.ini中使用的模型即可。
# config-multimodal.ini
# !!! Download `https://huggingface.co/BAAI/bge-visualized/blob/main/Visualized_m3.pth` to `bge-m3` folder !!!
embedding_model_path = " BAAI/bge-m3 "
reranker_model_path = " BAAI/bge-reranker-v2-minicpm-layerwise "
筆記:
bpe_simple_vocab_16e6.txt.gz
執行gradio進行測試,查看圖文檢索結果。
python3 tests/test_query_gradio.py
微信體驗群組中的「灰香豆」已啟用全部功能:
請閱讀以下主題:
貢獻者提供了與微信互動的Android工具。此解決方案基於系統層級API,原則上可以控制任何UI(不限於通訊軟體)。
如果機器人太冷/太健談怎麼辦?
resource/good_questions.json
中,將應該拒絕的問題填寫到resource/bad_questions.json
中。repodir
中的主題內容,確保主庫中的markdown文件不包含不相關的內容。重新運行feature_store
以更新閾值和特徵庫。
reject_throttle
。一般來說,0.5是較高的值; 0.2 太低了。
啟動正常,但是運行時記憶體不足?
基於Transformers結構的LLM長文本需要更多的記憶體。這時候需要在模型上做kv快取量化,例如lmdeploy量化描述。然後使用docker獨立部署Hybrid LLM Service。
如何存取其他本機LLM / 存取後效果不理想?
如果回應太慢/請求總是失敗怎麼辦?
如果 GPU 顯存太低怎麼辦?
此時無法執行本機LLM,只能使用遠端LLM與text2vec配合來執行管道。請確保config.ini
僅使用遠端LLM並關閉本機LLM。
@misc{kong2024huixiangdou,
title={HuiXiangDou: Overcoming Group Chat Scenarios with LLM-based Technical Assistance},
author={Huanjun Kong and Songyang Zhang and Jiaying Li and Min Xiao and Jun Xu and Kai Chen},
year={2024},
eprint={2401.08772},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
@misc{kong2024labelingsupervisedfinetuningdata,
title={Labeling supervised fine-tuning data with the scaling law},
author={Huanjun Kong},
year={2024},
eprint={2405.02817},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2405.02817},
}