Packaging and context handling — تعبئة ومعالجة السياق

From Systems analysis wiki
Jump to navigation Jump to search

Packaging & Context Handling - تعبئة ومعالجة السياق — هي مجموعة من التقنيات لاختيار أجزاء المعرفة المستخرجة وضغطها وترتيبها وتقديمها ضمن سياق LLM كجزء من عملية التوليد المعزز بالاسترجاع (Retrieval‑Augmented Generation - RAG). الهدف هو تعظيم فائدة ميزانية التوكن المحدودة، وزيادة دقة الإجابات واستقرارها، وضمان إمكانية تتبع الاستشهادات من المصادر. لا يقتصر مصطلح «التعبئة» على تكوين قائمة بالمقتطفات فحسب، بل يشمل أيضًا ضغطها وترتيبها وتجميعها، بالإضافة إلى التعليمات الموجهة للنموذج، بما في ذلك استراتيجيات مثل stuff وmap‑reduce وrefine وtree‑of‑chunks.[1][2]

التعريف والدافع

في أنظمة RAG، لا تتحدد جودة الإجابة النهائية بالاسترجاع فقط، بل أيضًا بـكيفية إدراج المقتطفات المختارة في المُوجِّه (prompt). تفرض قيود السياق وتكلفة التوكنات موازنة بين الشمولية والدقة: فالمقتطفات الزائدة تزيد من خطر «الضياع في المنتصف» (lost‑in‑the‑middle) وتطيل زمن الاستجابة، بينما قد يؤدي الترشيح/الضغط الشديد إلى حذف أدلة رئيسية.[3] في أنظمة RAG الكلاسيكية، تعمل المصادر كـ «ذاكرة خارجية غير بارامترية»، مما يضمن حداثة المعلومات وإمكانية الاستشهاد بها، شريطة أن تسمح عملية التعبئة للنموذج اللغوي الكبير (LLM) بالتعامل مع الحقائق والمراجع بموثوقية.[1]

التقطيع واستخلاص المحتوى

تحدد سياسة التجزئة (chunking) حجم المقاطع (chunks) والتداخل بينها، وعمليات التسوية، ومستوى التفصيل (documentpassagesentence). تشمل الأساليب النموذجية ما يلي:

  • قاعدة الحجم الثابت: (حسب الأحرف/التوكنات) مع تداخل للحفاظ على الترابط بين المقاطع.[4][5]
  • التقطيع الدلالي: (تحديد الحدود بناءً على تقارب التضمينات)، مما يقلل من «انقطاع المعنى».[6]
  • استرجاع نافذة الجمل (Sentence‑window retrieval): تتم فهرسة الجمل في البداية؛ وعند الاسترجاع، يتم سحب الجمل ذات الصلة مع نافذة من الجمل المجاورة قبلها وبعدها لاستعادة السياق المحلي.[7]
  • الفهرسة على مستوى الفقرات (Passage‑level indexing): أصبح تقسيم ويكيبيديا إلى فقرات تتكون من حوالي 100 كلمة معيارًا في مجال الإجابة على الأسئلة المفتوحة (DPR)، مما يعكس فائدة التفصيل الدقيق في المراحل الأولى.[8]
  • التسوية والتنقية: (إزالة المحتوى غير المرغوب فيه، الترويسات/التذييلات، توحيد المسافات)، مع تتبع المصادر/الصفحات/الإزاحات على مستوى البيانات الوصفية لضمان التتبع.[9]
  • إزالة التكرار: للمقاطع المرشحة (المتطابقة تمامًا وشبه المتطابقة): استخدام تقنيات مثل shingles وMinHash/LSH لتقليل التكرار.[10]

التنويع والاختيار (MMR وغيرها)

عند تكوين مجموعة السياق، من الضروري تحقيق صلة عالية وتقليل التكرار. تختار دالة Maximal Marginal Relevance الكلاسيكية المقتطف التالي مع الأخذ في الاعتبار قربه من الاستعلام وأكبر تشابه مع المقتطفات التي تم اختيارها بالفعل (عقوبة على التكرار):

