نحن نصمم للمطورين الذين يحتاجون إلى طبقة بيانات موثوقة وجاهزة للإنتاج لتطبيقات الذكاء الاصطناعي
تطبق Cognee خطوط أنابيب ECL (استخراج وCognify وتحميل) قابلة للتطوير تسمح لك بالربط البيني واسترداد المحادثات السابقة والمستندات والنسخ الصوتي مع تقليل الهلوسة وجهود المطورين والتكلفة. جربه في دفتر ملاحظات Google Colab أو قم بإلقاء نظرة على وثائقنا
إذا كانت لديك أسئلة، انضم إلى مجتمع Discord الخاص بنا
نقطة تثبيت الكوني
تثبيت النقطة "cognee[postgres]"
أضف الشعر كوني
إضافة الشعر cognee -E postgres
import os os.environ["LLM_API_KEY"] = "YOUR OPENAI_API_KEY"
أو
import cognee cognee.config.set_llm_api_key("YOUR_OPENAI_API_KEY")
يمكنك أيضًا تعيين المتغيرات عن طريق إنشاء ملف .env، وهذا هو القالب الخاص بنا. لاستخدام مقدمي خدمات LLM مختلفين، لمزيد من المعلومات، راجع وثائقنا
إذا كنت تستخدم الشبكة، فقم بإنشاء حساب على Graphistry لتصور النتائج:
cognee.config.set_graphistry_config({ "username": "YOUR_USERNAME", "password": "YOUR_PASSWORD" })
(اختياري) لتشغيل واجهة المستخدم، انتقل إلى دليل cognee-frontend وقم بتشغيل:
npm run dev
أو قم بتشغيل كل شيء في حاوية عامل ميناء:
docker-compose up
ثم انتقل إلى المضيف المحلي: 3000
إذا كنت تريد استخدام Cognee مع PostgreSQL، فتأكد من تعيين القيم التالية في ملف .env:
DB_PROVIDER=postgres DB_HOST=postgres DB_PORT=5432 DB_NAME=cognee_db DB_USERNAME=cognee DB_PASSWORD=cognee
أولاً، انسخ .env.template
إلى .env
وأضف مفتاح OpenAI API إلى الحقل LLM_API_KEY.
سيقوم هذا البرنامج النصي بتشغيل خط الأنابيب الافتراضي:
import cogneeimport asynciofrom cognee.api.v1.search import SearchTypeasync def main():# أنشئ قائمة نظيفة لـ cognee - إعادة تعيين البيانات وطباعة حالة النظام ("إعادة تعيين بيانات cognee...") انتظر cognee.prune.prune_data()await cognee.prune.prune_system(metadata=True)print("اكتملت إعادة تعيين البيانات.n")# سيتم إنشاء الرسم البياني للمعرفة بالكوني بناءً على هذا النص text = """ تعد معالجة اللغة الطبيعية (NLP) مجالًا فرعيًا متعدد التخصصات لعلوم الكمبيوتر واسترجاع المعلومات. """print("Adding text to cognee:")print(text.strip( )) # أضف النص، واجعله متاحًا لـ cognifyawait cognee.add(text)print("تم إضافة النص بنجاح.n") print("تشغيل cognify لإنشاء المعرفة" graph...n")print("تعرف على خطوات العملية:")print("1. تصنيف المستند: تحديد نوع وفئة النص المُدخل.")print("2. التحقق من الأذونات: التأكد من أن المستخدم لديه الحقوق اللازمة لمعالجة النص.")print("3. استخراج أجزاء النص: تقسيم النص إلى جمل أو عبارات للتحليل.")print("4. إضافة نقاط البيانات: تخزين الأجزاء المستخرجة للمعالجة.")print("5. إنشاء رسم بياني معرفي: استخراج الكيانات والعلاقات لتشكيل رسم بياني معرفي.")print("6. تلخيص النص: إنشاء ملخصات موجزة للمحتوى للسرعة Insights.n") # استخدم LLMs وcognee لإنشاء المعرفة graphawait cognee.cognify()print("عملية Cognify Complete.n") query_text = 'أخبرني عن NLP'print(f"بحث cognee عن الرؤى مع الاستعلام: '{query_text}'")# استعلام cognee عن الرؤى حول textsearch_results المضافة = انتظار cognee.search(SearchType.INSIGHTS, query_text=query_text) print("نتائج البحث:" )# عرض النتائج لنص_النتيجة في نتائج_البحث:print(result_text)# إخراج المثال: # ({'id': UUID('bc338a39-64d6-549a-acec-da60846dd90d'), 'updated_at': datetime.datetime(2024, 11, 21, 12, 23, 1, 211808, tzinfo=datetime.timezone.utc), 'name': 'معالجة اللغة الطبيعية', 'description': 'An حقل فرعي متعدد التخصصات لعلوم الكمبيوتر واسترجاع المعلومات.'}, {'relationship_name': 'is_a_subfield_of', 'source_node_id': UUID('bc338a39-64d6-549a-acec-da60846dd90d'), 'target_node_id': UUID('6218dbab-eb6a-5759-a864-b3419755ffe0'), 'updated_at': datetime.datetime(2024, 11, 21, 12, 23, 15, 473137, tzinfo=datetime.timezone.utc)}, {'id ': UUID('6218dbab-eb6a-5759-a864-b3419755ffe0'), 'updated_at': datetime.datetime(2024, 11, 21, 12, 23, 1, 211808, tzinfo=datetime.timezone.utc), 'name': 'علم الحاسوب'، 'وصف': 'دراسة الحساب ومعالجة المعلومات.'}) # (...)## يمثل العقد والعلاقات في الرسم البياني المعرفي:# - العنصر الأول هو العقدة المصدر (على سبيل المثال، 'معالجة اللغة الطبيعية').# - العنصر الثاني هي العلاقة بين العقد (على سبيل المثال، 'is_a_subfield_of').# - العنصر الثالث هو العقدة المستهدفة (على سبيل المثال، 'علوم الكمبيوتر').if __name__ == '__main__':asyncio.run(main())
عند تشغيل هذا البرنامج النصي، سترى رسائل خطوة بخطوة في وحدة التحكم تساعدك على تتبع تدفق التنفيذ وفهم ما يفعله البرنامج النصي في كل مرحلة. توجد نسخة من هذا المثال هنا: examples/python/simple_example.py
يتكون إطار عمل cognee من المهام التي يمكن تجميعها في خطوط أنابيب. يمكن أن تكون كل مهمة جزءًا مستقلاً من منطق الأعمال، ويمكن ربطها بمهام أخرى لتكوين مسار. تعمل هذه المهام على الاحتفاظ بالبيانات في مخزن الذاكرة الخاص بك مما يتيح لك البحث عن السياق ذي الصلة للمحادثات السابقة أو المستندات أو أي بيانات أخرى قمت بتخزينها.
فيما يلي مثال لكيفية البحث عن مسار الإدراك الافتراضي:
لإعداد البيانات لتشغيل خط الأنابيب، نحتاج أولاً إلى إضافتها إلى متجرنا التعريفي وتطبيعها:
ابدأ بـ:
text = """Natural language processing (NLP) is an interdisciplinary subfield of computer science and information retrieval""" await cognee.add(text) # Add a new piece of information
في الخطوة التالية نقوم بعمل مهمة. يمكن أن تكون المهمة أي منطق عمل نحتاجه، ولكن الجزء المهم هو أنه يجب تغليفه في وظيفة واحدة.
نعرض هنا مثالاً على إنشاء مصنف LLM ساذج يأخذ نموذج Pydantic ثم يقوم بتخزين البيانات في كل من الرسم البياني ومخازن المتجهات بعد تحليل كل قطعة. لقد قدمنا مقتطفًا فقط كمرجع، ولكن لا تتردد في التحقق من التنفيذ في الريبو الخاص بنا.
async def chunk_naive_llm_classifier( data_chunks: list[DocumentChunk], classification_model: Type[BaseModel] ): # Extract classifications asynchronously chunk_classifications = await asyncio.gather( *(extract_categories(chunk.text, classification_model) for chunk in data_chunks) ) # Collect classification data points using a set to avoid duplicates classification_data_points = { uuid5(NAMESPACE_OID, cls.label.type) for cls in chunk_classifications } | { uuid5(NAMESPACE_OID, subclass.value) for cls in chunk_classifications for subclass in cls.label.subclass } vector_engine = get_vector_engine() collection_name = "classification" # Define the payload schema class Keyword(BaseModel): uuid: str text: str chunk_id: str document_id: str # Ensure the collection exists and retrieve existing data points if not await vector_engine.has_collection(collection_name): await vector_engine.create_collection(collection_name, payload_schema=Keyword) existing_points_map = {} else: existing_points_map = {} return data_chunks ...
لدينا العديد من المهام التي يمكن استخدامها في مساراتك، ويمكنك أيضًا إنشاء مهامك لتناسب منطق عملك.
بمجرد الانتهاء من مهامنا، فقد حان الوقت لتجميعها في سلسلة. يوضح هذا المقتطف المبسط كيف يمكن إضافة المهام إلى المسار، وكيف يمكنهم تمرير المعلومات من واحد إلى آخر.
Task( chunk_naive_llm_classifier, classification_model = cognee_config.classification_model, ) pipeline = run_tasks(tasks, documents)
لرؤية رمز العمل، تحقق من خط الأنابيب الافتراضي cognee.api.v1.cognify في الريبو الخاص بنا.
يدعم Cognee مجموعة متنوعة من الأدوات والخدمات لعمليات مختلفة:
وحدات : Cognee وحدات بطبيعتها، وذلك باستخدام المهام المجمعة في خطوط الأنابيب
الإعداد المحلي : بشكل افتراضي، يعمل LanceDB محليًا مع NetworkX وOpenAI.
متاجر المتجهات : يدعم Cognee LanceDB وQdrant وPGVector وWeaviate لتخزين المتجهات.
نماذج اللغة (LLMs) : يمكنك استخدام Anyscale أو Ollama كموفر LLM الخاص بك.
متاجر الرسوم البيانية : بالإضافة إلى NetworkX، يتم دعم Neo4j أيضًا لتخزين الرسوم البيانية.
إدارة المستخدم : إنشاء رسوم بيانية للمستخدم الفردي وإدارة الأذونات
تحقق من دفتر الملاحظات التجريبي الخاص بنا هنا
الرجاء مراجعة دليل البدء السريع لـ cognee للحصول على معلومات التكوين المهمة.
عامل ميناء يؤلف
من فضلك قم بمراجعة دليل تطوير الكوجني للحصول على معلومات بيتا الهامة وتعليمات الاستخدام.
نقطة تثبيت الكوني
<style> الجدول { العرض: 100%; } </نمط>
اسم | يكتب | الحالة الحالية | القضايا المعروفة |
---|---|---|---|
قدررانت | ناقل | مستقر ✅ | |
ويفيات | ناقل | مستقر ✅ | |
لانس دي بي | ناقل | مستقر ✅ | |
Neo4j | رسم بياني | مستقر ✅ | |
نتورككس | رسم بياني | مستقر ✅ | |
FalkorDB | المتجهات/الرسم البياني | غير مستقر | |
PGVector | ناقل | غير مستقر | تقوم Postgres DB بإرجاع خطأ المهلة |