نماذج اللغة2023متوسط12 دقيقة قراءة

Self-RAG: كيف يتعلّم النموذج أن يسترجع ويُولِّد وينتقد نفسه

Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection

Asai, A. · Wu, Z. · Wang, Y. · Sil, A. · Hajishirzi, H. — ICLR

المشكلة

النماذج اللغوية الكبيرة تُجيد صياغة نصوص سلسة، لكنها كثيراً ما تختلق معلومات تبدو مقنعة وهي في الحقيقة خاطئة. جاء كمحاولة لحلّ هذه المشكلة: أرفِق مستندات من مصادر خارجية مع كل سؤال قبل التوليد. لكن المشكلة أن هذا النهج يسترجع دائماً حتى حين لا حاجة لذلك — فيُقحم سياقاً مشتّتاً ويُضعف مرونة النموذج. والأسوأ أن النموذج لا يتعلّم أبداً كيف يتحقّق: هل ما كتبتُه يتطابق فعلاً مع المصادر التي استرجعتُها؟

الإسهام

يُدرِّب Self-RAG نموذجاً لغوياً واحداً يقوم بكل شيء: يُقرّر لحظياً هل يحتاج استرجاع أم لا، يجلب المقاطع المناسبة، يُولِّد النص مقطعاً بمقطع، ثم ينتقد كل مقطع عبر رموز تأمُّل خاصة (Retrieve وIsRelevant وIsSupported وIsUseful). هذه الرموز جزء من مفردات النموذج العادية، وهذا يعني أنك تستطيع التحكّم بسلوك التوليد وقت — تُعدِّل تواتر الاسترجاع وتوازن بين الجودة بلا إعادة . بحث شعاعي على مستوى المقاطع يختار أفضل مخرج وفق درجات النقد. النتيجة: Self-RAG بحجمَي 7B و13B تفوّق على ChatGPT وLlama2-chat عبر ستّ مهام متنوعة.

الأثر

أثبت Self-RAG فكرة مهمة: الاسترجاع لا يجب أن يكون «إما دائماً أو أبداً». حين تجعل قرار الاسترجاع والنقد شيئاً يتعلّمه النموذج داخل حلقة التوليد نفسها، تفتح بُعداً تصميمياً جديداً بالكامل — استرجاع تكيُّفي يتحكّم فيه النموذج ذاته. هذا الإطار أثّر في أبحاث لاحقة حول التقييم الذاتي والتوليد القابل للتحكّم، وأصبح نهج النقد مقطعاً بمقطع مرجعاً أساسياً لمن يبني أنظمة توليد تهتمّ .

تخيّل طالبَين في امتحان مفتوح الكتاب. الطالب الأول — وهو يُمثّل التوليد المعزَّز بالاسترجاع التقليدي — عنده عادة ثابتة: قبل كل سؤال، يفتح الكتاب ويُصوِّر خمس صفحات عشوائية، يُدبّسها مع ورقة الإجابة، ويكتب إجابته آملاً أن تفيده. حتى لو كان السؤال «صِف إجازتك الصيفية»، يُدبّس خمس صفحات!

الطالب الثاني — وهو Self-RAG — يتعامل مع الأمر بذكاء. يقرأ السؤال أولاً ويسأل نفسه: «هل أحتاج الكتاب هنا فعلاً؟» لو كان السؤال يطلب رأياً شخصياً، يترك الكتاب جانباً ويكتب من عنده. لكن لو كان سؤالاً يحتاج حقائق، يفتح الكتاب ويبحث عن فقرة محدّدة، يتأكّد أنها ذات صلة بالسؤال، يكتب جملة واحدة، ثم يتوقّف ويسأل: «هل ما كتبتُه فعلاً يتطابق مع ما في الكتاب؟» وعندها فقط ينتقل للجملة التالية.

الطالب الأول مجتهد لكنه مُبذِّر — يجلب معلومات لا يحتاجها. الطالب الثاني أذكى: يعرف متى يحتاج مساعدة ومتى لا يحتاج، ويُنتج إجابات تستطيع فعلاً أن تتحقّق منها.

المشكلة: لماذا لا يكفي أن تسترجع دائماً؟

