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

التوليد المعزَّز بالاسترجاع للمهام اللغوية كثيفة المعرفة

Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks

Lewis, P. · Perez, E. · Piktus, A. · Petroni, F. · Karpukhin, V. · Goyal, N. · Küttler, H. · Lewis, M. · Yih, W. · Rocktäschel, T. · Riedel, S. · Kiela, D. — NeurIPS

المشكلة

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

الإسهام

يقدّم البحث بنية هجينة تدمج مولّداً بارامترياً مُدرَّباً مسبقاً (BART) مع نظام استرجاع كثيف (DPR). عند استقبال استعلام، يسترجع DPR أفضل k مستند من فهرس ويكيبيديا، وتُعامَل هذه المستندات بوصفها متغيّرات كامنة يُجرى عليها أثناء التوليد. يأتي النظام بصيغتين: RAG-Sequence حيث يُستخدم مستند واحد لتوليد المخرج بالكامل، وRAG-Token حيث يمكن لكل رمز أن يستقي من مستند مختلف. حقّقت الصيغتان نتائج هي الأفضل في الإجابة المفتوحة عن الأسئلة وتوليد أسئلة Jeopardy، مع إمكانية تتبّع مصدر كل إجابة من خلال الفقرات المسترجَعة.

الأثر

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

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

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

المشكلة: المعرفة المحفوظة هشّة وغير شفّافة

بحلول عام 2020، أثبتت النماذج اللغوية الكبيرة مثل GPT-2 وBART قدرات توليدية مبهرة، لكنها كانت تعتمد على تخزين المعرفة بالكامل داخل معاملاتها — أي ذاكرة بارامترية بحتة. في هذا التصميم ثلاث مشكلات جوهرية:

  • التقادم. المعرفة تتجمّد لحظة انتهاء التدريب. إذا تغيّرت حقيقة ما غداً، يظل النموذج مخطئاً إلى أن يُعاد تدريبه — وإعادة التدريب تكلّف ملايين الدولارات.
  • الهلوسة. حين يفتقر النموذج إلى معلومة، يولّد إجابة تبدو معقولة لكنها ملفّقة. لا توجد آلية تجعله يقول «لا أعلم».
  • انعدام الشفافية. لا يمكنك أن تسأل النموذج من أين جاءت معلومة ما. لا مصدر، لا استشهاد، ولا طريقة للتحقّق.

في المهام كثيفة المعرفة — حيث الهدف الأساسي هو الدقة في الحقائق — تصبح هذه المشكلات عوائق حقيقية لا يمكن القبول بها.

افتح في المختبر
انقر على كل سيناريو لترى أين يُخفق النموذج البارامتري وأين ينجح RAG.
تستيقظ التجربة عند وصولك…

الفكرة: استرجِع ثم ولِّد

الفكرة وراء RAG بسيطة بشكل مدهش: لا تُجبر المولّد على حفظ كل شيء — بل اجعله يبحث عمّا يحتاجه. اجمع بين نظامين:

  1. نظام استرجاع (DPR) يُسقط الاستعلامات والمستندات في مشترك. عند تلقّي سؤال، يبحث عن أفضل k فقرة من ضخمة (ويكيبيديا بأكملها، نحو 21 مليون فقرة) باستخدام بحث الحاصل الداخلي الأقصى (MIPS).
  2. مولّد (BART)، وهو نموذج مُدرَّب مسبقاً يستقبل السؤال مع كل فقرة مُسترجَعة ويولّد الإجابة.

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

افتح في المختبر
تابع رحلة سؤال عبر مسار RAG بالكامل — من الاستعلام إلى الإجابة المبنيّة على أدلّة.
تستيقظ التجربة عند وصولك…

البنية: نظام الاسترجاع DPR + المولّد BART

تتكوّن بنية RAG من مكوّنين يعملان معاً كفريق بحثي:

نظام الاسترجاع (DPR) يعتمد على BERT — واحد للاستعلام وآخر للمستندات. كلاهما يُنتج كثيفة. عملية الاسترجاع هي في جوهرها بحث عن أقرب جار في فضاء المتجهات المشترك: يُقارَن الاستعلام بفهرس FAISS المحسوب مسبقاً لجميع فقرات ويكيبيديا عبر بحث الحاصل الداخلي الأقصى (MIPS)، وتُعاد أفضل k فقرة (عادةً k=5 أو 10) بحسب درجة التشابه.

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

افتح في المختبر
انقر على أي مكوّن لتعرف دوره داخل بنية RAG.
تستيقظ التجربة عند وصولك…

صيغتان: RAG-Sequence مقابل RAG-Token

يتعامل RAG مع المستندات بوصفها متغيّرات كامنة: يسترجعها النموذج لكنه لا يُدرجها في المخرج مباشرة. السؤال المحوري هو: متى نُجري التهميش (حساب المتوسط المرجّح) على المستندات؟ الإجابة تعطينا صيغتين:

