
تنفيذ بحثي لهجوم تسميم ضد نماذج اللغة المعززة بالاسترجاع باستخدام مستندات مموهة للتهرب من دفاعات التصفية وتحفيز إجابات غير صحيحة.
المستودع الرسمي لورقة EMNLP 2026 CamoDocs: هجوم تسميم ضد نماذج اللغة المعززة بالاسترجاع باستخدام مستندات مموهة.
CamoDocs هو هجوم تسميم لقاعدة المعرفة ضد التوليد المعزز بالاسترجاع (RAG) لا يتطلب تضمين الاستعلام. يتم تمويه كل مستند فرعي عدائي من خلال دمجها مع مستند فرعي حميد مُحسَّن، بحيث تتجنب المستندات المسمومة الناتجة آثار تداخل الاستعلام التي تعتمد عليها دفاعات التصفية.

يولّد CamoDocs مستندات فرعية حميدة وعدائية، ويحسّن الأجزاء الحميدة باستخدام رموز التشتيت وتصفية التماسك، ويدمجها لإنشاء مستندات مسمومة تتجنب دفاعات التصفية وتستحث الإجابة غير الصحيحة المستهدفة.
تم اختباره مع Python 3.10 وCUDA 12.8 وPyTorch 2.8.0. وحدة معالجة رسومية واحدة بسعة 48 جيجابايت كافية للضحايا من فئة 8B. لا يتسع Mixtral-8x7B على بطاقة واحدة بسعة 48 جيجابايت؛ استخدم --lm_deploy_tp لتقسيمه عبر عدة بطاقات.
conda create -n camodocs python=3.10 -y
conda activate camodocs
pip install -r requirements.txt
python -m spacy download en_core_web_sm
python -c "import nltk; nltk.download('punkt'); nltk.download('stopwords')"
دفاع LLM Filter يتطلب إضافياً openai/gpt-oss-safeguard-20b، والذي يتطلب حزمة vLLM/transformers/torch أحدث، لذا فهو موجود في بيئته الخاصة:
conda create -n camodocs_vllm python=3.10 -y
conda activate camodocs_vllm
pip install -r requirements_vllm.txt
قم بتعيين هذه أولاً. يتحقق كل سكربت من المتغيرات التي يحتاجها ويخرج فوراً إذا كان أحدها مفقوداً.
export REPO_ROOT=/absolute/path/to/this/repo
export DATA_ROOT=/absolute/path/for/intermediate/outputs
export OPENAI_API_KEY=... # LLM judge, GPT-4o-mini synthesis
export HF_TOKEN=... # gated models (Llama-3.1, Mixtral)
ثم قم بتشغيل أي تقييم دفاع. تتيح لك القطع المرفقة تخطي المراحل 1-3 بالكامل:
bash scripts/eval_trustrag.sh
يعيد كل سكربت إنتاج صف واحد على HotpotQA مع ضحية Llama-3.1-8B. لمجموعة بيانات أخرى، قم بتعيين EVAL_DATASET=nq (أو msmarco) في البيئة؛ لضحية أخرى، قم بتعديل MODEL_NAME في السكربت.
bash scripts/eval_trustrag.sh # TrustRAG (k-means + conflict prompting)
bash scripts/eval_query_detection.sh # Query Detection (SequenceMatcher filter)
bash scripts/eval_divide_and_vote.sh # Divide-and-Vote
bash scripts/eval_robustrag.sh # RobustRAG (keyword aggregation)
bash scripts/eval_isolation_forest.sh # Isolation Forest
bash scripts/eval_rerank.sh # Cross-encoder rerank (bge-reranker-v2-m3)
bash scripts/llm_filter_eval.sh # LLM Filter (needs the vLLM critic below)
تحتاج الأسكربتات الستة الأولى إلى وحدة معالجة رسومية واحدة. LLM Filter يشغّل إضافياً ناقداً بحجم 20B في غلاف ثانٍ، لذا يحتاج إلى ذاكرة GPU كافية لذلك الناقد بجانب الضحية. استخدمت عملياتنا أربع بطاقات بسعة 48 جيجابايت؛ قم بتعيين TP وLM_DEPLOY_TP ليتوافقا مع أجهزتك الخاصة:
# Shell 1
conda activate camodocs_vllm
bash scripts/gpt_oss_safeguard_vllm_serve.sh # serves on :8001, TP=4
# Shell 2
conda activate camodocs
bash scripts/llm_filter_eval.sh # health-checks the critic first
تصوغ المرحلتان 1-2 مقاطع حميدة وعدائية باستخدام GPT-4o-mini، وتطبق المرحلة 3 التحسين على مستوى الرموز، وتقيّم المرحلة 4 ضد الدفاعات.
bash scripts/gen_synth_benign_hotpotqa.sh # Stage 1: benign carrier drafts
bash scripts/gen_adv_hotpotqa.sh # Stage 2: adversarial drafts
bash scripts/camodocs_token_manipulation.sh # Stage 3: CamoDocs token manipulation
bash scripts/eval_trustrag.sh # Stage 4: evaluation
تحمل الأسكربتات المعلمات الفائقة الدقيقة المستخدمة في عمليات التشغيل المبلغ عنها (beta=10, alpha=30, m=1000, m'=100, top-k=5).
يتم تنزيل مجموعات بيانات BEIR تلقائياً عند أول استخدام، في ${REPO_ROOT}/datasets/. تقوم كل مرحلة بذلك، لذا لا توجد خطوة إعداد بيانات منفصلة. لجلبها مسبقاً بدلاً من ذلك:
mkdir -p ${REPO_ROOT}/datasets && cd ${REPO_ROOT}/datasets
for ds in hotpotqa nq msmarco; do
wget https://public.ukp.informatik.tu-darmstadt.de/thakur/BEIR/datasets/${ds}.zip
unzip ${ds}.zip
done
لتخطي المعالجة المسبقة المكلفة، يتضمن هذا الإصدار استرجاعات Contriever محسوبة مسبقاً (results/beir_results/)، ومجموعات فرعية ثابتة لتقييم 1,000 استعلام (target_queries_fixed/)، ومخرجات أمثلة للمرحلتين 2-3 (data_examples/) لجميع مجموعات البيانات الثلاث.
جميع الأرقام المبلغ عنها قابلة لإعادة الإنتاج لـ HotpotQA وNQ وMS-MARCO من القطع المرفقة. (إعادة تشغيل المرحلة 2 نفسها تتطلب ملف الإجابات الخاص بك لـ NQ وMS-MARCO — يشرح gen_adv.py ذلك إذا حاولت.)
يُوفَّر هذا الكود تحت رخصة MIT (LICENSE)، باتباع مستودع PoisonedRAG الأصلي، وهو أيضاً تحت MIT.
استثناء واحد: src/contriever_src/ هو كود Meta's contriever ويبقى تحت CC BY-NC 4.0، لذا فهذا الدليل للاستخدام غير التجاري فقط.
يُوفَّر هذا الحزمة لأغراض البحث وإعادة الإنتاج. الكود المُصدَر مقصود لإعادة إنتاج التجارب المبلغ عنها في الورقة ودعم البحث في متانة RAG والدفاعات.
تستخدم الحزمة مجموعات بيانات ونماذج ومكتبات برمجية متاحة للعموم بموجب تراخيصها وشروط استخدامها الخاصة. يتم تنزيل مجموعات بيانات BEIR مثل HotpotQA وNQ وMS-MARCO من روابط BEIR الرسمية بدلاً من إعادة توزيعها في هذه الحزمة.
أوزان النماذج وواجهات برمجة التطبيقات المستخدمة في خط الأنابيب، بما في ذلك GPT-4o-mini وGPT-4.1-mini وLlama-3.1-8B وQwen3-8B وMixtral-8x7B وContriever وANCE وGPT-2 وbge-reranker-v2-m3 وgpt-oss-safeguard-20b، تظل خاضعة لتراخيص وسياسات استخدام مقدميها الأصليين. لا تمنح هذه الحزمة حقوقاً إضافية لتلك القطع من طرف ثالث.
المستندات العدائية والقطع الوسيطة المضمنة في هذه الحزمة مقدمة فقط للتقييم البحثي المتحكم فيه لمتانة RAG. لا ينبغي استخدامها لمهاجمة أنظمة قيد التشغيل أو تسميم قواعد المعرفة في العالم الحقيقي.
@misc{jung2026camodocs,
title={CamoDocs: A Poisoning Attack Against Retrieval-Augmented Language Models Using Camouflaged Documents},
author={Jaewon Jung and Haizhong Zheng and Hongsun Jang and Jaeyong Song and Beidi Chen and Jinho Lee},
year={2026},
eprint={2608.28389},
archivePrefix={arXiv},
primaryClass={cs.CR},
url={https://arxiv.org/abs/2608.28389},
}