فكرة التوليد المعزَّز بالاسترجاع كانت خطوة مهمة: بدل أن يعتمد على ما حفظه أثناء التدريب فقط، يستعين بمستندات خارجية. لكن الطريقة التقليدية جامدة — استرجع KK مستنداً، ألصقها في بداية المدخل، ثم ولِّد. هذا الجمود يخلق ثلاث مشكلات عملية:

المشكلة الأولى أن الاسترجاع يحدث بشكل أعمى. لا فرق عند النموذج بين سؤال يحتاج حقائق وسؤال يطلب كتابة إبداعية — في الحالتين يسترجع. النتيجة أنه أحياناً يُقحم سياقاً لا علاقة له بالموضوع ويُشتّت نفسه.

المشكلة الثانية أخطر: النموذج لا يتعلّم أبداً أن يُراجع نفسه. قد يكتب جملة تُناقض تماماً ما في المستند المسترجَع، لكنه لا يعرف ذلك. فتحصل على إجابة سلسة اللغة لكنها خاطئة واقعياً — ومعها اقتباسات تبدو رسمية وهي في الحقيقة لا تدعم ما كُتب.

المشكلة الثالثة أن الاسترجاع يحدث مرة واحدة في البداية ولا يتكرّر. لو أخطأ النموذج في اختيار المستندات من البداية، لا توجد فرصة ثانية لتصحيح المسار.

افتح في المختبر
قارن بين النهج التقليدي (يساراً) وSelf-RAG (يميناً). لاحظ كيف يسأل Self-RAG نفسه عند كل خطوة: هل أحتاج أن أسترجع؟ وهل ما كتبتُه مدعوم بالدليل؟
تستيقظ التجربة عند وصولك…

الحل: نموذج واحد يسترجع ويُولِّد وينتقد نفسه

الفكرة الأساسية في Self-RAG أنه يُعيد بناء منظومة التوليد المعزَّز بالاسترجاع من الصفر. بدل الأنبوب الجامد «استرجع ثم ولِّد»، يتعلّم نموذج لغوي واحد أن يقوم بثلاثة أدوار في حلقة متكاملة، مقطعاً بمقطع:

الخطوة 1 — هل أحتاج أن أبحث؟ ينظر النموذج إلى المدخل وما كتبه حتى الآن، ثم يتنبّأ برمز خاص اسمه Retrieve. لو قرّر أن الاسترجاع ضروري، يُخرج Retrieve=Yes ويستدعي نظام . لو لم يحتج، يُخرج Retrieve=No ويكتب من معرفته الذاتية.

الخطوة 2 — التوليد مع الدليل: حين يُفعَّل الاسترجاع، يعود نظام الاسترجاع بـ KK مقطع. النموذج يُعالجها جميعاً بالتوازي ويُولِّد من كل مقطع استكمالاً مرشحاً. وقبل أن يستخدم أي مقطع، يسأل نفسه عبر رمز IsRelevant: هل هذا المقطع فعلاً مفيد للسؤال المطروح؟

الخطوة 3 — : بعد كتابة كل مقطع مرشح، يتنبّأ النموذج برمزَين إضافيَّين: IsSupported (هل ما كتبتُه مدعوم فعلاً بالمقطع؟) وIsUseful (هل هذه إجابة مفيدة للمستخدم؟). ثم يأتي دور على مستوى المقاطع ليختار أفضل استكمال بناءً على درجات مرجَّحة من أبعاد النقد الثلاثة.

الجميل في هذا التصميم أن كل هذه القرارات — الاسترجاع، تقييم الصلة، التحقّق من الدعم، تقدير الفائدة — يتّخذها النموذج نفسه كجزء طبيعي من عملية التنبّؤ بالرمز التالي، عبر خاصة أُضيفت إلى .

افتح في المختبر
استكشف أنواع رموز التأمُّل الأربعة. اضغط على أي نوع لتعرف دوره وقيمه الممكنة وأين يظهر أثناء التوليد.
تستيقظ التجربة عند وصولك…

رموز التأمُّل: كيف ينتقد النموذج نفسه؟

