英語 | 简体中文
HuixiangDou は、LLM に基づいた専門知識アシスタントです。
利点:
chat_in_group
グループ チャットシナリオに対応し、メッセージが殺到することなくユーザーの質問に答えます。2401.08772、2405.02817、ハイブリッド取得および精度レポートを参照してください。chat_with_repo
HuixiangDou が実行されているシーンをチェックし、WeChat グループに参加して内部の AI アシスタントを試してください。
これが役に立った場合は、星を付けてください
当社の Web バージョンは OpenXLab にリリースされており、ナレッジ ベースの作成、肯定的な例と否定的な例の更新、Web 検索の有効化、チャットのテスト、Feishu/WeChat グループへの統合が可能です。 BiliBili と YouTube をご覧ください。
Web 版の Android 用 API は他のデバイスもサポートしています。 Python サンプル コードを参照してください。
langchain
の削除 ?? | LoRA-クウェン1.5-14B | LoRA-クウェン1.5-32B | アルパカデータ | arXiv |
LLM | ファイル形式 | 検索方法 | 統合 | 前処理 |
|
|
|
|
|
以下は、さまざまな機能の GPU メモリ要件です。違いは、オプションがオンになっているかどうかだけです。
構成例 | GPU メモリ要件 | 説明 | Linuxで検証済み |
---|---|---|---|
config-cpu.ini | - | シリコンクラウド API を使用する テキストのみの場合 | |
config-2G.ini | 2GB | openai API (kimi、deepseek、stepfun など) を使用してテキストのみを検索します | |
config-multimodal.ini | 10GB | LLM、画像、テキストの取得に openai API を使用する | |
【通常版】config.ini | 19GB | LLM のローカル展開、単一モダリティ | |
config-advanced.ini | 80GB | ローカル 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
使用して単純な 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メモリが1.8Gを超える場合や、コストパフォーマンスを追求する場合。この構成では、ローカル LLM が破棄され、代わりにリモート LLM が使用されます。これは標準版と同じです。
siliconcloud
を例に、公式Webサイトから申請した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
WeChat エクスペリエンス グループの「HuiXiangDou」では、すべての機能が有効になりました。
次のトピックをお読みください。
寄稿者は、WeChat と対話するための Android ツールを提供しました。このソリューションはシステムレベルの API に基づいており、原則としてあらゆる UI (通信ソフトウェアに限定されない) を制御できます。
ロボットが冷たすぎる/おしゃべりすぎる場合はどうすればよいでしょうか?
resource/good_questions.json
に入力し、拒否する必要がある質問をresource/bad_questions.json
に入力します。repodir
内のテーマのコンテンツを調整して、メイン ライブラリ内のマークダウン ドキュメントに無関係なコンテンツが含まれないようにします。 feature_store
を再実行して、しきい値と機能ライブラリを更新します。
reject_throttle
直接変更できます。一般に、0.5 は高い値です。 0.2は低すぎます。
起動は正常ですが、実行時にメモリ不足ですか?
トランスフォーマー構造に基づく LLM 長いテキストには、より多くのメモリが必要です。このとき、lmdeploy 量子化記述など、モデルに対して kv キャッシュ量子化を行う必要があります。次に、docker を使用してハイブリッド LLM サービスを個別にデプロイします。
他のローカル LLM にアクセスする方法 / アクセス後の効果は理想的ではありませんか?
応答が遅すぎる場合や要求が常に失敗する場合はどうすればよいですか?
GPU メモリが少なすぎる場合はどうすればよいですか?
現時点では、ローカル LLM を実行することはできず、パイプラインを実行するために text2vec と組み合わせて使用できるのはリモート LLM のみです。 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},
}