MMR(di)=argmaxdiDS[λsim(q,di)(1λ)maxdjSsim(di,dj)], λ[0,1].[11]

دمج الإشارات: الاسترجاع الهجين (BM25 + dense) ← الدمج (fusion) (على سبيل المثال، Reciprocal Rank Fusion, RRF) ← إعادة الترتيب بواسطة cross‑encoder/ColBERT:

  • RRF: مخطط بسيط وفعال غير خاضع للإشراف لدمج تصنيفات أدوات الاسترجاع المختلفة.[12]
  • أدوات إعادة الترتيب المستندة إلى Cross-encoder (BERT/MonoT5/APIs تجارية حديثة) تزيد بشكل كبير من دقة أفضل k نتائج، ولكنها تضيف زمن استجابة.[13][14]
  • المسترجع متعدد المتجهات ColBERT (late interaction) غالبًا ما يعمل كأداة فعالة لإعادة الترتيب/الاسترجاع في المستوى الأول على مجموعات البيانات الكبيرة.[15]
  • البحث الهجين (BM25F+vector) مُطبق في محركات البحث والمكتبات الصناعية مع أوزان ودمج قابلين للتخصيص (alpha, RRF، إلخ).[16][17]

ضغط السياق

يعد تقليل حجم السياق دون فقدان الحقائق أمرًا بالغ الأهمية من حيث التكلفة وزمن الاستجابة:

  • الضغط الاستخلاصي (استخراج الجمل/العبارات الرئيسية)؛ التلخيص التجريدي (إعادة صياغة/ضغط). منظور كلاسيكي — Nenkova & McKeown.[18]
  • الضغط الموجه بالاستعلام/التعليمات (Query‑guided / instruction‑guided): تلخيص بناءً على الاستعلام/المهمة (تسليط الضوء على الأدلة وحذف ما هو غير ذي صلة).
  • ضغط المُوجِّه/السياق (Prompt/context compression) باستخدام ترشيح/تقليم التوكنات بواسطة LLM (مثلًا، LLMLingua/LLMLingua‑2) يقلل من ميزانية التوكن مع فقدان قليل في الجودة، ولكنه يتطلب تحققًا دقيقًا من الموثوقية (faithfulness).[19]
  • الضغط هو مقايضة بين الجودة↔التكلفة↔زمن الاستجابة: الضغط الشديد يزيد من خطر إغفال التفاصيل الدقيقة/الافتراضات ويضعف إسناد الحقائق.[20]

استراتيجيات التعبئة (stuff/map‑reduce/refine/tree)

فيما يلي أربع خطط أساسية لترتيب المصادر في المُوجِّه وسيناريوهات تطبيقها النموذجية (انظر أيضًا جدول المقارنة).

؛ Stuff (التقديم المباشر)

لصق المقتطفات المختارة (بعد ضغط محتمل) وتقديمها بالكامل. طريقة بسيطة وسريعة، ولكنها محدودة بالحجم وعرضة لمشكلة lost‑in‑the‑middle في المدخلات الطويلة.[2]

؛ Map‑Reduce

في مرحلة map، يتم الإجابة/التلخيص محليًا لكل مقتطف/مستند، ثم تقوم مرحلة reduce بتجميع النتائج (مقارنة، تصويت، دمج). قابلة للتطوير بشكل جيد حسب عدد المصادر، مما يقلل العبء على مُوجِّه واحد؛ خطر فقدان الروابط المتقاطعة بين المصادر عند التجميع الساذج.[2][21]

؛ Refine

تحسين متسلسل: إجابة أولية بناءً على المقتطف الأول، ثم تحسين (refine) تكراري مع الأخذ في الاعتبار المقتطف التالي (إضافة/تصحيح). مفيدة عندما يكون ترتيب المصادر مهمًا؛ خطر «التعثر» في الأخطاء المبكرة وتراكم التشوهات.[22]