قلب الابتكار في Self-RAG هو منظومة . الفكرة بسيطة: نُضيف إلى مفردات النموذج رموزاً خاصة لا تُمثّل كلمات عادية، بل تُمثّل «أحكاماً» يتعلّم النموذج إصدارها أثناء . هذه ليست تغذية راجعة بلغة طبيعية كما في أنظمة أخرى — بل إشارات تحكُّم مُحدَّدة ومنضبطة. وهي أربعة أنواع:

Retrieve — هذا الرمز يُجيب عن سؤال «هل أحتاج أن أبحث الآن؟» قيمه: Yes أو No أو Continue (أي تابع مع المقطع المسترجَع الحالي). تخيّله كأن النموذج يرفع يده في منتصف الكتابة ويقول «لحظة، أحتاج أن أتحقّق من مصدر.»

IsRelevant — بعد أن يحصل النموذج على مقطع من نظام الاسترجاع، يسأل نفسه: هل هذا المقطع فعلاً مفيد لما أحاول الإجابة عنه؟ القيم: Relevant أو Irrelevant. يعمل كمُرشِّح يمنع النموذج من الاعتماد على معلومات لا علاقة لها بالسؤال.

IsSupported — هذا هو حارس الدقة الواقعية. بعد أن يكتب النموذج مقطعاً، يسأل: هل ما كتبتُه مدعوم فعلاً بالمقطع المسترجَع؟ القيم: Fully Supported أو Partially Supported أو No Support / Contradictory. هذا الرمز هو الذي يكشف — حين يختلق النموذج ادعاءات لا أساس لها في الدليل.

IsUseful — يُقيّم جودة الإجابة ككلّ على مقياس من 1 إلى 5، بمعزل عن مسألة الدقة. فقد تكون إجابتك صحيحة ومدعومة بالأدلة لكنها لا تُجيب عن السؤال الذي طرحه المستخدم — وهنا يتدخّل هذا الرمز.

التدريب: كيف نبني ناقداً ثم نُعلِّم المولِّد؟

تدريب Self-RAG يمرّ بمرحلتين ذكيتَين. في المرحلة الأولى نبني نموذج يتعلّم التنبّؤ برموز التأمُّل. وفي المرحلة الثانية نستخدم هذا الناقد لتوسيم بيانات التدريب، ثم نُدرِّب نموذج المولِّد على البيانات المُوسَّمة.

المرحلة الأولى — تدريب الناقد: بطبيعة الحال، لا يمكن أن نجلس ونُوسِّم رموز التأمُّل يدوياً لملايين المقاطع. الحلّ الذكي هو استخدام GPT-4 كـ«معلِّم»: نُعطيه تعليمات مخصّصة لكل نوع رمز (مثلاً: «بالنظر إلى هذا السؤال وهذا المخرج، هل كان الاسترجاع سيُفيد هنا؟») ونجمع منه بين 4 و20 ألف مثال مُوسَّم لكل نوع. ثم نستخدم هذه الأمثلة في لنموذج أصغر بكثير (Llama 2 7B) ليصبح ناقدنا الخاص. والنتيجة مبهرة: هذا الناقد الصغير يتّفق مع أحكام GPT-4 بنسبة تفوق 90%. بمعنى آخر، نحن حكم GPT-4 في نموذج صغير وسريع نتحكّم فيه بالكامل.

maxC  E((x,y),r)DcriticlogpC(rx,y)\max_{C} \; \mathbb{E}_{((x,y),\,r)\,\sim\,\mathcal{D}_{\text{critic}}} \log\, p_C(r \mid x, y)
هدف تدريب الناقد — التنبّؤ برموز التأمُّل بمعرفة المدخل والمخرجنُدرِّب الناقد CC بحيث يُعظِّم احتمال رمز التأمُّل الصحيح rr بمعرفة المدخل xx والمخرج yy. الفكرة مألوفة: تماماً كما يتعلّم أيّ نموذج لغوي أن يتنبّأ بالرمز التالي، الناقد هنا يتعلّم أن يتنبّأ بالحكم المناسب — هل الاسترجاع مطلوب؟ هل المقطع ذو صلة؟ وهكذا.

