الإنجليزية | 简体中文
HuixiangDou هو مساعد المعرفة المهنية على أساس LLM.
المزايا:
chat_in_group
مع سيناريو الدردشة الجماعية ، وتجيب على أسئلة المستخدمين دون غمر الرسائل، راجع 2401.08772، 2405.02817، الاسترداد المختلط والتقرير الدقيقchat_with_repo
للدردشة المتدفقة في الوقت الحقيقيتحقق من المشاهد التي يتم فيها تشغيل HuixiangDou وانضم إلى WeChat Group لتجربة مساعد الذكاء الاصطناعي بالداخل.
إذا كان هذا يساعدك، يرجى إعطائه نجمة
تم إصدار إصدار الويب الخاص بنا إلى OpenXLab، حيث يمكنك إنشاء قاعدة معرفية وتحديث الأمثلة الإيجابية والسلبية وتشغيل بحث الويب واختبار الدردشة والاندماج في مجموعات Feishu/WeChat. انظر بيليبيلي ويوتيوب!
تدعم واجهة برمجة التطبيقات (API) الخاصة بإصدار الويب لنظام Android أيضًا الأجهزة الأخرى. راجع نموذج كود بايثون.
langchain
؟؟ | لورا-Qwen1.5-14B | لورا-Qwen1.5-32B | بيانات الألبكة | arXiv |
ماجستير | تنسيق الملف | طريقة الاسترجاع | اندماج | المعالجة المسبقة |
|
|
|
|
|
فيما يلي متطلبات ذاكرة GPU للميزات المختلفة، والفرق يكمن فقط في ما إذا كانت الخيارات قيد التشغيل أم لا.
مثال التكوين | متطلبات ذاكرة GPU | وصف | تم التحقق منها على نظام Linux |
---|---|---|---|
التكوين cpu.ini | - | استخدم واجهة برمجة تطبيقات siliconcloud للنص فقط | |
التكوين-2G.ini | 2 جيجابايت | استخدم openai API (مثل kimi وdeepseek وstepfun للبحث عن النص فقط | |
config-multimodal.ini | 10 جيجابايت | استخدم openai API لاسترجاع LLM والصور والنص | |
[الإصدار القياسي] config.ini | 19 جيجابايت | النشر المحلي للماجستير في القانون، طريقة واحدة | |
التكوين المتقدم.ini | 80 جيجابايت | 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
. في الوقت الحالي، قم بالرد على الأسئلة ذات الصلة (المتعلقة بقاعدة المعرفة)، مع عدم الرد على أسئلة الطقس.
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
والأسئلة الجيدة والأسئلة السيئة وتجربة معرفتك بالمجال (الطبي والمالي والطاقة وما إلى ذلك).
نحن typescript
كود المصدر للواجهة الأمامية والخلفية python
:
مثل تطبيق OpenXlab، يرجى قراءة مستند نشر الويب.
إذا لم تتوفر وحدة معالجة الرسومات (GPU)، فيمكن إكمال استنتاج النموذج باستخدام واجهة برمجة تطبيقات siliconcloud.
بأخذ 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.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
إذا كان لديك ذاكرة 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. يعتمد الحل على واجهات برمجة التطبيقات على مستوى النظام، ومن حيث المبدأ، يمكنه التحكم في أي واجهة مستخدم (لا يقتصر على برامج الاتصالات).
ماذا لو كان الروبوت باردًا جدًا/متحدثًا جدًا؟
resource/good_questions.json
، واملأ الأسئلة التي يجب رفضها في resource/bad_questions.json
.repodir
للتأكد من أن مستندات تخفيض السعر في المكتبة الرئيسية لا تحتوي على محتوى غير ذي صلة. أعد تشغيل feature_store
لتحديث الحدود ومكتبات الميزات.
reject_throttle
مباشرة في config.ini. بشكل عام، 0.5 قيمة عالية؛ 0.2 منخفض جدًا.
التشغيل أمر طبيعي، ولكن هل نفدت الذاكرة أثناء وقت التشغيل؟
يتطلب نص LLM الطويل المستند إلى بنية المحولات مزيدًا من الذاكرة. في هذا الوقت، يجب إجراء تكميم ذاكرة التخزين المؤقت kv على النموذج، مثل وصف تكميم lmdeploy. ثم استخدم عامل الإرساء لنشر خدمة Hybrid LLM بشكل مستقل.
كيفية الوصول إلى 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},
}