
هذا المستودع يوفر التنفيذ الرسمي لـ POISONCRAFT: التسميم العملي للتوليد المعزز بالاسترجاع لنماذج اللغة الكبيرة.
هذا المستودع يوفر التطبيق الرسمي لـ POISONCRAFT: Practical Poisoning of Retrieval-Augmented Generation for Large Language Models.

يهدف POISONCRAFT إلى إظهار كيفية قيام جهة خبيثة بزراعة محتوى "مُسمّم" داخل المجموعة النصية المستخدمة في خطوط أنابيب التوليد المعزز بالاسترجاع (RAG)، مما يضلل نموذج اللغة الكبير ليهذيء أو يستشهد بمحتوى خبيث. توفر هذه القاعدة البرمجية سكربتات من أجل:
تحضير ومعالجة مجموعات البيانات القياسية (مثل Natural Questions وMS MARCO وHotpotQA).
حقن لواحق عدائية (أي "سموم") في نص شبيه بالاستعلام بهدف تقليل جودة نتائج الاسترجاع أو التلاعب بها.
تقييم فعالية التسميم باستخدام أدوات استرجاع مختلفة (مثل Contriever وSimCSE وBGE) وقياس قابلية النقل.
فيما يلي دليل عام لإعداد البيئة. المتطلبات الدقيقة مذكورة في ملف requirements.txt. نوصي بإنشاء بيئة افتراضية جديدة لتجنب التعارضات:
# Example using conda
conda create -n PoisonCraft python=3.10
conda activate PoisonCraft
# Install dependencies
pip install torch==2.4.1 torchvision==0.19.1 torchaudio==2.4.1 --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt
تعتمد أجزاء معينة من هذا المشروع، مثل تصنيف النطاق وتصنيف الاستعلامات، على استدعاءات API (مثل نماذج OpenAI GPT). يجب عليك إعداد مفتاح API وإعدادات النموذج كما يلي:
"api_key_info": {
"api_keys": ["your_openai_api_key"],
"api_key_use": 0
}
ملاحظة: يدعم هذا المشروع موفري نماذج لغوية كبيرة متعددين (مثل OpenAI وLlama وPaLM2). تأكد من اختيار ملف الإعداد المناسب لنموذجك.
نوفر العديد من سكربتات bash داخل مجلد scripts لمراحل مختلفة من خط الأنابيب. فيما يلي مرجع خطوة بخطوة:
1. تنزيل مجموعات البيانات وتحضيرها
قم بتشغيل scripts/run_prepare_dataset.sh لتنزيل مجموعات البيانات وفك ضغطها وإنشاء تقسيمات التدريب/الاختبار:
bash scripts/run_prepare_dataset.sh
يستدعي هذا السكربت داخليًا:
2. معالجة مجموعات البيانات
لحساب درجات التشابه الأرضية الصحيحة لأفضل k لكل نطاق، قم بتشغيل:
bash scripts/run_process_data.sh
3. [اختياري] تقييم BEIR للحقيقة الأرضية
نفّذ هذه الخطوة فقط إذا كنت تريد تقييم نموذج استرجاع، فقد تستغرق وقتًا طويلًا. اتبع الخطوات التالية:
python src/beir_eval/eval_beir.py --model_code bge-small --dataset nq --top_k 100
bash scripts/run_process_data.sh
لتوليد لواحق عدائية (أي "سموم")، يمكنك استخدام:
bash scripts/run_multi_poisoncraft.sh
يمكنك تخصيص معاملات مثل:
بعد توليد اللواحق العدائية، يمكنك تقييم عدد الاستعلامات التي تحصل على مراجع "مُسمّمة" عن طريق تشغيل:
bash scripts/run_retrieval_attack.sh
يقوم هذا السكربت بـ:
بدلاً من ذلك، لتقييم مستوى نموذج اللغة الكبير (أي التوليد النصي النهائي مع تضمين نتائج الاسترجاع لأعلى k)، يمكنك استخدام:
bash scripts/run_target_attack.sh