0Pricing
Learn AI with Python · درس

بناء نظام أسئلة وأجوبة بتقنية RAG من البداية إلى النهاية

سلسلة RetrievalQA، والمطالبات المخصصة، وإسناد المصادر، وتقييم RAG باستخدام RAGAS

بناء نظام أسئلة وأجوبة بتقنية RAG من البداية إلى النهاية درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

ما هو RAG؟

يُرسّخ التوليد المعزَّز بالاسترجاع إجابات LLM في بياناتكم الخاصة. فعند تنفيذ الاستعلام، تسترجعون المقاطع ذات الصلة من مخزن المتجهات وتُدخلونها في المطالبة، ليجيب النموذج بالاعتماد على الحقائق بدلاً من التخمين.

مسار RAG

يتبع كل استعلام في RAG أربع خطوات: (1) تضمين السؤال، (2) استرجاع المقاطع المتشابهة، (3) وضعها في المطالبة كسياق، (4) إنشاء LLM إجابة مستندة إلى ذلك السياق.

تحويل مخزن إلى أداة استرجاع

حوّلوا مخزن المتجهات إلى أداة استرجاع باستخدام as_retriever. ويتحكم قاموس search_kwargs في الاسترجاع، ولا سيما k، وهو عدد المقاطع التي تُجلب لكل سؤال.

retriever = db.as_retriever(
    search_kwargs={"k": 4}
)

ضبط search_kwargs

يمكن لـ search_kwargs أيضاً ضبط عتبة للدرجة أو خيارات MMR. ابدؤوا بـ k=4، وارفعوها إذا كانت الإجابات تفتقر إلى السياق، أو خفّضوها لتقليل تكلفة الرموز والضوضاء.

retriever = db.as_retriever(
    search_type="similarity_score_threshold",
    search_kwargs={"k": 6, "score_threshold": 0.5}
)

سلسلة RetrievalQA

تصل سلسلة RetrievalQA بين الاسترجاع والتوليد. أنشئوها باستخدام from_chain_type، مع تمرير llm وretriever الخاصين بكم. وبذلك يجيب استدعاء واحد عن الأسئلة بالاعتماد على مستنداتكم.

from langchain.chains import RetrievalQA
from langchain_openai import ChatOpenAI

qa = RetrievalQA.from_chain_type(
    llm=ChatOpenAI(model="gpt-4o"),
    retriever=retriever
)

chain_type: كيفية دمج السياق

يتحكم chain_type في كيفية إدخال المقاطع المسترجَعة إلى المطالبة. يضع "stuff" (الإعداد الافتراضي) جميع المقاطع في مطالبة واحدة، وهو أسلوب بسيط وأفضل عندما تتسع لها نافذة السياق. أما الأنواع الأخرى مثل "map_reduce" فتعالج عدداً كبيراً من المقاطع الكبيرة.

qa = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",
    retriever=retriever
)

طرح سؤال

شغّلوا السلسلة باستخدام invoke، مع تمرير السؤال ضمن المفتاح query. وتسترجع السلسلة المقاطع، وتبني المطالبة، ثم تعيد الإجابة المستندة إلى السياق.

response = qa.invoke({"query": "What is the refund window?"})
print(response["result"])

إعادة مستندات المصدر

اضبطوا return_source_documents=True للحصول على المقاطع المستخدمة في الإجابة. ويتيح ذلك إضافة الاستشهادات وتمكين المستخدمين من التحقق من مصدر كل حقيقة، وهو أمر أساسي للثقة.

qa = RetrievalQA.from_chain_type(
    llm=llm,
    retriever=retriever,
    return_source_documents=True
)
resp = qa.invoke({"query": "Refund window?"})
for d in resp["source_documents"]:
    print(d.metadata)

لماذا نقيم RAG؟

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

مقاييس RAGAS

إن RAGAS مكتبة تقيس جودة RAG. وتشمل المقاييس الرئيسية: faithfulness (مدى دعم السياق للإجابة)، وanswer_relevancy (مدى تناول الإجابة للسؤال)، وcontext_precision (مدى صلة المقاطع المسترجَعة).

pip install ragas

from ragas.metrics import faithfulness, answer_relevancy, context_precision

إجراء تقييم

أنشئوا مجموعة بيانات من الأسئلة، والإجابات المُنشأة، والسياقات المسترجَعة، والإجابات المرجعية، ثم استدعوا evaluate. وتوضح الدرجات ما إذا كان عليكم تحسين التقسيم أو قيمة k للاسترجاع أو المطالبة.

from ragas import evaluate

result = evaluate(
    dataset,
    metrics=[faithfulness, answer_relevancy, context_precision]
)
print(result)

تحقق سريع

اختبروا معرفتكم بـ RAG.

مراجعة: RAG من البداية إلى النهاية

أنشأتم مسار RAG كاملاً: db.as_retriever مع search_kwargs، وسلسلة RetrievalQA.from_chain_type فوق llm وأداة الاسترجاع، وreturn_source_documents=True لإضافة الاستشهادات. كما تعلمتم قياس الجودة باستخدام مقاييس RAGAS مثل الإخلاص ودقة السياق.

الأسئلة الشائعة

هل درس «بناء نظام أسئلة وأجوبة بتقنية RAG من البداية إلى النهاية» مجاني؟

نعم — نص درس «بناء نظام أسئلة وأجوبة بتقنية RAG من البداية إلى النهاية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

ماذا ستتعلم في «بناء نظام أسئلة وأجوبة بتقنية RAG من البداية إلى النهاية»؟

سلسلة RetrievalQA، والمطالبات المخصصة، وإسناد المصادر، وتقييم RAG باستخدام RAGAS تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟

لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «بناء نظام أسئلة وأجوبة بتقنية RAG من البداية إلى النهاية»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟

نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. بنية LangChain وLCEL
  2. تحميل المستندات وتقسيمها وتضمينها
  3. مخازن المتجهات: Chroma وFAISS
  4. بناء نظام أسئلة وأجوبة بتقنية RAG من البداية إلى النهاية
← العودة إلى Learn AI with Python