RAG-Sequence يعتمد على مستند واحد لتوليد كامل تسلسل المخرج. تخيّل أنك اخترت كتاباً مرجعياً واحداً وكتبت مقالتك بالكامل منه، ثم أخذت المتوسط المرجّح على عدّة اختيارات مختلفة للكتاب. هذه الصيغة مناسبة للمهام التي يهمّ فيها تماسك الإجابة — كصياغة جواب كامل ومتّسق.

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

pRAG-Seq(yx)ztop-kpη(zx)i=1Npθ(yix,z,y1:i1)p_{\text{RAG-Seq}}(y|x) \approx \sum_{z \in \text{top-}k} p_\eta(z|x) \prod_{i=1}^{N} p_\theta(y_i|x, z, y_{1:i-1})
RAG-Sequence — التهميش على مستوى التسلسلات الكاملةلكل مستند z من أفضل k مستند مسترجَع، يُولَّد التسلسل الكامل y، ثم يُرجَّح كل تسلسل باحتمال الاسترجاع p_η(z|x). مستند واحد لكل إجابة.
pRAG-Tok(yx)i=1Nztop-kpη(zx)pθ(yix,z,y1:i1)p_{\text{RAG-Tok}}(y|x) \approx \prod_{i=1}^{N} \sum_{z \in \text{top-}k} p_\eta(z|x) \, p_\theta(y_i|x, z, y_{1:i-1})
RAG-Token — التهميش عند كل موضع رمزعند كل موضع رمز i، يُجمع على جميع أفضل k مستند، مع ترجيح مساهمة كل مستند باحتمال استرجاعه. يمكن لكل رمز أن يستقي معلوماته من مستند مختلف.
افتح في المختبر
بدّل بين RAG-Sequence وRAG-Token لترى كيف يختلف التهميش بينهما.
تستيقظ التجربة عند وصولك…

التدريب: نظام الاسترجاع والمولّد يتعلّمان معاً

يُدرَّب RAG على أزواج من (سؤال، إجابة) — دون الحاجة إلى تحديد أي مستند هو «الصحيح». إشارة التدريب تسير كالتالي:

  1. يبحث نظام الاسترجاع عن المستندات التي يعتقد أنها ذات صلة.
  2. يحاول المولّد إنتاج الإجابة الصحيحة مستنداً إلى تلك المستندات.
  3. إذا أخطأ المولّد في الإجابة، يُحدِّث كلاً من المولّد (ليتعلّم استخدام المستندات بشكل أفضل) ومُرمِّز الاستعلام (ليسترجع مستندات أنسب في المرة القادمة).

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

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

L=jlogp(yjxj)\mathcal{L} = -\sum_{j} \log \, p(y_j | x_j)
خسارة التدريب — سالب اللوغاريتم الاحتمالي الهامشييتدفق التدرّج عبر المولّد ومُرمِّز الاستعلام. أما مُرمِّز المستندات وفهرس FAISS فيبقيان مجمَّدين — لا حاجة لإعادة الفهرسة أثناء التدريب.

الفكرة في الكود

التمرير الأمامي لـ RAG — استرجع ثم ولِّدpython

مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.

import numpy as np

def rag_forward(question, retriever, generator, index, k=5):
    """التمرير الأمامي لـ RAG: استرجع أفضل k مستند ثم ولِّد."""

    # الخطوة 1: رمِّز السؤال إلى متجه كثيف
    q_emb = retriever.encode_query(question)           # (d,)

    # الخطوة 2: استرجع أفضل k فقرة عبر MIPS (بحث الحاصل الداخلي الأقصى)
    doc_scores, doc_ids = index.search(q_emb, k)       # فهرس FAISS
    documents = [index.get_passage(did) for did in doc_ids]

    # الخطوة 3: لكل مستند، احسب احتمالات الإجابة
    all_probs = []
    for doc, score in zip(documents, doc_scores):
        input_text = f"{question} [SEP] {doc}"         # ألحق السؤال بالمستند
        gen_prob = generator.generate_probs(input_text) # p(y | x, z)
        retrieval_prob = np.exp(score)                  # p(z | x)
        all_probs.append(retrieval_prob * gen_prob)

    # الخطوة 4: التهميش — حساب المتوسط المرجّح على المستندات
    # RAG-Token: الجمع عند كل موضع; RAG-Sequence: الجمع على التسلسلات الكاملة
    final_probs = sum(all_probs) / sum(np.exp(doc_scores))

    return final_probs

# الفكرة المحورية: المستندات المسترجَعة هي متغيّرات كامنة.
# النموذج يُهمِّشها — لا يُدرجها في المخرج مباشرة.
# التدريب: التدرّج يتدفق عبر المولّد + مُرمِّز الاستعلام.
# مُرمِّز المستندات يبقى مجمَّداً. لا حاجة لإعادة الفهرسة.

النتائج: معرفة دون حفظ