؛ Tree‑of‑chunks

ضغط/تلخيص هرمي: ملخصات محلية للمقاطع ← تجميعات على مستوى الأقسام ← ملخص نهائي. مفيدة للمستندات الطويلة؛ تتطلب نقلًا دقيقًا لمعرفات المصادر بين المستويات لضمان الإسناد الصحيح.[23]
مقارنة استراتيجيات التعبئة
الاستراتيجية الفكرة التكلفة/زمن الاستجابة خطر فقدان السياق متى تُستخدم المصادر
Stuff كل المقتطفات في مُوجِّه واحد دفعة واحدة منخفضة (حتى حد السياق) مرتفع في المدخلات الطويلة (lost‑in‑the‑middle) حجم صغير، أسئلة بسيطة [2][3]
Map‑Reduce إجابات محلية ← تجميع متوسطة/مرتفعة (استدعاءات متعددة) متوسط (يعتمد على جودة مرحلة reduce) مصادر كثيرة، تتطلب قابلية التوسع [2][21]
Refine تحسين متسلسل للإجابة متوسطة الاعتماد على الترتيب، خطر ترسيخ الأخطاء عندما يكون الترتيب/تطور الإجابة مهمًا [22]
Tree‑of‑chunks ملخصات هرمية متوسطة/مرتفعة فقدان التفاصيل في المستويات العليا المستندات/المجموعات الطويلة [23]

ترتيب المصادر وتحديد مواضعها

تستخدم نماذج اللغة الكبيرة (LLMs) المعلومات من منتصف السياق الطويل بشكل أقل فعالية؛ من الأفضل وضع الحقائق المفيدة في بداية/نهاية السياق، وتجميعها حسب الموضوع/المصدر، ووضع علامات عليها بالعناوين والمعرفات (IDs). تساعد إعادة الترتيب مع مراعاة الأهمية الموجهة بالاستعلام (query‑aware) والتنويع في نقل المقتطفات الرئيسية إلى بداية السياق.[3][13]

التكامل في مسار RAG (fusion → rerank → packaging)

مسار عمل نموذجي متعدد المراحل: استرجاع هجين (BM25 + dense) ← دمج (RRF/مزيج مرجح) ← إعادة ترتيب (Cross‑Encoder/ColBERT) ← تعبئة (إحدى الاستراتيجيات) ← توليد + استشهاد. البحث الهجين وRRF قويان ضد عدم توافق درجات أدوات الاسترجاع المختلفة؛ يزيد الـ cross-encoder من دقة المدخلات إلى LLM، مما يوفر التوكنات.[16][12][14][15]

تقييم الجودة ودراسات الاستئصال (Ablations)

يتم التقييم على مستويات الاسترجاع، التعبئة، والتوليد:

  • الاسترجاع: Recall@k, nDCG@k, MRR — مقاييس قياسية في استرجاع المعلومات.[24]
  • الموثوقية/التجذير (Faithfulness/groundedness): نسبة العبارات المدعومة بالاستشهادات؛ أطر عمل آلية (RAGAS, TruLens) + تحقق يدوي من الإسناد.[25][26][27]
  • QA الشامل (End‑to‑end QA): EM/F1/ROUGE حسب المهمة/مجموعة البيانات (NQ/HotpotQA، إلخ).[1]
  • الكفاءة: زمن الاستجابة p50/p95، عدد التوكنات، التكلفة بالدولار؛ مقارنة استراتيجيات التعبئة ومستويات الضغط بناءً على الجودة↔التكلفة.
  • دراسات الاستئصال (Ablations): تعطيل MMR/إزالة التكرار/الضغط/تغيير الترتيب لقياس مساهمة كل مكون (حتى 2025‑09‑10، توصي ممارسات أبحاث RAG بتوثيق قيم k وλ وأحجام المقاطع وحدود التوكنات بوضوح).[28]