المرحلة الثانية — تدريب المولِّد: الآن بعد أن أصبح لدينا ناقد جاهز، نستخدمه بشكل غير متصل (offline) لتوسيم مجموعة التدريب بالكامل. لكل زوج سؤال-إجابة، يمرّ الناقد ويُقرّر: هل كان الاسترجاع ضرورياً هنا؟ هل المقطع المسترجَع ذو صلة؟ هل الإجابة مدعومة بالدليل؟ ما مدى فائدتها؟ كل هذه الأحكام تُدرج كرموز تأمُّل مباشرة داخل النص. ثم يأتي دور المولِّد الذي يتدرّب على هذه البيانات المُوسَّمة بهدف التنبّؤ بالرمز التالي المعتاد:

maxM  E(x,y,r)DgenlogpM(y,rx)\max_{M} \; \mathbb{E}_{(x,y,r)\,\sim\,\mathcal{D}_{\text{gen}}} \log\, p_M(y, r \mid x)
هدف تدريب المولِّد — تعلُّم إنتاج النص ورموز التأمُّل معاًالمولِّد MM يتعلّم أن يتنبّأ بالنص yy ورموز التأمُّل rr معاً بمعرفة المدخل xx. نقطة مهمة: المقاطع المسترجَعة نفسها تُخفى من حساب دالة الخسارة — فالنموذج لا يحفظ مقاطع بعينها، بل يتعلّم الأنماط: متى يسترجع، وما الذي يكون مفيداً، وما الذي يكون مدعوماً بالدليل.
افتح في المختبر
مراحل التدريب: نُقطِّر أحكام GPT-4 في نموذج ناقد صغير، ثم يُوسِّم الناقد بيانات التدريب بأكملها ليتعلّم منها المولِّد.
تستيقظ التجربة عند وصولك…

وقت الاستدلال: كيف يختار النموذج أفضل إجابة؟

وقت الاستدلال، يُولِّد Self-RAG النص جملةً بجملة. في كل خطوة، يمرّ بنفس الحلقة: هل أحتاج استرجاعاً؟ إن كان الجواب نعم، يأتيه KK مقطع من نظام الاسترجاع. النموذج يُولِّد من كل مقطع استكمالاً مرشحاً بالتوازي — أي KK خيار يتنافسون. ثم يُسجَّل كل مرشح بمجموع مرجَّح من درجات رموز النقد:

f(yt,d)=p(ytx,d,y<t)+G{IsRel,IsSup,IsUse}wGstGf(y_t, d) = p(y_t \mid x, d, y_{<t}) + \sum_{G \in \{\text{IsRel},\,\text{IsSup},\,\text{IsUse}\}} w^G \cdot s^G_t
دالة تسجيل المقطع — جمع احتمال التوليد مع درجات النقدكل مقطع مرشح yty_t (مولَّد من مقطع مسترجَع dd) يحصل على درجة تجمع بين احتمال توليده ومجموع مرجَّح من درجات النقد. stGs^G_t هو الاحتمال المُعيَّر للقيمة المرغوبة في نوع النقد GG — مثلاً stIsRels^{\text{IsRel}}_t هو احتمال *Relevant* بعد تعييره مقابل *Irrelevant*. الجميل هنا أن الأوزان wGw^G قابلة للتعديل وقت الاستدلال: لو رفعت wIsSupw^{\text{IsSup}} تحصل على مخرجات أدقّ في الاستشهادات، ولو خفّضته تحصل على نص أكثر طلاقة وانسياباً — بلا إعادة تدريب.
افتح في المختبر
شاهد كيف يُعالج Self-RAG عدة مقاطع مسترجَعة بالتوازي، ويختار أفضلها بناءً على درجات النقد.
تستيقظ التجربة عند وصولك…

هذا التصميم يمنحك مرونة كبيرة وقت النشر بلا إعادة تدريب. تخيّل أنك تنشر النموذج نفسه في سيناريوهين مختلفين: في نظام أسئلة طبية ترفع وزن IsSupported لأنك تُريد أن تكون كل جملة مدعومة بدليل قوي. وفي تطبيق كتابة إبداعية ترفع عتبة δ\delta لتفعيل Retrieve=Yes فيقلّ الاسترجاع ويكتب النموذج بحرية أكبر.

