ملحوظة
لم يعد فريق المظلة يحافظ على هذا المستودع. شكرا لدعمكم وحماسك للمشروع! إذا كنت تبحث عن حل خرقة مُدارة عالي الجودة مع التحديثات والتحسينات المستمرة ، فيرجى مراجعة مساعد Pinecone.
Canopy هو إطار عمل معزز للاسترجاع مفتوح المصدر (RAG) ومحرك السياق المبني على أعلى قاعدة بيانات ناقل Pinecone. تمكنك Canopy من تجربة التطبيقات وإنشاءها بسرعة وسهولة باستخدام RAG. ابدأ في الدردشة مع المستندات أو البيانات النصية مع عدد قليل من الأوامر البسيطة.
يأخذ Canopy الرفع الثقيل لبناء تطبيقات خرقة: من تقطيع وتضمين بيانات النص الخاصة بك إلى إدارة سجل الدردشة ، وتحسين الاستعلام ، واسترجاع السياق (بما في ذلك الهندسة السريعة) ، والتوليد المعزز.
يوفر Canopy خادمًا مدمجًا قابلاً للتكوين حتى تتمكن من نشر تطبيق دردشة يعمل بالطاقة على واجهة المستخدم الخاصة بك أو الواجهة. أو يمكنك إنشاء تطبيق خرقة مخصص خاص بك باستخدام مكتبة Canopy.
يتيح لك Canopy تقييم سير عمل RAG الخاص بك باستخدام أداة دردشة تعتمد على CLI. من خلال أمر بسيط في cli Canopy ، يمكنك الدردشة بشكل تفاعلي مع بيانات النص الخاصة بك ومقارنة Rag مقابل سير العمل غير المقيد جنبًا إلى جنب.
تحقق من منشور المدونة لمعرفة المزيد ، أو رؤية برنامج تعليمي سريع هنا.