توصيات عملية وقائمة تحقق

  • k والتنويع: ابدأ بـ k=20–40 مرشحًا من الاسترجاع الهجين؛ طبق MMR مع λ≈0.5–0.8؛ افرض عقوبة صارمة على التكرار بناءً على URL/ID/تجزئة النص.[11][16]
  • التقطيع: 200–400 توكن مع تداخل بنسبة 10–20% عند التقطيع الثابت؛ بالنسبة للمستندات القانونية-التقنية، غالبًا ما تكون خطة الجملة/النافذة (sentence/window) أكثر فائدة.[4][7]
  • الضغط: استخدم الترشيح الاستخلاصي بناءً على الاستعلام والتجريد الحذر؛ قم بتقليل/زيادة الطرق المشابهة لـ LLMLingua اعتمادًا على الموثوقية (faithfulness) على بياناتك (التحقق من صحة A/B إلزامي).[19][27]
  • الترتيب: ضع المقتطفات المهمة/ذات الثقة العالية في بداية المُوجِّه؛ قم بتجميعها حسب المصادر/المواضيع، ووضح المعرفات (IDs) والعناوين؛ ضع في اعتبارك تأثير lost‑in‑the‑middle (قد يساعد تكرار حقيقة أساسية في البداية والنهاية).[3]
  • إعادة الترتيب: إذا سمحت الميزانية، أضف Cross‑Encoder/ColBERT على أفضل k نتائج (k≈50–200) قبل التعبئة — فهذا يوفر توكنات التوليد ويزيد من الدقة.[13][15]
  • استراتيجيات احتياطية (Fallback): (1) نقص الحقائق ← طلب مصادر إضافية؛ (2) تجاوز حد التوكنات ← التحول من stuff→refine أو تفعيل الضغط؛ (3) ثقة منخفضة/تناقضات ← إجابة بالرفض مع قائمة واضحة بالمعرفات المفقودة (انظر القالب أدناه).

الكود الزائف لمسار التعبئة

# الإدخال: الاستعلام q
cands = retrieve(q, K_sparse, K_dense)          # بحث BM25, DPR إلخ.
cands = diversify_MMR(cands, lambda=0.7)        # تنويع (MMR)
snips = compress(query=q, items=cands, mode="extractive|abstractive", budget=tokens)
pkg   = package(snips, strategy="stuff|map_reduce|refine|tree")
resp  = generate(prompt=build_prompt(q, pkg), citations=True)  # LLM مع استشهادات

الهيكل الأساسي لقالب المُوجِّه (مقتطف)

[استعلام المستخدم]
{q}

[المصادر]
{# كل مقتطف مع المعرف (ID) والعنوان والرابط #}
- [{id}] {title} — {url}
{content_snippet}

[المتطلبات]
1) استخدم فقط الحقائق من المصادر المذكورة، مع الإشارة إليها باستخدام [ID].
2) إذا كانت البيانات غير كافية، اذكر ذلك واطلب توضيحات أو مصادر إضافية.
3) حافظ على بنية الإجابة واذكر قائمة بالمعرفات [ID] المستخدمة.


القيود والأسئلة المفتوحة

  • الهلوسة والتجميع في map‑reduce/refine: قد تُدخل الملخصات التجريدية حقائق جديدة؛ من الضروري وجود تعليمات واضحة حول الإسناد وآليات للتحقق من الاستشهادات.[20][27]
  • فقدان التفاصيل عند الضغط الشديد/التلخيص الهرمي؛ من المهم الاحتفاظ بروابط عكسية إلى المصدر الأصلي/الصفحة/الإزاحة.
  • قابلية النقل بين المجالات لأدوات الاسترجاع/إعادة الترتيب والضغط؛ يتطلب تكييفًا/ضبطًا دقيقًا على مجموعات البيانات الخاصة بالمجال.[28]
  • الخصوصية/معلومات التعريف الشخصية (PII) والتحفيظ في LLM: عند التوليد بدون تجذير صارم، قد يحدث تسرب لسلاسل نصية خاصة؛ استخدم المرشحات، والمخازن الخاصة، وسياسة الرفض.[29][30]
  • «أدوات التعبئة» القابلة للتدريب، الترتيب/التخطيط التكيفي، حلقات RLHF/التغذية الراجعة لزيادة الموثوقية، السياق متعدد اللغات والسياق الطويل جدًا — هي اتجاهات بحثية نشطة.[28][3]

