labZero:~$ cd ./notes / note-llm-context-quality...

الملاحظات
نسخة صفر 2 يونيو 2026

لماذا أعطى الـ LLM إجابة خاطئة رغم أن المعلومة الصحيحة كانت في السياق؟

أرسلت وثيقة كاملة في الـ context — النموذج أجاب بثقة بمعلومة قديمة من training data متجاهلاً ما في الوثيقة.

#AI #RAG #Prompt

بنيت نظام إجابة على أسئلة يستخدم وثائق المشروع كـ context. في اختبار يدوي، أرسلت وثيقة تقنية صريحة تقول: «الـ API يقبل status بأربع قيم فقط: pending, active, suspended, archived». سألت: «ما القيم المقبولة لـ status؟» فأجاب النموذج بثقة بخمس قيم تشمل deleted غير موجودة في الوثيقة — احتمالاً من training data أو من وثائق مشابهة في سياقه.

الجوهر: المشكلة لم تكن غياب المعلومة بل ثقلها في السياق. المعلومة الصحيحة موجودة، لكن النموذج وزّن Training Prior بشكل أثقل من المعلومة الصريحة في الـ prompt. اكتشفت أن ثلاثة عوامل تُضعف ثقل المعلومة الحديثة: وضعها في منتصف context طويل (لا في البداية أو النهاية)، غياب تأكيد صريح على أولويتها، وتشابهها مع أنماط شائعة في training data يثق فيها النموذج تلقائياً.

أضفت تعليمة صريحة في system prompt: «أجب فقط من الوثائق أدناه. إذا لم تجد الإجابة فيها، قل لا أعرف».

System: استند فقط إلى المعلومات في [DOCUMENTS].
لا تستخدم معلومات خارجها حتى لو بدت صحيحة.

ما تعلمته: وجود المعلومة في الـ context لا يعني أن النموذج سيستخدمها — الموضع والتأكيد الصريح يصنعان الفرق بين إجابة من وثيقتك وإجابة من ذاكرة النموذج.

لديك مشكلة مشابهة؟

إذا واجهت موقفًا قريبًا من هذا في مشروعك، يمكننا الحديث عنه.

لنتحدّث عنها