Home
Login

LightRAG هو إطار عمل بسيط وسريع للاسترجاع المعزز بالجيل، يدعم أوضاع استعلام متعددة وبناء الرسوم البيانية المعرفية.

MITPython 17.7kHKUDS Last Updated: 2025-06-19

LightRAG - إطار عمل بسيط وسريع لإنشاء مُعزَّز بالاسترجاع

نظرة عامة على المشروع

LightRAG هو إطار عمل "بسيط وسريع لإنشاء مُعزَّز بالاسترجاع"، تم تطويره بواسطة كلية علوم البيانات بجامعة هونغ كونغ (HKUDS). يهدف هذا المشروع إلى تزويد المطورين بمجموعة كاملة من حلول RAG (الإنشاء المُعزَّز بالاسترجاع)، ودعم فهرسة المستندات، وبناء الرسوم البيانية المعرفية، ووظائف الأسئلة والأجوبة الذكية.

الميزات الأساسية

🔍 أوضاع استرجاع متعددة

يدعم LightRAG خمسة أوضاع استرجاع مختلفة، لتلبية احتياجات السيناريوهات المختلفة:

  • وضع naive: بحث أساسي، لا يستخدم تقنيات متقدمة
  • وضع local: يركز على استرجاع المعلومات ذات الصلة بالسياق
  • وضع global: يستخدم المعرفة الشاملة للاسترجاع
  • وضع hybrid: يجمع بين طرق الاسترجاع المحلية والعالمية
  • وضع mix: يدمج الرسوم البيانية المعرفية والاسترجاع المتجهي، لتوفير الإجابات الأكثر شمولاً

🎯 بناء الرسوم البيانية المعرفية

  • استخراج الكيانات والعلاقات تلقائيًا من المستندات
  • دعم العرض المرئي للرسوم البيانية المعرفية
  • توفير وظائف الإضافة والحذف والتعديل والاستعلام للكيانات والعلاقات
  • دعم دمج الكيانات وإزالة التكرارات

🚀 دعم مرن للنماذج

  • نماذج OpenAI: دعم سلسلة نماذج OpenAI مثل GPT-4
  • نماذج Hugging Face: دعم النماذج مفتوحة المصدر المنشورة محليًا
  • نماذج Ollama: دعم النماذج الكمية التي تعمل محليًا
  • تكامل LlamaIndex: دعم المزيد من مزودي النماذج من خلال LlamaIndex

📊 خلفيات تخزين متنوعة

  • قواعد بيانات المتجهات: دعم Faiss و PGVector وما إلى ذلك
  • قواعد بيانات الرسوم البيانية: دعم Neo4j و PostgreSQL + Apache AGE
  • التخزين الافتراضي: تخزين الرسوم البيانية NetworkX المدمج

طريقة التثبيت

التثبيت من PyPI

pip install "lightrag-hku[api]"

التثبيت من المصدر

# إنشاء بيئة Python افتراضية (إذا لزم الأمر)
# التثبيت في وضع قابل للتحرير، بما في ذلك دعم API
pip install -e ".[api]"

مثال على الاستخدام الأساسي

التهيئة والاستعلام

import os
import asyncio
from lightrag import LightRAG, QueryParam
from lightrag.llm.openai import gpt_4o_mini_complete, openai_embed
from lightrag.kg.shared_storage import initialize_pipeline_status
from lightrag.utils import setup_logger

setup_logger("lightrag", level="INFO")

async def initialize_rag():
    rag = LightRAG(
        working_dir="your/path",
        embedding_func=openai_embed,
        llm_model_func=gpt_4o_mini_complete
    )
    await rag.initialize_storages()
    await initialize_pipeline_status()
    return rag

def main():

    rag = asyncio.run(initialize_rag())
    

    rag.insert("Your text")
    

    result = rag.query(
        "What are the top themes in this story?",
        param=QueryParam(mode="mix")
    )
    print(result)

if __name__ == "__main__":
    main()

وظائف متقدمة

دعم سجل المحادثة

# Create conversation history
conversation_history = [
    {"role": "user", "content": "What is the main character's attitude towards Christmas?"},
    {"role": "assistant", "content": "At the beginning of the story, Ebenezer Scrooge has a very negative attitude towards Christmas..."},
    {"role": "user", "content": "How does his attitude change?"}
]

# Create query parameters with conversation history
query_param = QueryParam(
    mode="mix",  # or any other mode: "local", "global", "hybrid"
    conversation_history=conversation_history,  # Add the conversation history
    history_turns=3  # Number of recent conversation turns to consider
)

# Make a query that takes into account the conversation history
response = rag.query(
    "What causes this change in his character?",
    param=query_param
)

إدارة الرسوم البيانية المعرفية

