английский | 简体中文
ХуйсянДоу — профессиональный помощник по знаниям, получивший степень магистра права.
Преимущества:
chat_in_group
справляется со сценарием группового чата , отвечает на вопросы пользователей без пересылки сообщений, см. 2401.08772, 2405.02817, Отчет о гибридном поиске и точности.chat_with_repo
для потокового чата в реальном времениПосмотрите сцены, в которых работает HuixiangDou, и присоединяйтесь к группе WeChat, чтобы опробовать помощника с искусственным интеллектом внутри.
Если это вам помогло, пожалуйста, поставьте звезду
Наша веб-версия была выпущена для OpenXLab, где вы можете создавать базу знаний, обновлять положительные и отрицательные примеры, включать веб-поиск, тестировать чат и интегрироваться в группы Feishu/WeChat. Смотрите БилиБили и YouTube!
API веб-версии для Android также поддерживает другие устройства. См. пример кода Python.
langchain
?? | ЛоРА-Квен1.5-14Б | ЛоРА-Квен1.5-32Б | данные альпаки | arXiv |
Магистр права | Формат файла | Метод поиска | Интеграция | Предварительная обработка |
|
|
|
|
|
Ниже приведены требования к памяти графического процессора для различных функций, разница заключается только в том, включены ли эти опции .
Пример конфигурации | Требования к памяти графического процессора | Описание | Проверено на Linux |
---|---|---|---|
config-cpu.ini | - | Используйте API кремниевого облака только для текста | |
конфигурация-2G.ini | 2 ГБ | Используйте API openai (например, kimi, deepseek и Stepfun для поиска только текста). | |
config-multimodal.ini | 10 ГБ | Используйте openai API для LLM, поиска изображений и текста. | |
[Стандартная версия] config.ini | 19 ГБ | Локальное внедрение LLM, одиночный метод | |
config-advanced.ini | 80 ГБ | локальный LLM, разрешение анафоры, единая модальность, практично для группы WeChat |
В качестве вводного примера мы возьмем стандартную версию (локальный запуск LLM, поиск текста). Остальные версии просто отличаются вариантами конфигурации.
Нажмите, чтобы согласиться с типовым соглашением BCE, войдите в систему.
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
:
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, прочтите документ по веб-развертыванию.
Если доступного графического процессора нет, вывод модели можно выполнить с помощью API Siliconcloud.
Взяв в качестве примера docker miniconda+Python3.11, установите зависимости ЦП и запустите:
# 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 предоставляется предустановленный образ. Просто замените его при запуске докера.
Если память вашего графического процессора превышает 1,8 ГБ или вы стремитесь к экономической эффективности. В этой конфигурации локальный 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 "
Примечание
Выполните следующее, чтобы получить результаты вопросов и ответов.
python3 -m huixiangdou.main --standalone --config-path config-2G.ini # Start all services at once
Если у вас есть память графического процессора 10 ГБ, вы можете дополнительно поддерживать поиск изображений и текста. Просто измените модель, используемую в 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
«HuiXiangDou» в группе опыта WeChat включил все функции:
Пожалуйста, прочитайте следующие темы:
Участники предоставили инструменты Android для взаимодействия с WeChat. Решение основано на API-интерфейсах системного уровня и, в принципе, может управлять любым пользовательским интерфейсом (не ограничиваясь коммуникационным программным обеспечением).
Что, если робот слишком холоден/слишком болтлив?
resource/good_questions.json
и заполните те, на которые следует отклонить, в resource/bad_questions.json
.repodir
, чтобы документы с уценкой в основной библиотеке не содержали ненужного контента. Перезапустите feature_store
, чтобы обновить пороговые значения и библиотеки объектов.
reject_throttle
в config.ini. Вообще говоря, 0,5 — это высокое значение; 0,2 это слишком мало.
Запуск нормальный, но во время выполнения не хватает памяти?
Длинный текст LLM, основанный на структуре преобразователей, требует больше памяти. В настоящее время в модели необходимо выполнить квантование кэша kv, например описание квантования lmdeploy. Затем используйте Docker для самостоятельного развертывания гибридной службы LLM.
Как получить доступ к другим местным LLM / После доступа эффект не идеален?
Что делать, если ответ слишком медленный или запрос всегда завершается неудачно?
Что делать, если памяти графического процессора слишком мало?
В настоящее время невозможно запустить локальный 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},
}