العتبة نفسها تعمل بشكل تكيُّفي. النموذج لا يسترجع تلقائياً كلما كان Retrieve=Yes هو الأرجح — بل يتحقّق أولاً: هل احتمال Retrieve=Yes المُعيَّر يتجاوز فعلاً العتبة δ\delta؟ كلما رفعت العتبة، قلّ الاسترجاع — وهذا مفيد للمهام التي تكفي فيها المعرفة المخزّنة داخل النموذج.

النتائج: نموذج صغير يتفوّق على نماذج أكبر منه بكثير

جرى تقييم Self-RAG على ست مهام تُغطّي طيفاً واسعاً: مهمتان مغلقتان (التحقّق من الحقائق عبر PubHealth والاستدلال عبر ARC-Challenge)، ومهمتا أسئلة وأجوبة مفتوحة المجال (PopQA وTriviaQA)، ومهمتا توليد طويل (كتابة سِيَر ذاتية تُقاس بمعيار FactScore، ومهمة ASQA التي تقيس الصحة والطلاقة ودقة الاستشهادات).

النتائج لافتة: Self-RAG بحجمَي 7B و13B تفوّق باستمرار على جميع خطوط الأساس. في PopQA حقّق Self-RAG 13B دقة 55.8% مقابل 50.8% لـ ChatGPT المعزَّز بالاسترجاع و51.8% لـ Llama2-chat 13B. وفي PubHealth بلغ 74.5% متجاوزاً ChatGPT (70.1%) بفارق واضح. لكن الأبرز هو في كتابة السِّيَر: Self-RAG 7B — نموذج من 7 مليارات معامل فقط — حقّق 81.2 في FactScore، متفوّقاً على نموذج CoVE الذي يملك 65 مليار معامل (71.2).

أما في مقاييس على ASQA، فحقّق Self-RAG 7B دقة 66.9% واستدعاءً 67.8% — اقترب من استدعاء ChatGPT (76.6%) وتفوّق عليه في الدقة (65.1%). هذا يعني أن الاستشهادات التي يُولِّدها Self-RAG ليست مجرد ديكور — بل هي فعلاً تدعم ما يقوله النص.

لماذا ينجح هذا النهج؟ ماذا تقول دراسات الاستئصال

تُساعدنا نفهم أي مكوّن يُحدث الفرق فعلاً. حين نُزيل الناقد بالكامل — أي نُدرِّب النموذج على بيانات مُرفق معها دائماً أفضل مقطع مسترجَع لكن بلا رموز تأمُّل — الأداء ينهار بشكل واضح، خاصةً على ASQA (من 32.1 إلى 18.1 بمقياس str-em). الدرس هنا مهم: مجرد إلصاق مقاطع مسترجَعة مع المدخل لا يكفي — النموذج يحتاج أن يتعلّم متى يكون الاسترجاع مفيداً ومتى لا يكون.

وحين نُزيل نظام الاسترجاع كلياً ونُدرِّب بلا أي مقاطع مسترجَعة، الأداء يتراجع أيضاً — مما يؤكّد أن الاسترجاع يُضيف قيمة حقيقية. لكن اللافت أن الضرر الناتج عن إزالة الناقد أكبر من الضرر الناتج عن إزالة الاسترجاع. بمعنى آخر: آلية التأمُّل الذاتي أهمّ من الاسترجاع نفسه.

على مستوى الاستدلال، حين نستخدم المقطع الأول فقط (كما في النهج التقليدي) بدل معالجة عدة مرشحين بالتوازي، نحصل على تراجع ملحوظ في PopQA وASQA. وحين نحذف درجة IsSupported من البحث الشعاعي، تتراجع جودة الاستشهادات تحديداً — مما يؤكّد أن كل بُعد من أبعاد النقد يُسهم بقيمة مستقلة.

افتح في المختبر
تتبّع خطوة بخطوة كيف يتّخذ Self-RAG قراراته لاستعلام نموذجي: أين يُفعَّل الاسترجاع، وكيف تُرشَّح المقاطع، وأيّها يُختار في النهاية.
تستيقظ التجربة عند وصولك…