# Create new entity
entity = rag.create_entity("Google", {
    "description": "Google is a multinational technology company specializing in internet-related services and products.",
    "entity_type": "company"
})

# Create another entity
product = rag.create_entity("Gmail", {
    "description": "Gmail is an email service developed by Google.",
    "entity_type": "product"
})

# Create relation between entities
relation = rag.create_relation("Google", "Gmail", {
    "description": "Google develops and operates Gmail.",
    "keywords": "develops operates service",
    "weight": 2.0
})

LightRAG Server

وظائف واجهة المستخدم الرسومية

يوفر LightRAG Server واجهة ويب كاملة، بما في ذلك:

  • إدارة فهرسة المستندات
  • تصور الرسوم البيانية المعرفية
  • واجهة استعلام RAG بسيطة
  • دعم تخطيط الجاذبية، واستعلام العقدة، وتصفية الرسوم البيانية الفرعية، وما إلى ذلك

واجهة برمجة التطبيقات (API)

  • توفير واجهة برمجة تطبيقات RESTful
  • التوافق مع تنسيق Ollama API
  • دعم تكامل روبوتات الدردشة AI (مثل Open WebUI)

معلمات التكوين

المعلمات الأساسية

  • working_dir: مسار دليل العمل
  • embedding_func: دالة التضمين
  • llm_model_func: دالة نموذج اللغة الكبير
  • vector_storage: نوع تخزين المتجهات
  • graph_storage: نوع تخزين الرسوم البيانية

معلمات ضبط الأداء

  • embedding_batch_size: حجم دفعة التضمين (افتراضي 32)
  • embedding_func_max_async: الحد الأقصى لعدد عمليات التضمين المتزامنة (افتراضي 16)
  • llm_model_max_async: الحد الأقصى لعدد عمليات LLM المتزامنة (افتراضي 4)
  • enable_llm_cache: ما إذا كان سيتم تمكين ذاكرة التخزين المؤقت LLM (افتراضي True)

تصدير البيانات والنسخ الاحتياطي

دعم تصدير البيانات بتنسيقات متعددة:

#Export data in CSV format
rag.export_data("graph_data.csv", file_format="csv")

# Export data in Excel sheet
rag.export_data("graph_data.xlsx", file_format="excel")

# Export data in markdown format
rag.export_data("graph_data.md", file_format="md")

# Export data in Text
rag.export_data("graph_data.txt", file_format="txt")

تتبع استخدام الرموز المميزة (Token)

أداة مدمجة لمراقبة استهلاك الرموز المميزة:

from lightrag.utils import TokenTracker

# Create TokenTracker instance
token_tracker = TokenTracker()

# Method 1: Using context manager (Recommended)
# Suitable for scenarios requiring automatic token usage tracking
with token_tracker:
    result1 = await llm_model_func("your question 1")
    result2 = await llm_model_func("your question 2")

# Method 2: Manually adding token usage records
# Suitable for scenarios requiring more granular control over token statistics
token_tracker.reset()

rag.insert()

rag.query("your question 1", param=QueryParam(mode="naive"))
rag.query("your question 2", param=QueryParam(mode="mix"))

# Display total token usage (including insert and query operations)
print("Token usage:", token_tracker.get_usage())

سيناريوهات التطبيق

إدارة المعرفة المؤسسية

  • استرجاع الأسئلة والأجوبة الداخلية للمستندات
  • بناء وصيانة قاعدة المعرفة
  • مساعد ذكي للوثائق التقنية

البحث الأكاديمي

  • استرجاع وتحليل الأدبيات
  • أبحاث بناء الرسوم البيانية المعرفية
  • تقييم أداء نظام RAG

إنشاء المحتوى

  • مساعدة الكتابة واسترجاع المواد
  • دمج محتوى متعدد المستندات
  • توصية المحتوى الذكي

مزايا المشروع

  1. سهولة التكامل: توفير Python API و REST API بسيطين
  2. قابلية عالية للتخصيص: دعم نماذج وخلفيات تخزين متعددة
  3. تحسين الأداء: دعم المعالجة الدفعية وغير المتزامنة
  4. التصور: وظيفة تصور الرسوم البيانية المعرفية المدمجة
  5. مستوى المؤسسة: دعم قواعد بيانات مستوى المؤسسة مثل PostgreSQL

ملخص

LightRAG هو إطار عمل RAG شامل وسهل الاستخدام، ومناسب بشكل خاص للسيناريوهات التي تتطلب بناء أنظمة أسئلة وأجوبة ذكية ومنصات إدارة المعرفة. تصميمه المعماري المرن وميزاته الغنية تجعله حلاً مفتوح المصدر ممتازًا في مجال RAG.