كل المقالات

ما نافذة السياق، ولماذا تنحرف المحادثات الطويلة

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

النموذج يعيد قراءة كل شيء في كل دور

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

وكل هذا يُحسب بالتوكِنز (tokens)، أي أجزاء من الكلمات لا كلمات كاملة، والنافذة ميزانية توكِنز يتقاسمها المُدخَل والرد معاً؛ فالجواب الطويل يقتطع من الرصيد نفسه الذي يستهلكه سجل المحادثة. وجزء من الميزانية مصروف قبل أن تكتب حرفاً واحداً: تعليمات النظام موجودة أصلاً، وإن كانت للمساعد أدوات فوصفها موجود كذلك.

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

ماذا يحدث فعلاً حين تمتلئ النافذة

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

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

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

نافذة واسعة لا تعني استخداماً جيداً لها

أن تتّسع النافذة شيء، وأن تُستعمل جيداً شيء آخر. أشهر نتيجة في هذا الباب ورقة Lost in the Middle (Liu وزملاؤه، 2023)، وقد أظهرت منحنى على شكل حرف U: في الإجابة عن أسئلة تعتمد وثائق متعددة، وفي استرجاع أزواج مفتاح/قيمة، كانت الدقة أعلى ما تكون حين يقع المقطع المطلوب قرب البداية أو قرب النهاية، وأدنى ما تكون حين يقع في الوسط. وقد تكرّر رصد الشكل نفسه بعدها في نماذج ومهام مختلفة.

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

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

عادات تُبقي المحادثة الطويلة على مسارها

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

أعد ذكر القيود المهمة في الرسالة التي تلزم فيها، ولا تفترض أنها نجت؛ فالسطر الواحد ثمن زهيد. والصق المادة بدل وصفها، فـ«ملف الإعدادات الذي تحدثنا عنه» ليس ملف الإعدادات، والنموذج لا يرى إلا ما هو داخل النافذة فعلاً. وإذا كنت تعطي وثيقة طويلة، فضع السؤال بعدها لا قبلها؛ فالوسط هو الموضع الضعيف، والسؤال في الآخر هو آخر ما يقرؤه النموذج قبل أن يبدأ الكتابة.

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

حين تحتاج إلى مكتبة بدل النافذة

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

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

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

الخلاصة

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

مقالات قريبة

كل المقالات