حقّق RAG نتائج قياسية جديدة على أربعة معايير مرجعية في المهام كثيفة المعرفة:

  • الإجابة المفتوحة عن الأسئلة (Natural Questions): وصل RAG إلى 44.5 في مقياس التطابق التام، متفوّقاً على جميع النماذج الاستخراجية البحتة وعلى الأساليب التوليدية السابقة. الفرق الجوهري أن النماذج الاستخراجية لا تستطيع إلا نسخ مقاطع نصية من الفقرات المسترجَعة، بينما RAG يركّب إجابته بأسلوبه.
  • الإجابة المفتوحة (CuratedTrec وWebQuestions): سجّل RAG أرقاماً قياسية على كلا المعيارين دون أي تعديلات بنيوية مخصّصة لمهمة بعينها.
  • الإجابة التجريدية (MSMARCO NLG): حقّق RAG نتيجة BLEU تبلغ 15.1، ممّا يُظهر قدرته على توليد إجابات بلغة طبيعية أكثر سلاسة مقارنة بالأنظمة الاستخراجية.
  • توليد أسئلة Jeopardy: أنتج RAG أسئلة أدق وأغنى بالتفاصيل من BART وحده، ممّا يُثبت أن على مستندات مسترجَعة يُحسّن حتى مهام التوليد الإبداعية.
  • التحقّق من الحقائق (FEVER): جاء RAG ضمن هامش 4.3% من أفضل النماذج التي تستخدم مسارات أعقد بكثير مع مكوّنات مصمّمة خصيصاً للمهمة.
افتح في المختبر
مرّر فوق كل معيار لترى أداء RAG مقارنة بخطوط الأساس.
تستيقظ التجربة عند وصولك…

الميزة الخفية: معرفة قابلة للتحديث

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

  • تبديل الفهرس لتغيير المجال المعرفي بالكامل. وجِّه RAG إلى أوراق بحثية طبية بدل ويكيبيديا ويتحوّل إلى نظام إجابة طبية — النموذج ذاته لكن بمعرفة مختلفة.
  • تحديث الحقائق بإعادة فهرسة مستندات جديدة. حين يتغيّر رئيس دولة، تُحدّث الفهرس فقط دون المساس بالنموذج.
  • تتبّع المصدر بفحص الفقرات التي استرجعها النظام. كل إجابة تأتي ومعها «إيصالات» — يمكنك التحقّق من أي ادّعاء بالرجوع إلى المستند الأصلي.

هذا الفصل بين المعرفة والحوسبة هو ما يجعل RAG عملياً في الأنظمة الإنتاجية التي تتغيّر فيها الحقائق ويكون فيها التحقّق أولوية.

افتح في المختبر
بدّل فهرس المعرفة وشاهد كيف تتغيّر إجابات RAG — النموذج نفسه بمعرفة مختلفة.
تستيقظ التجربة عند وصولك…

ما الذي فتحه RAG

  1. 2019

    REALM — النموذج اللغوي المعزَّز بالاسترجاع

    أول عمل يعامل المستندات كمتغيّرات كامنة أثناء التدريب المسبق للنموذج اللغوي. أثبت أن الاسترجاع يمكن أن يُحسّن التدريب المسبق نفسه وليس فقط المهام اللاحقة.

  2. 2020

    DPR — الاسترجاع الكثيف للفقرات

    استبدل الاسترجاع التقليدي القائم على الكلمات المفتاحية (BM25) بتمثيلات كثيفة مُتعلَّمة. أصبح DPR ركيزة الاسترجاع في RAG، وأثبت تفوّق أنظمة الاسترجاع العصبية على المطابقة النصية.

  3. 2020

    RAG — التوليد المعزَّز بالاسترجاع

    دمج DPR مع BART في نظام واحد قابل للتدريب. المستندات تُعامَل كمتغيّرات كامنة يُجرى عليها تهميش أثناء التوليد. حقّق أفضل النتائج في المهام كثيفة المعرفة.

  4. 2021

    FiD — الدمج في فاكّ الترميز

    رمّز كل مستند على حدة ثم دمجها في طبقة الانتباه التبادلي لفاكّ الترميز. تمكّن من التعامل مع أكثر من 100 مستند بكفاءة عبر تجنّب الانتباه التبادلي في جانب المُرمِّز.

  5. 2022

    RETRO — المحوِّلات المعزَّزة بالاسترجاع

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

  6. 2023

    Atlas — نموذج لغوي معزَّز بالاسترجاع بأمثلة قليلة

    طوّر فكرة RAG بتدريب نظام الاسترجاع بشكل مشترك مع المولّد، وحقّق أداءً قوياً بأمثلة قليلة من خلال تعلّم استرجاع المستندات الأنسب للمهمة.

  7. 2023

    Self-RAG — التوليد المعزَّز بالاسترجاع الذاتي التأمّلي

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

اليوم، أصبح نهج تعزيز التوليد بالاسترجاع الذي أرساه RAG هو المعيار السائد في الصناعة. كل نظام رئيسي يعتمد على — من ChatGPT بخاصية التصفّح إلى Claude بخاصية البحث إلى المساعدات المعرفية المؤسسية — يستخدم شكلاً ما من نهج «استرجع ثم ولِّد». ومصطلح «RAG» نفسه دخل المفردات اليومية لممارسي الذكاء الاصطناعي والمهندسين ومديري المنتجات حول العالم.

المرجعLewis, Perez, Piktus, Petroni, Karpukhin, Goyal, Küttler, Lewis, Yih, Rocktäschel, Riedel, Kiela. Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS, 2020.

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