تقوم Canopy بتنفيذ سير عمل RAG الكامل لمنع الهلوسة وزيادة LLM مع بيانات النص الخاصة بك.
المظلة لها تدفقان: إنشاء قاعدة المعرفة والدردشة. في تدفق إنشاء قاعدة المعرفة ، يقوم المستخدمون بتحميل مستنداتهم وتحويلها إلى تمثيلات ذات معنى مخزنة في قاعدة بيانات ناقلات Pinecone. في تدفق الدردشة ، يتم تحسين الاستعلامات الواردة وتاريخ الدردشة لاسترداد المستندات الأكثر صلة ، ويتم الاستعلام عن قاعدة المعرفة ، ويتم إنشاء سياق ذي معنى للرد على LLM.
ChatEngine بصياغة الاستعلامات ذات الصلة إلى ContextEngine ، ثم يستخدم LLM لإنشاء استجابة على دراية.ContextEngine قاعدة KnowledgeBase الأساسية لاسترداد المستندات الأكثر صلة ، ثم يقوم بصياغة سياق نصي متماسك لاستخدامه كموجه لمجلة LLM.يمكن العثور على مزيد من المعلومات حول استخدام المكتبة الأساسية في وثائق المكتبة
Canopy Server - هذا هو خدمة ويب يلفت مكتبة Canopy Core وتكشفها كأو قبل API REST. تم تصميم الخادم فوق Fastapi و Uvicorn و Gunicorn ويمكن نشره بسهولة في الإنتاج. يأتي الخادم أيضًا مع واجهة مستخدم Swagger مدمجة لسهولة الاختبار والتوثيق. بعد بدء تشغيل الخادم ، يمكنك الوصول إلى واجهة المستخدم Swagger على http://host:port/docs (افتراضي: http://localhost:8000/docs )
Canopy CLI - أداة تطوير مدمجة تتيح للمستخدمين إعداد خادم المظلة الخاص بهم واختبار تكوينه.
مع ثلاثة أوامر CLI فقط ، يمكنك إنشاء خادم مظلة جديد ، وتحميل المستندات الخاصة بك ، ثم التفاعل مع chatbot باستخدام تطبيق الدردشة المدمج مباشرة من المحطة. يتيح chatbot المدمج أيضًا مقارنة الاستجابات المملوءة بالخرق مقابل chatbot الأصلي LLM.
python3 -m venv canopy-env
source canopy-env/bin/activateيمكن العثور على مزيد من المعلومات حول البيئات الافتراضية هنا
pip install canopy-sdk| اسم | وصف |
|---|---|
grpc | لإلغاء تأمين بعض تحسينات الأداء من خلال العمل مع إصدار GRPC من عميل Pinecone |
torch | لتمكين التضمينات التي توفرها محولات الجملة |
transformers | إذا كنت تستخدم anyscale LLMS ، فمن المستحسن استخدام رمز LLamaTokenizer الذي يتطلب المحولات كاعتماد |
cohere | لاستخدام Cohere Reranker أو/و Cohere LLM |
qdrant | لاستخدام qdrant كقاعدة معرفة بديلة |
export PINECONE_API_KEY= " <PINECONE_API_KEY> "
export OPENAI_API_KEY= " <OPENAI_API_KEY> "
export INDEX_NAME= " <INDEX_NAME> "| اسم | وصف | كيف تحصل عليه؟ |
|---|---|---|
PINECONE_API_KEY | مفتاح API لـ Pinecone. تستخدم للمصادقة على خدمات pinecone لإنشاء فهارس وإدراج بيانات وحذفها والبحث عنها | سجل أو تسجيل الدخول إلى حساب Pinecone الخاص بك في وحدة التحكم. يمكنك الوصول إلى مفتاح API الخاص بك من قسم "مفاتيح API" في الشريط الجانبي من لوحة القيادة الخاصة بك |
OPENAI_API_KEY | مفتاح API لـ Openai. تستخدم للمصادقة على خدمات Openai للتضمين والدردشة API | يمكنك العثور على مفتاح API Openai هنا. قد تحتاج إلى تسجيل الدخول أو التسجيل في خدمات Openai |
INDEX_NAME | اسم مظلة فهرس Pinecone سوف يعمل مع | يمكنك اختيار أي اسم طالما أنه يتبع قيود Pinecone |
CANOPY_CONFIG_FILE | مسار ملف yaml التكوين ليتم استخدامه بواسطة خادم Canopy. | اختياري - إذا لم يتم توفيره ، سيتم استخدام التكوين الافتراضي |
يتم استخدام متغيرات البيئة الاختيارية هذه للمصادقة على الخدمات المدعومة الأخرى للتضمينات و LLMS. إذا قمت بتكوين المظلة لاستخدام أي من هؤلاء مقدمي الخدمات - ستحتاج إلى تعيين متغيرات البيئة ذات الصلة.
| اسم | وصف | كيف تحصل عليه؟ |
|---|---|---|
ANYSCALE_API_KEY | مفتاح API لأي anyscale. تستخدم للمصادقة على نقاط نهاية anyscale لـ Open Source LLMS | يمكنك تسجيل أي نقاط نهاية أي شيء والعثور على مفتاح API الخاص بك هنا |
CO_API_KEY | مفتاح API ل coere. تستخدم للمصادقة للتعامل مع الخدمات للتضمين | يمكنك العثور على مزيد من المعلومات حول التسجيل في COMERE هنا |
JINA_API_KEY | مفتاح API لجينا AI. تستخدم للمصادقة على خدمات Jinaai للتضمين والدردشة API | يمكنك العثور على مفتاح API Openai هنا. قد تحتاج إلى تسجيل الدخول أو التسجيل في خدمات Openai |
AZURE_OPENAI_ENDOINT | عنوان URL لنقطة نهاية Azure Openai التي نشرتها. | يمكنك العثور على هذا في بوابة Azure Openai تحت _keys ونقاط النهاية |
AZURE_OPENAI_API_KEY | مفتاح API لاستخدامه في نماذج Azure Openai. | يمكنك العثور على هذا في بوابة Azure Openai تحت _keys ونقاط النهاية |
OCTOAI_API_KEY | مفتاح API لـ OCTOAI. تستخدم للمصادقة على LLMs مفتوحة المصدر المقدمة في Octoai | يمكنك الاشتراك في Octoai والعثور على مفتاح API الخاص بك هنا |
canopyيجب أن يكون الإخراج مشابهًا لهذا:
Canopy: Ready
Usage: canopy [OPTIONS] COMMAND [ARGS]...
# rest of the help message في هذه البداية السريعة ، سوف نوضح لك كيفية استخدام المظلة لإنشاء نظام إجابة أسئلة بسيط باستخدام RAG (الجيل المعزز للاسترجاع).
كإعداد لمرة واحدة ، تحتاج Canopy إلى إنشاء فهرس Pinecone جديد تم تكوينه للعمل مع Canopy ، فقط تشغيل:
canopy new واتبع تعليمات CLI. سيكون للفهرس الذي سيتم إنشاؤه بادئة canopy--<INDEX_NAME> .
عليك فقط القيام بهذه العملية مرة واحدة لكل فهرس المظلة الذي تريد إنشاؤه.
لمعرفة المزيد حول فهارس Pinecone وكيفية إدارتها ، يرجى الرجوع إلى الدليل التالي: فهم الفهارس
يمكنك تحميل البيانات في فهرس المظلة باستخدام الأمر:
canopy upsert /path/to/data_directory
# or
canopy upsert /path/to/data_directory/file.parquet
# or
canopy upsert /path/to/data_directory/file.jsonl
# or
canopy upsert /path/to/directory_of_txt_files/
# ... تدعم Canopy الملفات بتنسيقات jsonl و parquet و csv . بالإضافة إلى ذلك ، يمكنك تحميل ملفات بيانات النص العادي بتنسيق .txt . في هذه الحالة ، سيتم التعامل مع كل ملف كوثيقة واحدة. سيكون معرف المستند هو اسم الملف ، وسيكون المصدر هو المسار الكامل للملف.
ملاحظة : يتم استخدام حقول المستندات في تدفق الخرقة ويجب أن تمتثل للمخطط التالي:
+----------+--------------+--------------+---------------+
| id(str) | text(str) | source | metadata |
| | | Optional[str] | Optional[dict] |
| ----------+--------------+--------------+--------------- |
| " id1 " | " some text " | " some source " | { " key " : " val " } |
+----------+--------------+--------------+---------------+
# id - unique identifier for the document
#
# text - the text of the document, in utf-8 encoding.
#
# source - the source of the document, can be any string, or null.
# ** this will be used as a reference in the generated context. **
#
# metadata - optional metadata for the document, for filtering or additional context.
# Dict[str, Union[str, int, float, List[str]]]يعرض دفتر الملاحظات هذا كيفية إنشاء مجموعة بيانات في هذا التنسيق ، اتبع الإرشادات الواردة في CLI عند تحميل بياناتك.
نصيحة
إذا كنت ترغب في فصل بياناتك إلى مساحات الأسماء ، فيمكنك استخدام خيار --namespace أو متغير بيئة INDEX_NAMESPACE .
يعرض خادم Canopy وظائف Canopy عبر واجهة برمجة تطبيقات REST. وهي ، يتيح لك تحميل المستندات واسترداد المستندات ذات الصلة لاستعلام معين والدردشة مع بياناتك. يعرض الخادم نقطة نهاية A /chat.completion التي يمكن دمجها بسهولة مع أي تطبيق دردشة. لبدء الخادم ، قم بتشغيل:
canopy startالآن ، يجب مطالبتك برسالة Uvicorn القياسية التالية:
...
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
هذا كل شيء! يمكنك الآن البدء في استخدام خادم Canopy مع أي تطبيق دردشة يدعم A /chat.completion نقطة نهاية.
سيحتفظ أمر بدء المظلة بالمحطة (الاستخدام الموصى به). إذا كنت ترغب في تشغيل الخادم في الخلفية ، فيمكنك استخدام الأمر التالي -
nohup canopy start &
لإيقاف الخادم ، ما عليك سوى الضغط على CTRL+C في المحطة التي بدأت فيها.
يأتي CLI's CLI مع تطبيق دردشة مدمج يتيح لك الدردشة بشكل تفاعلي مع بياناتك النصية ومقارنة RAG مقابل سير العمل غير المقيد جنبًا إلى جنب لتقييم النتائج
في نافذة طرفية جديدة ، قم بتعيين متغيرات البيئة المطلوبة ثم قم بتشغيلها:
canopy chatهذا سوف يفتح واجهة الدردشة في المحطة الخاصة بك. يمكنك طرح الأسئلة وسيحاول chatbot المملوءة بالخروج الإجابة عليها باستخدام البيانات التي قمت بتحميلها.
لمقارنة استجابة الدردشة مع وبدون خرقة ، استخدم العلم --no-rag
ملاحظة : يتم دعم هذه الطريقة فقط مع Openai في الوقت الحالي.
canopy chat --no-ragسيؤدي ذلك إلى فتح نافذة واجهة دردشة مماثلة ، ولكن سيظهر كل من ردود القشرة وغير المتجانسة جنبًا إلى جنب.
شكرا لك على النظر في المساهمة في المظلة! يرجى الاطلاع على إرشاداتنا المساهمة لمزيد من المعلومات.
إذا كان لديك بالفعل تطبيق يستخدم API Openai ، فيمكنك ترحيله إلى المظلة ببساطة عن طريق تغيير نقطة نهاية API إلى http://host:port/v1 ، على سبيل المثال مع التكوين الافتراضي:
from openai import OpenAI
client = OpenAI ( base_url = "http://localhost:8000/v1" )إذا كنت ترغب في استخدام مساحة اسم فهرس محددة للدردشة ، فيمكنك فقط إلحاق مساحة الاسم إلى نقطة نهاية API:
from openai import OpenAI
client = OpenAI ( base_url = "http://localhost:8000/v1/my-namespace" ) تستخدم Canopy fastapi كإطار الويب و Uvicorn كخادم ASGI.
لاستخدام المظلة في الإنتاج ، يوصى باستخدام صورة Docker's Canopy ، المتوفرة على حزم GitHub ، لتلبية احتياجات الإنتاج.
للحصول على إرشادات حول نشر المظلة على منصة Google Cloud (GCP) ، راجع المثال المقدم في نشر وثائق GCP.
بدلاً من ذلك ، يمكنك استخدام Gunicorn كـ WSGI من فئة الإنتاج ، والمزيد من التفاصيل هنا.
قم بتعيين متغيرات PORT المطلوب و WORKER_COUNT Envrionment ، وابدأ الخادم بـ:
gunicorn canopy_server.app:app --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0: $PORT --workers $WORKER_COUNT مهم
يتفاعل الخادم مع خدمات مثل Pinecone و Openai باستخدام بيانات اعتماد المصادقة الخاصة بك. عند نشر الخادم على مزود استضافة المواقع العامة ، يوصى بتمكين آلية المصادقة ، بحيث لا يأخذ الخادم سوى طلبات من المستخدمين المصادقين.