Bahasa Inggris | 简体中文
HuixiangDou adalah asisten pengetahuan profesional berdasarkan LLM.
Keuntungan:
chat_in_group
mengatasi skenario obrolan grup , menjawab pertanyaan pengguna tanpa membanjiri pesan, lihat 2401.08772, 2405.02817, Pengambilan Hibrid dan Laporan Presisichat_with_repo
untuk obrolan streaming waktu nyataLihat adegan di mana HuixiangDou berjalan dan bergabunglah dengan Grup WeChat untuk mencoba asisten AI di dalamnya.
Jika ini membantu Anda, tolong beri bintang
Versi Web kami telah dirilis ke OpenXLab, tempat Anda dapat membuat basis pengetahuan, memperbarui contoh positif dan negatif, mengaktifkan pencarian web, menguji obrolan, dan mengintegrasikan ke dalam grup Feishu/WeChat. Lihat BiliBili dan YouTube!
API versi Web untuk Android juga mendukung perangkat lain. Lihat kode contoh Python.
langchain
?? | LoRA-Qwen1.5-14B | LoRA-Qwen1.5-32B | data alpaka | arXiv |
LLM | Format Berkas | Metode Pengambilan | Integrasi | Pemrosesan awal |
|
|
|
|
|
Berikut ini adalah kebutuhan memori GPU untuk berbagai fitur, perbedaannya hanya terletak pada apakah opsi tersebut diaktifkan .
Contoh Konfigurasi | Persyaratan mem GPU | Keterangan | Diverifikasi di Linux |
---|---|---|---|
config-cpu.ini | - | Gunakan API silikoncloud untuk teks saja | |
config-2G.ini | 2GB | Gunakan API openai (seperti kimi, deepseek, dan stepfun untuk mencari teks saja | |
config-multimodal.ini | 10GB | Gunakan openai API untuk LLM, pengambilan gambar dan teks | |
[Edisi Standar] config.ini | 19GB | Penyebaran LLM lokal, modalitas tunggal | |
config-advanced.ini | 80GB | LLM lokal, resolusi anafora, modalitas tunggal, praktis untuk grup WeChat |
Kami mengambil edisi standar (LLM berjalan lokal, pengambilan teks) sebagai contoh pendahuluan. Versi lain hanya berbeda dalam opsi konfigurasi.
Klik untuk menyetujui perjanjian model BCE, masuk ke dalam pelukan
huggingface-cli login
Instal dependensi
# 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
Gunakan dokumen mmpose untuk membangun basis pengetahuan mmpose dan memfilter pertanyaan. Jika Anda memiliki dokumen sendiri, letakkan saja di bawah repodir
.
Salin dan jalankan semua perintah berikut (termasuk simbol '#').
# 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
Setelah berjalan, uji dengan python3 -m huixiangdou.main --standalone
. Saat ini, balaslah pertanyaan terkait yang diajukan (terkait dengan basis pengetahuan), namun tidak menjawab pertanyaan cuaca.
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:
..
Catatan
Jalankan juga UI Web sederhana dengan gradio
:
python3 -m huixiangdou.gradio_ui
Atau jalankan server untuk mendengarkan 23333, pipa default adalah 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": ""} '
Harap perbarui dokumen repodir
, pertanyaan_baik dan pertanyaan_buruk, dan coba pengetahuan domain Anda sendiri (medis, keuangan, listrik, dll.).
Kami menyediakan kode sumber front-end typescript
dan back-end python
:
Sama seperti OpenXlab APP, harap baca dokumen penerapan web.
Jika tidak ada GPU yang tersedia, inferensi model dapat diselesaikan menggunakan API silikoncloud.
Mengambil docker miniconda+Python3.11 sebagai contoh, instal dependensi CPU dan jalankan:
# 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
Jika Anda merasa penginstalan terlalu lambat, image pra-instal disediakan di Docker Hub. Cukup ganti saat memulai buruh pelabuhan.
Jika memori GPU Anda melebihi 1,8G, atau Anda mengejar efektivitas biaya. Konfigurasi ini membuang LLM lokal dan menggunakan LLM jarak jauh, yang sama dengan edisi standar.
Ambil contoh siliconcloud
, isi API TOKEN yang diterapkan dari situs resminya ke 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 "
Catatan
Jalankan yang berikut ini untuk mendapatkan hasil Tanya Jawab
python3 -m huixiangdou.main --standalone --config-path config-2G.ini # Start all services at once
Jika Anda memiliki mem GPU 10G, Anda dapat lebih mendukung pengambilan gambar dan teks. Ubah saja model yang digunakan di 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 "
Catatan:
bpe_simple_vocab_16e6.txt.gz
Jalankan gradio untuk menguji, lihat hasil pengambilan gambar dan teks di sini.
python3 tests/test_query_gradio.py
"HuiXiangDou" di grup pengalaman WeChat telah mengaktifkan semua fitur:
Silakan baca topik berikut:
Kontributor telah menyediakan alat Android untuk berinteraksi dengan WeChat. Solusi ini didasarkan pada API tingkat sistem, dan pada prinsipnya, solusi ini dapat mengontrol UI apa pun (tidak terbatas pada perangkat lunak komunikasi).
Bagaimana jika robotnya terlalu dingin/terlalu cerewet?
resource/good_questions.json
, dan isi pertanyaan yang harus ditolak ke resource/bad_questions.json
.repodir
untuk memastikan bahwa dokumen penurunan harga di perpustakaan utama tidak berisi konten yang tidak relevan. Jalankan kembali feature_store
untuk memperbarui ambang batas dan pustaka fitur.
reject_throttle
di config.ini. Secara umum, 0,5 adalah nilai yang tinggi; 0,2 terlalu rendah.
Peluncurannya normal, tetapi kehabisan memori saat runtime?
Teks panjang LLM berdasarkan struktur transformator memerlukan lebih banyak memori. Saat ini, kuantisasi cache kv perlu dilakukan pada model, seperti deskripsi kuantisasi lmdeploy. Kemudian gunakan buruh pelabuhan untuk menyebarkan Layanan LLM Hibrid secara mandiri.
Bagaimana cara mengakses LLM lokal lainnya / Setelah akses, efeknya tidak ideal?
Bagaimana jika responnya terlalu lambat/permintaan selalu gagal?
Bagaimana jika memori GPU terlalu rendah?
Saat ini, LLM lokal tidak mungkin dijalankan, dan hanya LLM jarak jauh yang dapat digunakan bersama dengan text2vec untuk menjalankan pipeline. Harap pastikan bahwa config.ini
hanya menggunakan LLM jarak jauh dan matikan LLM lokal.
@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},
}