英语 | 简体中文
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},
}