Englisch | 简体中文
HuixiangDou ist ein professioneller Wissensassistent auf LLM-Basis.
Vorteile:
chat_in_group
bewältigt Gruppenchat- Szenarien und beantwortet Benutzerfragen ohne Nachrichtenflut, siehe 2401.08772, 2405.02817, Hybrid Retrieval und Precision Reportchat_with_repo
für Echtzeit-Streaming -ChatSchauen Sie sich die Szenen an, in denen HuixiangDou läuft, und schließen Sie sich der WeChat-Gruppe an, um den KI-Assistenten darin auszuprobieren.
Wenn Ihnen das hilft, geben Sie ihm bitte einen Stern
Unsere Webversion wurde für OpenXLab veröffentlicht, wo Sie eine Wissensdatenbank erstellen, positive und negative Beispiele aktualisieren, die Websuche aktivieren, den Chat testen und sich in Feishu/WeChat-Gruppen integrieren können. Siehe BiliBili und YouTube!
Die API der Webversion für Android unterstützt auch andere Geräte. Siehe Python-Beispielcode.
langchain
?? | LoRA-Qwen1.5-14B | LoRA-Qwen1.5-32B | Alpaka-Daten | arXiv |
LLM | Dateiformat | Abrufmethode | Integration | Vorverarbeitung |
|
|
|
|
|
Im Folgenden sind die GPU-Speicheranforderungen für verschiedene Funktionen aufgeführt. Der Unterschied besteht nur darin, ob die Optionen aktiviert sind .
Konfigurationsbeispiel | GPU-Speicheranforderungen | Beschreibung | Unter Linux verifiziert |
---|---|---|---|
config-cpu.ini | - | Verwenden Sie die Siliconcloud-API Nur für Text | |
config-2G.ini | 2 GB | Verwenden Sie die OpenAI-API (z. B. Kimi, Deepseek und Stepfun, um nur nach Text zu suchen | |
config-multimodal.ini | 10 GB | Verwenden Sie die OpenAI-API für LLM, Bild- und Textabruf | |
[Standard Edition] config.ini | 19 GB | Lokaler Einsatz von LLM, Einzelmodalität | |
config-advanced.ini | 80 GB | lokales LLM, Anaphora-Auflösung, Einzelmodalität, praktisch für WeChat-Gruppen |
Als Einführungsbeispiel nehmen wir die Standardausgabe (lokal ausgeführtes LLM, Textabruf). Andere Versionen unterscheiden sich lediglich in den Konfigurationsmöglichkeiten.
Klicken Sie hier, um der BCE-Mustervereinbarung zuzustimmen. Melden Sie sich bei Huggingface an
huggingface-cli login
Abhängigkeiten installieren
# 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
Verwenden Sie mmpose-Dokumente, um die mmpose-Wissensdatenbank aufzubauen und Fragen zu filtern. Wenn Sie über eigene Dokumente verfügen, legen Sie diese einfach unter repodir
ab.
Kopieren Sie alle folgenden Befehle (einschließlich des „#“-Symbols) und führen Sie sie aus.
# 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
Testen Sie nach dem Ausführen mit python3 -m huixiangdou.main --standalone
. Beantworten Sie zu diesem Zeitpunkt Fragen zu mmpose (im Zusammenhang mit der Wissensdatenbank) und antworten Sie nicht auf Fragen zum Wetter.
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:
..
Notiz
Führen Sie auch eine einfache Web-Benutzeroberfläche mit gradio
aus:
python3 -m huixiangdou.gradio_ui
Oder führen Sie einen Server aus, um 23333 abzuhören. Die Standardpipeline ist 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": ""} '
Bitte aktualisieren Sie die repodir
„good_questions“ und „bad_questions“ und testen Sie Ihr eigenes Fachwissen (Medizin, Finanzen, Energie usw.).
Wir stellen typescript
-Frontend- und python
Backend-Quellcode bereit:
Wie bei OpenXlab APP lesen Sie bitte das Web-Bereitstellungsdokument.
Wenn keine GPU verfügbar ist, kann die Modellinferenz mithilfe der Siliconcloud-API durchgeführt werden.
Nehmen Sie als Beispiel Docker Miniconda+Python3.11, installieren Sie CPU-Abhängigkeiten und führen Sie Folgendes aus:
# 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
Sollte Ihnen die Installation zu langsam sein, wird im Docker Hub ein vorinstalliertes Image bereitgestellt. Tauschen Sie es einfach aus, wenn Sie den Docker starten.
Wenn Ihr GPU-Speicher 1,8 G überschreitet oder Sie auf Kosteneffizienz achten. Bei dieser Konfiguration wird das lokale LLM verworfen und stattdessen das Remote-LLM verwendet, das mit der Standardversion identisch ist.
Nehmen Sie als Beispiel siliconcloud
und geben Sie das von der offiziellen Website angewendete API-TOKEN in config-2G.ini
ein
# 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 "
Notiz
Führen Sie Folgendes aus, um die Q&A-Ergebnisse zu erhalten
python3 -m huixiangdou.main --standalone --config-path config-2G.ini # Start all services at once
Wenn Sie über einen 10G-GPU-Speicher verfügen, können Sie den Bild- und Textabruf weiter unterstützen. Ändern Sie einfach das in config.ini verwendete Modell.
# 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 "
Notiz:
bpe_simple_vocab_16e6.txt.gz
herunterladenFühren Sie gradio zum Testen aus. Sehen Sie sich hier das Ergebnis des Bild- und Textabrufs an.
python3 tests/test_query_gradio.py
„HuiXiangDou“ in der WeChat-Erlebnisgruppe hat alle Funktionen aktiviert:
Bitte lesen Sie die folgenden Themen:
Mitwirkende haben Android-Tools für die Interaktion mit WeChat bereitgestellt. Die Lösung basiert auf APIs auf Systemebene und kann im Prinzip jede Benutzeroberfläche steuern (nicht nur Kommunikationssoftware).
Was ist, wenn der Roboter zu kalt/zu gesprächig ist?
resource/good_questions.json
ein und diejenigen, die abgelehnt werden sollen, in resource/bad_questions.json
.repodir
an, um sicherzustellen, dass die Markdown-Dokumente in der Hauptbibliothek keine irrelevanten Inhalte enthalten. Führen Sie feature_store
erneut aus, um Schwellenwerte und Funktionsbibliotheken zu aktualisieren.
reject_throttle
direkt in config.ini ändern. Im Allgemeinen ist 0,5 ein hoher Wert; 0,2 ist zu niedrig.
Der Start verläuft normal, aber zur Laufzeit ist nicht genügend Speicher vorhanden?
LLM-Langtext basierend auf der Transformer-Struktur benötigt mehr Speicher. Zu diesem Zeitpunkt muss die KV-Cache-Quantisierung für das Modell durchgeführt werden, z. B. die Beschreibung der lmdeploy-Quantisierung. Verwenden Sie dann Docker, um den Hybrid-LLM-Dienst unabhängig bereitzustellen.
Wie greife ich auf andere lokale LLM zu / Nach dem Zugriff ist der Effekt nicht ideal?
Was passiert, wenn die Antwort zu langsam ist/die Anfrage immer fehlschlägt?
Was passiert, wenn der GPU-Speicher zu niedrig ist?
Derzeit ist es nicht möglich, lokales LLM auszuführen, und nur Remote-LLM kann in Verbindung mit text2vec zum Ausführen der Pipeline verwendet werden. Bitte stellen Sie sicher, dass config.ini
nur Remote-LLM verwendet und schalten Sie lokales LLM aus.
@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},
}