اقرأ هذا باللغة الإنجليزية
LangChain-Chatchat (المعروفة سابقًا باسم Langchain-ChatGLM)
استنادًا إلى نماذج اللغات الكبيرة مثل ChatGLM وأطر التطبيقات مثل Langchain، فهو مشروع تطبيق RAG وAgent مفتوح المصدر يمكن نشره دون اتصال بالإنترنت.
ملخص
مقدمة الوظيفة
0.3.x نظرة عامة على الميزات
أطر ونماذج الاستدلال النموذجية المدعومة
ابدأ بسرعة
تركيب النقطة ونشرها
تثبيت كود المصدر ونشره/تطويره
نشر عامل ميناء
معالم المشروع
اتصل بنا
️ تطبيق أسئلة وأجوبة يعتمد على قاعدة المعرفة المحلية التي يتم تنفيذها باستخدام أفكار langchain. الهدف هو بناء حل أسئلة وأجوبة لقاعدة المعرفة يكون ملائمًا للسيناريوهات الصينية والنماذج مفتوحة المصدر ويمكن تشغيله دون الاتصال بالإنترنت.
مستوحاة من وثيقة مشروع GanymedeNil.ai وطلب السحب ChatGLM-6B الذي أنشأه Alex Zhangji، تم إنشاء تطبيق الأسئلة والأجوبة لقاعدة المعرفة المحلية والذي يمكن تنفيذه باستخدام نماذج مفتوحة المصدر طوال العملية بأكملها. في الإصدار الأخير من هذا المشروع، يمكن استخدام أطر عمل مثل Xinference وOllama للوصول إلى نماذج مثل GLM-4-Chat وQwen2-Instruct وLlama3 وما إلى ذلك، بالاعتماد على إطار عمل langchain لدعم خدمات الاتصال من خلال واجهات برمجة التطبيقات المقدمة بناءً على على FastAPI، أو باستخدام WebUI استنادًا إلى وظيفة Streamlit.
✅ يدعم هذا المشروع LLM السائد مفتوح المصدر، ونماذج التضمين وقواعد بيانات المتجهات في السوق، ويمكنه تحقيق النشر الخاص دون اتصال بالإنترنت لجميع النماذج مفتوحة المصدر . وفي الوقت نفسه، يدعم هذا المشروع أيضًا استدعاء OpenAI GPT API، وسيستمر في توسيع الوصول إلى النماذج المختلفة وواجهات برمجة التطبيقات النموذجية في المستقبل.
⛓️ يظهر مبدأ تنفيذ هذا المشروع في الشكل أدناه. تتضمن العملية تحميل الملفات -> قراءة النص -> تجزئة النص -> توجيه النص -> توجيه الأسئلة -> مطابقة top k
في متجه النص الأكثر تشابهًا مع ناقل السؤال top k
-> تتم إضافة النص المطابق إلى prompt
كسياق وسؤال -> يتم إرساله إلى LLM
لإنشاء إجابة.
فيديو مقدمة المبدأ
من منظور معالجة المستندات، تكون عملية التنفيذ كما يلي:
لا يتضمن هذا المشروع عمليات الضبط أو التدريب، ولكن يمكن استخدام الضبط أو التدريب لتحسين تأثير هذا المشروع.
تم تحديث الكود المستخدم في الإصدار 0.3.0
من صورة AutoDL إلى الإصدار v0.3.0
من هذا المشروع.
سيتم تحديث صورة Docker في المستقبل القريب.
? إذا كنت ترغب في المساهمة في هذا المشروع، يرجى زيارة دليل التطوير للحصول على مزيد من المعلومات حول التطوير والنشر.
وظيفة | 0.2.x | 0.3.x |
---|---|---|
الوصول إلى النموذج | محلي: دردشة سريعة على الانترنت: XXXModelWorker | محلي: model_provider، يدعم معظم أطر تحميل النماذج السائدة عبر الإنترنت: oneapi جميع عمليات الوصول إلى النماذج متوافقة مع openai sdk |
عامل | ❌غير مستقر | ✅تم تحسين قدرات العميل بشكل ملحوظ لـ ChatGLM3 وQwen |
محادثة ماجستير | ✅ | ✅ |
محادثة قاعدة المعرفة | ✅ | ✅ |
محادثة محرك البحث | ✅ | ✅ |
محادثة ملف | ✅استرجاع المتجهات فقط | ✅موحد في وظيفة File RAG، ويدعم طرق بحث متعددة مثل BM25+KNN |
حوار قاعدة البيانات | ❌ | ✅ |
حوار الصور المتعدد الوسائط | ❌ | ✅ ينصح باستخدام qwen-vl-chat |
حوار الأدب ARXIV | ❌ | ✅ |
محادثة ولفرام | ❌ | ✅ |
صورة فنسنتية | ❌ | ✅ |
إدارة قاعدة المعرفة المحلية | ✅ | ✅ |
ويبوي | ✅ | ✅دعم أفضل للجلسات المتعددة، وكلمات موجهة للنظام مخصصة... |
يتم تنفيذ الوظائف الأساسية للإصدار 0.3.x بواسطة Agent، ولكن يمكن للمستخدمين أيضًا تنفيذ استدعاءات الأداة يدويًا:
وضع التشغيل | الوظائف المنفذة | السيناريوهات القابلة للتطبيق |
---|---|---|
حدد "تمكين الوكيل" وحدد أدوات متعددة | أداة الاتصال التلقائي عن طريق LLM | استخدم النماذج ذات إمكانيات الوكيل مثل ChatGLM3/Qwen أو واجهة برمجة التطبيقات عبر الإنترنت |
حدد "تمكين الوكيل" وحدد أداة واحدة | تقوم LLM بتوزيع معلمات الأداة فقط | يتمتع وكيل النموذج المستخدم بقدرات متوسطة ولا يمكنه تحديد الأدوات جيدًا. أريد تحديد الوظائف يدويًا. |
قم بإلغاء تحديد "تمكين الوكيل" وحدد أداة واحدة | بدون استخدام وظيفة الوكيل، قم بملء المعلمات يدويًا لاستدعاء الأداة. | النموذج المستخدم ليس لديه قدرات الوكيل |
قم بإلغاء تحديد أي أداة وقم بتحميل صورة | محادثة بالصور | استخدم نماذج متعددة الوسائط مثل qwen-vl-chat |
لمزيد من الميزات والتحديثات، يرجى تجربة النشر الفعلي.
يدعم هذا المشروع بالفعل نماذج اللغات الكبيرة مفتوحة المصدر ونماذج التضمين السائدة في السوق، مثل GLM-4-Chat وQwen2-Instruct، وتتطلب هذه النماذج من المستخدمين بدء إطار نشر النموذج بأنفسهم والوصول إلى المشروع عن طريق تعديل معلومات التكوين لهذا المشروع أطر نشر النموذج المحلي المدعومة هي كما يلي:
إطار نشر النموذج | زينفيرنس | LocalAI | أولاما | دردشة سريعة |
---|---|---|---|---|
محاذاة واجهة OpenAI API | ✅ | ✅ | ✅ | ✅ |
تسريع محركات الاستدلال | GPTQ، GGML، vLLM، TensorRT، mlx | جي بي تي كيو، جي جي إم إل، vLLM، تنسور آر تي | جيجوف، جي جي إم إل | vLLM |
نوع نموذج الوصول | ماجستير في القانون، التضمين، إعادة الترتيب، تحويل النص إلى صورة، الرؤية، الصوت | ماجستير في القانون، التضمين، إعادة الترتيب، تحويل النص إلى صورة، الرؤية، الصوت | ماجستير في إدارة الأعمال، تحويل النص إلى صورة، الرؤية | ماجستير في الرؤية |
استدعاء الوظيفة | ✅ | ✅ | ✅ | / |
المزيد من دعم النظام الأساسي (وحدة المعالجة المركزية والمعادن) | ✅ | ✅ | ✅ | ✅ |
غير متجانسة | ✅ | ✅ | / | / |
تَجَمَّع | ✅ | ✅ | / | / |
رابط الوثيقة التشغيلية | التوثيق | وثائق الذكاء الاصطناعي المحلي | توثيق أولاما | توثيق الدردشة السريعة |
النماذج المتاحة | يدعم Xinference النماذج بالفعل | LocalAI يدعم بالفعل النماذج | Olma يدعم النماذج بالفعل | يدعم FastChat النماذج بالفعل |
بالإضافة إلى إطار تحميل النموذج المحلي المذكور أعلاه، يوفر المشروع أيضًا دعمًا للوصول إلى إطار عمل One API إلى واجهات برمجة التطبيقات عبر الإنترنت، بما في ذلك OpenAI ChatGPT وAzure OpenAI API وAnthropic Claude وZhipu Qingyan وBaichuan وغيرها من واجهات برمجة التطبيقات (API) شائعة الاستخدام عبر الإنترنت يستخدم.
ملحوظة
حول تحميل نماذج Xinference المحلية: سيتم تنزيل نماذج Xinference المضمنة تلقائيًا إذا كنت تريد تحميل النموذج الذي تم تنزيله محليًا، فيمكنك تنفيذ streamlit run xinference_manager.py
في دليل أدوات المشروع/model_loaders بعد بدء خدمة Xinference مطالبات الصفحة: ما عليك سوى تحديد النموذج لتعيين المسار المحلي.
فيما يتعلق بالبرمجيات، يدعم هذا المشروع الاستخدام في بيئة Python 3.8-3.11 وتم اختباره في أنظمة التشغيل Windows وmacOS وLinux.
فيما يتعلق بالأجهزة، منذ أن تم تعديل الإصدار 0.3.0 لدعم الوصول إلى أطر نشر نماذج مختلفة، يمكن استخدامه في ظل ظروف أجهزة مختلفة مثل وحدة المعالجة المركزية (CPU) ووحدة معالجة الرسومات (GPU) ووحدة المعالجة العصبية (NPU) وMPS وما إلى ذلك.
بدءًا من الإصدار 0.3.0، يوفر Langchain-Chachat طريقة تثبيت على شكل مكتبة Python لتثبيت محدد، يرجى تنفيذ ما يلي:
تثبيت النقطة langchain-chatchat -U
مهم
للتأكد من أن مكتبة Python المستخدمة هي أحدث إصدار، يوصى باستخدام مصدر Pypi الرسمي أو مصدر Tsinghua.
ملحوظة
نظرًا لأن إطار عمل نشر النموذج Xinference يحتاج إلى تثبيت مكتبة تبعية Python المقابلة عند الاتصال بـ Langchain-Chachat، فمن المستحسن استخدام طريقة التثبيت التالية عند استخدامه مع إطار عمل Xinference:
تثبيت النقطة "langchain-chatchat[xinference]" -U
بدءًا من الإصدار 0.3.0، لم تعد Langchain-Chatchat تقوم بتحميل النماذج مباشرةً بناءً على إدخال مسار النموذج المحلي من قبل المستخدم. تشمل أنواع النماذج المعنية LLM وEmbedding وReranker والنماذج متعددة الوسائط التي سيتم دعمها في المستقبل. وما إلى ذلك، تم تغييرها إلى دعم الوصول إلى أطر الاستدلال النموذجية الرئيسية المتوفرة بشكل شائع في السوق، مثل Xinference وOllama وLocalAI وFastChat وOne API وما إلى ذلك.
لذلك، يرجى التأكد من أنه قبل البدء في مشروع Langchain-Chachat، قم أولاً بتشغيل إطار عمل استدلال النموذج وتحميل النموذج المطلوب.
هنا نأخذ Xinference كمثال، يرجى الرجوع إلى وثائق Xinference لنشر إطار العمل وتحميل النموذج.
تحذير
لتجنب تعارض التبعيات، يرجى وضع أطر عمل Langchain-Chachat ونشر النماذج مثل Xinference في بيئات Python الافتراضية المختلفة، مثل conda وvenv وvirtualenv وما إلى ذلك.
بدءًا من الإصدار 0.3.1، يستخدم Langchain-Chachat ملفات yaml
المحلية للتكوين، ويمكن للمستخدمين عرض المحتويات وتعديلها مباشرةً، وسيتم تحديث الخادم تلقائيًا دون إعادة التشغيل.
قم بتعيين الدليل الجذر حيث يقوم Chatchat بتخزين ملفات التكوين وملفات البيانات (اختياري)
# على Linux أو macosexport CHATCHAT_ROOT=/path/to/chatchat_data # على windowsset CHATCHAT_ROOT=/path/to/chatchat_data
إذا لم يتم تعيين متغير البيئة هذا، فسيتم استخدام الدليل الحالي تلقائيًا.
إجراء التهيئة
الحرف الأول للدردشة
يقوم هذا الأمر بما يلي:
إنشاء كافة أدلة البيانات المطلوبة
نسخ محتوى قاعدة المعرفة للعينات
قم بإنشاء ملف تكوين yaml
الافتراضي
تعديل ملف التكوين
تكوين النموذج (model_settings.yaml)
تحتاج إلى إجراء تكوين الوصول إلى النموذج وفقًا لإطار عمل الاستدلال للنموذج المحدد في الخطوة 2. إطار عمل الاستدلال للنموذج وتحميل النموذج والنموذج الذي تم تحميله للحصول على التفاصيل، راجع التعليقات الموجودة في model_settings.yaml
. قم بتعديل المحتويات التالية بشكل أساسي:
# اسم LLM الافتراضي DEFAULT_LLM_MODEL: qwen1.5-chat # اسم التضمين الافتراضي DEFAULT_EMBEDDING_MODEL: bge-large-zh-v1.5 # قم بتغيير مفاتيح `llm_model, action_model` في `LLM_MODEL_CONFIG` إلى نموذج LLM المطابق # موجود قم بتعديل معلومات النظام الأساسي للنموذج المقابل في `MODEL_PLATFORMS`
تكوين مسار قاعدة المعرفة (basic_settings.yaml) (اختياري)
توجد قاعدة المعرفة الافتراضية في CHATCHAT_ROOT/data/knowledge_base
إذا كنت تريد وضع قاعدة المعرفة في موقع مختلف، أو تريد الاتصال بقاعدة معارف موجودة، فيمكنك تعديل الدليل المقابل هنا.
# مسار التخزين الافتراضي لقاعدة المعرفة KB_ROOT_PATH: D:chatchat-testdataknowledge_base # مسار التخزين الافتراضي لقاعدة البيانات. إذا كنت تستخدم sqlite، فيمكنك تعديل DB_ROOT_PATH مباشرةً؛ وإذا كنت تستخدم قواعد بيانات أخرى، فيرجى تعديل SQLALCHEMY_DATABASE_URI مباشرةً. DB_ROOT_PATH: D:chatchat-testdataknowledge_baseinfo.db # اتصال قاعدة بيانات معلومات قاعدة المعرفة URI SQLALCHEMY_DATABASE_URI: sqlite:///D:chatchat-testdataknowledge_baseinfo.db
تكوين قاعدة المعرفة (kb_settings.yaml) (اختياري)
يتم استخدام قاعدة معارف FAISS
افتراضيًا إذا كنت تريد الاتصال بأنواع أخرى من قواعد المعرفة، فيمكنك تعديل DEFAULT_VS_TYPE
و kbs_config
.
تحذير
قبل تهيئة قاعدة المعرفة، يرجى التأكد من بدء إطار عمل الاستدلال النموذجي ونموذج embedding
المقابل، وإكمال تكوين الوصول إلى النموذج وفقًا للخطوة 3 أعلاه.
دردشة كيلو بايت -r
لمزيد من الوظائف، راجع chatchat kb --help
يظهر السجل التالي يشير إلى النجاح:
----------------------------------------------------------------------------------------------------
知识库名称 :samples
知识库类型 :faiss
向量模型: :bge-large-zh-v1.5
知识库路径 :/root/anaconda3/envs/chatchat/lib/python3.11/site-packages/chatchat/data/knowledge_base/samples
文件总数量 :47
入库文件数 :42
知识条目数 :740
用时 :0:02:29.701002
----------------------------------------------------------------------------------------------------
总计用时 :0:02:33.414425
ملحوظة
الأسئلة المتداولة حول تهيئة قاعدة المعرفة
تحدث هذه المشكلة غالبًا في البيئات الافتراضية المنشأة حديثًا ويمكن التأكد من ذلك عن طريق:
from unstructured.partition.auto import partition
إذا كانت العبارة عالقة ولا يمكن تنفيذها، فيمكنك تنفيذ الأمر التالي:
pip uninstall python-magic-bin# تحقق من إصدار الحزمة التي تم إلغاء تثبيتها pip install 'python-magic-bin=={version}'
ثم اتبع الإرشادات الموجودة في هذا القسم لإعادة إنشاء قاعدة المعرفة.
بدء الدردشة -أ
عند ظهور الواجهة التالية، يكون بدء التشغيل ناجحًا:
تحذير
نظرًا لأن عنوان الاستماع الافتراضي DEFAULT_BIND_HOST
الذي تم تكوينه بواسطة chatchat هو 127.0.0.1، فلا يمكن الوصول إليه من خلال عناوين IP أخرى.
إذا كنت تريد الوصول عبر عنوان IP الخاص بالجهاز (مثل نظام Linux)، فستحتاج إلى تغيير عنوان الاستماع إلى 0.0.0.0 في basic_settings.yaml
.
لتكوين محادثة قاعدة البيانات، يرجى الانتقال هنا للحصول على تعليمات تكوين محادثة قاعدة البيانات.
يرجى الرجوع إلى دليل التطوير لتثبيت التعليمات البرمجية المصدر ونشرها.
عامل ميناء سحب صورة الدردشة/دردشة:0.3.1.3-93e2c87-20240829 عامل ميناء سحب ccr.ccs.tencentyun.com/langchain-chatchat/chatchat:0.3.1.3-93e2c87-20240829 # مرآة محلية
مهم
يوصى بشدة: استخدم docker-compose للنشر، يرجى الرجوع إلى README_docker للحصول على التفاصيل
لقد تغيرت بنية 0.3.x كثيرًا، ويوصى بشدة بإعادة النشر وفقًا للوثائق. لا يضمن الدليل التالي التوافق والنجاح بنسبة 100%. تذكر عمل نسخة احتياطية من البيانات المهمة مسبقًا!
اتبع أولاً خطوات安装部署
لتكوين بيئة التشغيل وتعديل ملف التكوين.
انسخ دليل Knowledge_base للمشروع 0.2.x إلى دليل DATA
الذي تم تكوينه
2023年4月
: تم إصدار Langchain-ChatGLM 0.1.0
، لدعم الأسئلة والأجوبة في قاعدة المعرفة المحلية بناءً على نموذج ChatGLM-6B.
2023年8月
: تمت إعادة تسمية Langchain-ChatGLM
Langchain-Chatchat
، وتم إصدار الإصدار 0.2.0
، باستخدام fastchat
كحل لتحميل النماذج، ودعم المزيد من النماذج وقواعد البيانات.
2023年10月
: تم إصدار Langchain-Chatchat 0.2.5
، وإطلاق محتوى الوكيل، وفاز المشروع مفتوح المصدر بالجائزة الثالثة في الهاكاثون الذي أقامه Founder Park & Zhipu AI & Zilliz
.
2023年12月
: حصل مشروع Langchain-Chatchat
مفتوح المصدر على أكثر من 20 ألف نجم.
2024年6月
: تم إصدار Langchain-Chatchat 0.3.0
، ليقدم هيكلًا جديدًا للمشروع.
دعونا نتطلع إلى قصة الدردشة المستقبلية ...
يتبع رمز هذا المشروع بروتوكول Apache-2.0.
?مجموعة اتصالات مشروع Langchain-Chachat WeChat إذا كنت مهتمًا أيضًا بهذا المشروع، فنحن نرحب بك للانضمام إلى الدردشة الجماعية للمشاركة في المناقشة والتبادل.
?الحساب العام الرسمي لمشروع Langchain-Chachat، مرحبًا بك لمسح رمز الاستجابة السريعة للمتابعة.
إذا كان هذا المشروع مفيدًا لبحثك، فيرجى ذكر لنا:
@software{langchain_chatchat, title = {{langchain-chatchat}}, author = {Liu, Qian and Song, Jinke, and Huang, Zhiguo, and Zhang, Yuxuan, and glide-the, and liunux4odoo}, year = 2024, journal = {GitHub repository}, publisher = {GitHub}, howpublished = {url{https://github.com/chatchat-space/Langchain-Chatchat}} }