الصورة الأوسع: من استرجاع أعمى إلى نموذج يعرف حدوده

قدّم Self-RAG ثلاث أفكار غيّرت طريقة تفكير المجتمع البحثي في التوليد المعزَّز بالاسترجاع:

أولاً، : النموذج نفسه يُقرّر متى يحتاج معلومات خارجية ومتى يكتفي بما يعرفه. هذا يحفظ مرونته — في المهام الإبداعية يتجاوز الاسترجاع كلياً، وفي المهام الواقعية يسترجع بكثافة.

ثانياً، النقد الذاتي المدمج: بدل الاعتماد على مُدقّق خارجي أو نموذج مكافأة منفصل وقت الاستدلال، النموذج يحمل آلية التقييم داخله. التحقّق من الجودة يصبح قدرة مدمجة في عملية التوليد نفسها، لا إضافة خارجية.

ثالثاً، قابلية التحكّم بلا إعادة تدريب: بمجرد تعديل أوزان رموز النقد، تستطيع ضبط نفس النموذج لتطبيقات مختلفة تماماً. تُريد دقة استشهادات عالية لتطبيق طبي أو قانوني؟ ارفع وزن IsSupported. تُريد طلاقة أعلى لتطبيق كتابة إبداعية؟ خفّضه. كل ذلك من نفس النموذج المُدرَّب.

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

السياق: كيف تطوّرت فكرة الاسترجاع الذكي؟

  1. 2020

    RAG (لويس وآخرون)

    العمل الأساسي الذي جمع بين الاسترجاع والتوليد في نموذج واحد. لكنه يسترجع دائماً بلا تمييز، ولا يملك أي آلية لنقد مخرجاته — وهذا ما يُحسّنه Self-RAG.

  2. 2022

    InstructGPT / RLHF (أويانغ وآخرون)

    أثبت أن إشارات المكافأة البشرية عبر PPO تستطيع توجيه جودة التوليد. Self-RAG استلهم هذه الفكرة لكنه تجنّب تكلفة التعلّم المعزَّز بأن جعل الناقد يُوسِّم البيانات مسبقاً.

  3. 2023

    Self-Refine (مادان وآخرون)

    يطلب من النموذج أن يُولِّد ثم ينتقد نفسه بلغة طبيعية ثم يُنقِّح، ويُكرّر هذه الحلقة. الفرق عن Self-RAG أن النقد هنا نص حرّ غير مُهيكل، فيكون أبطأ ويصعب تحويله إلى درجات رقمية للمفاضلة بين المرشحين.

  4. 2023

    Self-RAG (هذه الورقة)

    جمع الاسترجاع والتوليد والنقد الذاتي في نموذج واحد عبر رموز التأمُّل. يسترجع فقط حين يحتاج، يُقيّم على مستوى المقاطع ببحث شعاعي، ويمكن التحكّم بسلوكه وقت الاستدلال بلا إعادة تدريب.

  5. 2023

    Active RAG (جيانغ وآخرون)

    يسترجع مقاطع بشكل تكيُّفي أثناء التوليد، لكنه يعتمد على نموذج لغوي مغلق المصدر. Self-RAG يُحقّق سلوكاً مشابهاً لكن عبر رموز تأمُّل مُتعلَّمة داخل نموذج مفتوح يمكن لأي باحث استخدامه.

Self-RAG يقف عند نقطة تحوّل حقيقية في تاريخ التوليد المعزَّز بالاسترجاع. قبله، كان الاسترجاع خطوة ثابتة تحدث قبل التوليد ولا علاقة لها به. بعده، أصبح الاسترجاع قراراً يتعلّمه النموذج ويتّخذه أثناء الكتابة نفسها. والدرس الأهم: التقييم الذاتي لا يحتاج تعلّماً معزَّزاً مكلفاً — يكفي أن تُقطِّر أحكام نموذج قوي في بيانات التدريب، ثم يتعلّمها المولِّد بنفس طريقة التنبّؤ بالرمز التالي المعتادة.

المرجعAsai, Wu, Wang, Sil, Hajishirzi. Self-RAG: Learning to Retrieve, Generate, and Critique through Self-Reflection. ICLR, 2024.

مصطلحات هذه الورقة