อังกฤษ | 简体中文
HuixiangDou เป็น ผู้ช่วยความรู้ระดับมืออาชีพ จาก LLM
ข้อดี:
chat_in_group
รับมือกับสถานการณ์ การแชทเป็นกลุ่ม ตอบคำถามของผู้ใช้โดยไม่มีข้อความท่วม ดู 2401.08772, 2405.02817 การดึงข้อมูลแบบไฮบริดและรายงานความแม่นยำchat_with_repo
สำหรับการแชท แบบเรียลไทม์ตรวจสอบฉากที่ HuixiangDou วิ่งอยู่และเข้าร่วม WeChat Group เพื่อลองใช้ผู้ช่วย AI ภายใน
หากสิ่งนี้ช่วยคุณได้ โปรดให้ดาวด้วย
เวอร์ชันเว็บของเราเปิดตัวสู่ OpenXLab แล้ว ซึ่งคุณสามารถสร้างฐานความรู้ อัปเดตตัวอย่างเชิงบวกและเชิงลบ เปิดการค้นหาเว็บ ทดสอบแชท และรวมเข้ากับกลุ่ม Feishu/WeChat ดู BiliBili และ YouTube !
API ของเวอร์ชันเว็บสำหรับ Android ยังรองรับอุปกรณ์อื่นๆ ด้วย ดูโค้ดตัวอย่าง Python
langchain
?- | LoRA-Qwen1.5-14B | LoRA-Qwen1.5-32B | ข้อมูลอัลปาก้า | อาร์เอ็กซ์ |
นิติศาสตร์มหาบัณฑิต | รูปแบบไฟล์ | วิธีการดึงข้อมูล | บูรณาการ | กำลังประมวลผลล่วงหน้า |
|
|
|
|
|
ต่อไปนี้เป็นข้อกำหนดหน่วยความจำ GPU สำหรับคุณสมบัติที่แตกต่างกัน ความแตกต่างอยู่ที่ว่า ตัวเลือกนั้นเปิดอยู่ หรือไม่
ตัวอย่างการกำหนดค่า | ข้อกำหนดหน่วยความจำ GPU | คำอธิบาย | ตรวจสอบแล้วบน Linux |
---|---|---|---|
config-cpu.ini | - | ใช้ซิลิคอนคลาวด์ API สำหรับข้อความเท่านั้น | |
config-2G.ini | 2GB | ใช้ openai API (เช่น kimi, deepseek และ stepfun เพื่อค้นหาข้อความเท่านั้น | |
config-multimodal.ini | 10GB | ใช้ openai API สำหรับ LLM, การดึงรูปภาพและข้อความ | |
[รุ่นมาตรฐาน] config.ini | 19GB | การปรับใช้ LLM ในพื้นที่ ในรูปแบบเดียว | |
config-advanced.ini | 80GB | LLM ท้องถิ่น ความละเอียดแอนาโฟรา รูปแบบเดียว ใช้งานได้จริงสำหรับกลุ่ม WeChat |
เราใช้รุ่นมาตรฐาน (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:
..
บันทึก
รัน Web UI อย่างง่ายด้วย 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
back-end:
เช่นเดียวกับ OpenXlab APP โปรดอ่านเอกสารการปรับใช้เว็บ
หากไม่มี 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 เพียงแทนที่เมื่อเริ่มนักเทียบท่า
หากหน่วยความจำ GPU ของคุณเกิน 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 "
บันทึก
ดำเนินการต่อไปนี้เพื่อรับผลการถามตอบ
python3 -m huixiangdou.main --standalone --config-path config-2G.ini # Start all services at once
หากคุณมีหน่วยความจำ GPU 10G คุณสามารถรองรับการดึงรูปภาพและข้อความเพิ่มเติมได้ เพียงแก้ไขโมเดลที่ใช้ใน 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 ระดับระบบ และโดยหลักการแล้ว โซลูชันนี้สามารถควบคุม UI ใดก็ได้ (ไม่จำกัดเฉพาะซอฟต์แวร์การสื่อสาร)
จะเกิดอะไรขึ้นถ้าหุ่นยนต์เย็นเกินไป/พูดมากเกินไป?
resource/good_questions.json
และกรอกคำถามที่ควรปฏิเสธลงใน resource/bad_questions.json
repodir
เพื่อให้แน่ใจว่าเอกสารมาร์กดาวน์ในไลบรารีหลักไม่มีเนื้อหาที่ไม่เกี่ยวข้อง รัน feature_store
อีกครั้งเพื่ออัพเดตขีดจำกัดและไลบรารีคุณลักษณะ
reject_throttle
ได้โดยตรงใน config.ini โดยทั่วไปแล้ว 0.5 ถือเป็นค่าที่สูง 0.2 ต่ำเกินไป
การเปิดตัวเป็นเรื่องปกติ แต่หน่วยความจำไม่เพียงพอในระหว่างรันไทม์
ข้อความยาว LLM ตามโครงสร้างของหม้อแปลงต้องใช้หน่วยความจำเพิ่มเติม ในขณะนี้ การกำหนดปริมาณแคช kv จำเป็นต้องดำเนินการบนโมเดล เช่น คำอธิบายการหาปริมาณ lmdeploy จากนั้นใช้นักเทียบท่าเพื่อปรับใช้ 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},
}