روابط

  • LangChain: Summarization (stuff/map_reduce/refine). [٢٩]
  • LangChain: Text splitters. [٣٠]
  • LlamaIndex: Response Synthesizers (refine/tree). [٣١]
  • LlamaIndex: Node Parsers / SentenceSplitter / SemanticSplitter. [٣٢]
  • Haystack: SentenceWindowRetriever. [٣٣]
  • Haystack: PreProcessors / DocumentSplitter. [٣٤]
  • Weaviate: Hybrid search. [٣٥]
  • Pinecone: Hybrid search. [٣٦]
  • Cohere: Rerank API. [٣٧]
  • RAGAS (repo/docs). [٣٨] [٣٩]
  • TruLens (docs). [٤٠]

المراجع

  • Manning, C. D., Raghavan, P., Schütze, H. (2008). Introduction to Information Retrieval. Cambridge University Press. ISBN 978‑0521865715.
  • Nenkova, A., McKeown, K. (2011). Automatic Summarization. FnT IR, 5(2–3), 103–233. DOI:10.1561/1500000015.
  • Lewis, P., et al. (2020). Retrieval‑Augmented Generation for Knowledge‑Intensive NLP Tasks. NeurIPS. arXiv:2005.11401.
  • Khattab, O., Zaharia, M. (2020). ColBERT. SIGIR’20. DOI:10.1145/3397271.3401075.
  • Izacard, G., Grave, E. (2021). Fusion‑in‑Decoder. EACL. arXiv:2007.01282.
  • Ji, Z., et al. (2023). Survey of Hallucination in NLG. ACM CS. DOI:10.1145/3571730.
  • Gao, S., et al. (2024). RAG for LLM: A Survey. arXiv:2312.10997.

