Cognee - منصة ذاكرة وكيل AI
Cognee هي منصة ذاكرة AI مفتوحة المصدر تعطي الوكلاء ذاكرة طويلة الأجل دائمة عبر جلسات عمل باستخدام رسم بياني للمعرفة يتم استضافته ذاتيًا. فكرتها المحددة هي خط أنابيب ECL — استخراج وتقنية وتحميل — الذي يستقبل المستندات والمحادثات والبيانات من العديد من المصادر ويهيكلها إلى رسم بياني للكيانات والعلاقات (خطوة “التقنية”) ويحملها في الرسم البياني ومخازن المتجهات لاسترجاع. هذا يجعل الذاكرة طبقة نشطة قابلة للاستعلام بدلاً من تفريغ متجهات مسطح.
التثبيت
| الطريقة | الأمر |
|---|
| pip | pip install cognee |
| uv | uv add cognee |
| مع الإضافات | pip install "cognee[postgres,neo4j]" |
| تعيين مفتاح LLM | export LLM_API_KEY="sk-..." |
| التحقق | python -c "import cognee; print('ok')" |
خط أنابيب ECL
| المرحلة | ما يفعله |
|---|
| الاستخراج | استقبال البيانات الخام من أكثر من 30 نوع مصدر |
| التقنية | بناء رسم بياني للمعرفة (كيانات وعلاقات) |
| التحميل | التخزين في قواعد بيانات الرسم البياني والمتجهات للاسترجاع |
| الاستعلام | الاستعلام عن الذاكرة (رسم بياني أو متجه أو هجين) |
الاستخدام الأساسي
import cognee
import asyncio
async def main():
# 1) إضافة البيانات إلى الذاكرة
await cognee.add("Nick يفضل الإجابات موجزة وسباقة.")
await cognee.add(open("notes.md").read())
# 2) بناء رسم بياني المعرفة
await cognee.cognify()
# 3) الاستعلام عن الذاكرة
results = await cognee.search("What are Nick''s preferences?")
print(results)
asyncio.run(main())
| الاستدعاء | الوصف |
|---|
cognee.add(data) | استقبال النص أو الملفات أو البيانات المهيكلة |
cognee.cognify() | معالجة البيانات المستقبلة في الرسم البياني |
cognee.search(query, ...) | الاسترجاع من الذاكرة |
cognee.prune() | إعادة تعيين/حذف مخازن الذاكرة |
أنواع البحث
| النوع | العوائد |
|---|
SearchType.GRAPH_COMPLETION | الإجابة المتجذرة في رسم البياني للمعرفة |
SearchType.RAG_COMPLETION | إجابة RAG المتجهة الكلاسيكية |
SearchType.INSIGHTS | العلاقات والرؤى بين الكيانات |
SearchType.CHUNKS | أجزاء المطابقة الخام |
SearchType.SUMMARIES | النتائج المختصرة |
from cognee import SearchType
res = await cognee.search("connections between X and Y",
query_type=SearchType.INSIGHTS)
مصادر البيانات
| الفئة | الأمثلة |
|---|
| المستندات | PDF و DOCX و Markdown والنص |
| مهيكلة | CSV و JSON وقواعس البيانات |
| المحادثات | سجل الدردشة/الرسائل |
| الرمز | ملفات المصدر/المستودعات |
الواجهات الخلفية للتخزين
| الطبقة | الخيارات |
|---|
| مخزن الرسم البياني | NetworkX (الافتراضي) و Neo4j و Kuzu |
| متجه التخزين | LanceDB (الافتراضي) و Qdrant و pgvector و Weaviate |
| العلائقية | SQLite (الافتراضي) و PostgreSQL |
| الإعدادات | تعيين عبر متغيرات البيئة / الإعدادات |
مجموعات البيانات والعديد من الاستئجار
| الميزة | الاستخدام |
|---|
| مجموعات البيانات | ذاكرة الفضاء الاسمي لكل مستخدم/مشروع |
cognee.add(data, dataset_name="user-123") | نطاق الاستقبال |
| الأذونات | تحكم الوصول إلى أقسام الذاكرة |
سير العمل الشائع
# إعطاء وكيل ذاكرة دائمة للمستخدم عبر الجلسات
await cognee.add(conversation_history, dataset_name="user-42")
await cognee.cognify()
context = await cognee.search("summarize what we know about user-42")
# حقن `context` في موجه الوكيل
# بناء رسم بياني على مجموعة مستندات للأسئلة المترابطة
for f in docs: await cognee.add(open(f).read())
await cognee.cognify()
await cognee.search("how do these documents relate?",
query_type=SearchType.INSIGHTS)
Cognee مقابل أطر عمل الذاكرة الأخرى
| الجانب | Cognee | Mem0 | Graphiti |
|---|
| النموذج | رسم بياني أصلي (ECL) | متعدد الطبقات متجه/رسم بياني/KV | رسم بياني المعرفة الزمني |
| القوة | منطق الرسم البياني المحلي أولاً | تخصيص المحادثة | الحقائق التي تتغير بمرور الوقت |
| الاستضافة الذاتية | نعم | نعم | نعم |
| الأفضل لـ | ذاكرة الرسم البياني الحساسة للخصوصية | التخصيص | المنطق الزمني |
موارد