ملاحظات

  1. 1.0 1.1 1.2 Lewis, P., Perez, E., Piktus, A., Petroni, F., Karpukhin, V., et al. (2020). Retrieval‑Augmented Generation for Knowledge‑Intensive NLP Tasks. NeurIPS. arXiv:2005.11401. [١]
  2. 2.0 2.1 2.2 2.3 2.4 LangChain Docs. Summarization (stuff/map_reduce/refine/map_rerank). (تاريخ الوصول: 2025‑09‑10). [٢]
  3. 3.0 3.1 3.2 3.3 3.4 Liu, N. F., Lin, K., Hewitt, J., Paranjape, A., Bevilacqua, M., Petroni, F., Liang, P. (2024). Lost in the Middle: How Language Models Use Long Contexts. TACL. arXiv:2307.03172. [٣]
  4. 4.0 4.1 LangChain Docs. Text splitters (RecursiveCharacter/TokenTextSplitter). (تاريخ الوصول: 2025‑09‑10). [٤]
  5. LlamaIndex Docs. SentenceSplitter / TokenTextSplitter / SemanticSplitter. (تاريخ الوصول: 2025‑09‑10). [٥] [٦] [٧]
  6. LlamaIndex Docs. SemanticSplitterNodeParser. (تاريخ الوصول: 2025‑09‑10). [٨]
  7. 7.0 7.1 Haystack Docs. SentenceWindowRetriever. (تاريخ الوصول: 2025‑09‑10). [٩]
  8. Karpukhin, V., Oguz, B., Min, S., Lewis, P., Wu, L., Edunov, S., Chen, D., Yih, W.‑T. (2020). Dense Passage Retrieval for Open‑Domain Question Answering. EMNLP. arXiv:2004.04906. [١٠]
  9. Haystack Docs. PreProcessors / DocumentSplitter. (تاريخ الوصول: 2025‑09‑10). [١١] [١٢]
  10. Broder, A. Z. (1997). On the Resemblance and Containment of Documents. Compression and Complexity of Sequences. [١٣]
  11. 11.0 11.1 Carbonell, J., Goldstein, J. (1998). The Use of MMR, Diversity‑Based Reranking for Reordering Documents and Producing Summaries. SIGIR’98, pp. 335–336. DOI:10.1145/290941.291025.
  12. 12.0 12.1 Cormack, G. V., Clarke, C. L. A., Büttcher, S. (2009). Reciprocal Rank Fusion outperforms Condorcet and Individual Rank Learning Methods. SIGIR’09, pp. 758–759. DOI:10.1145/1571941.1572114. [١٤]
  13. 13.0 13.1 13.2 Nogueira, R., Cho, K. (2019). Passage Re‑ranking with BERT. arXiv:1901.04085. [١٥]
  14. 14.0 14.1 Cohere Docs. Rerank API overview. (تاريخ الوصول: 2025‑09‑10). [١٦]
  15. 15.0 15.1 15.2 Khattab, O., Zaharia, M. (2020). ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT. SIGIR’20, pp. 39–48. DOI:10.1145/3397271.3401075. arXiv:2004.12832.
  16. 16.0 16.1 16.2 Weaviate Docs. Hybrid search (BM25F + vector). (تاريخ الوصول: 2025‑09‑10). [١٧]
  17. Pinecone Docs. Hybrid search. (تاريخ الوصول: 2025‑09‑10). [١٨]
  18. Nenkova, A., McKeown, K. (2011). Automatic Summarization. Foundations and Trends in Information Retrieval, 5(2–3), 103–233. DOI:10.1561/1500000015.
  19. 19.0 19.1 Zhu, Y., Shao, Z., Li, M., et al. (2023). LLMLingua: Compressing Prompts for Accelerating LLM Inference. arXiv:2310.05736. [١٩]
  20. 20.0 20.1 Ji, Z., Lee, N., Frieske, R., et al. (2023). Survey of Hallucination in Natural Language Generation. ACM Computing Surveys, 55(12), Art.248. DOI:10.1145/3571730.
  21. 21.0 21.1 Izacard, G., Grave, E. (2021). Leveraging Passage Retrieval with Generative Models for Open‑Domain QA (Fusion‑in‑Decoder). EACL. arXiv:2007.01282. [٢٠]
  22. 22.0 22.1 LlamaIndex Docs. Response Synthesizers: refine. (تاريخ الوصول: 2025‑09‑10). [٢١]
  23. 23.0 23.1 LlamaIndex Docs. Tree Summarize. (تاريخ الوصول: 2025‑09‑10). [٢٢]
  24. Manning, C. D., Raghavan, P., Schütze, H. (2008). Introduction to Information Retrieval. Cambridge Univ. Press. (انظر الفصول حول nDCG/MRR). [٢٣]
  25. Es, S., et al. (2023). RAGAS: Automated Evaluation of Retrieval‑Augmented Generation. arXiv:2309.15217. [٢٤]
  26. TruLens Docs. Evaluating RAG (groundedness, relevance). (تاريخ الوصول: 2025‑09‑10). [٢٥]
  27. 27.0 27.1 27.2 Rashkin, H., Nakov, P., et al. (2023). Measuring Attribution in Natural Language Generation. Computational Linguistics, 49(4), 1207–1261. DOI:10.1162/coli_a_00486.
  28. 28.0 28.1 28.2 Gao, S., et al. (2024). Retrieval‑Augmented Generation for Large Language Models: A Survey. arXiv:2312.10997. [٢٦]
  29. Carlini, N., Tramèr, F., et al. (2021). Extracting Training Data from Large Language Models. USENIX Security. [٢٧]
  30. Shokri, R., Stronati, M., Song, C., Shmatikov, V. (2017). Membership Inference Attacks Against ML Models. IEEE S&P. [٢٨]