
Framework d’attaque en boîte noire qui détourne le raisonnement des systèmes de génération augmentée par récupération agentiques en injectant des documents empoisonnés, avec prise en charge de multiples méthodes d’attaque et jeux de données.
Exécutez les commandes suivantes depuis le répertoire parent du dépôt KidnapRAG cloné.
cd KidnapRAG
conda create -n KidnapRAG python=3.10
conda activate KidnapRAG
pip install -r requirements.txt
Ensuite, téléchargez les jeux de données du corpus 📄 et déplacez le jeu de données ReAct vers /KidnapRAG/ReAct et le jeu de données WebThinker vers /KidnapRAG/WebThinker
Exemples sur HotpotQA avec le modèle Llama.
cd ReAct/ReAct
CUDA_VISIBLE_DEVICES=0,1,2,3 python attack_react.py --attack_method clean --model_path meta-llama/Llama-3.3-70B-Instruct --seed 1 --dataset hotpotqa
--model_path prend en charge Llama-3.3-70B-Instruct et Qwen/Qwen2.5-32B-Instruct.
--dataset prend en charge hotpotqa, musique et 2wikimultihopqa.
CUDA_VISIBLE_DEVICES=0,1 python generate_attack_doc_kill.py --input_path /KidnapRAG/ReAct/results/adv_targeted_results/hotpotqa_seed1_clean_llama70b.json --gpu_num 2 --dataset hotpotqa --type ours
--type prend également en charge les méthodes d'attaque suivantes : naive pour l'attaque naïve, ignore pour l'attaque par ignorance, completion_real pour l'attaque par complétion factice, completion_realcmb pour l'attaque combinée, topicattack pour TopicAttack, poisonedRAG pour PoisonedRAG et paradox pour RAG Paradox.
BM, BCM, BCCM, BCCCM, BCCCCM)cd ..
python concat.py --dataset hotpotqa --gen_model llama70b
--gen_model prend en charge llama70b pour Llama-3.3-70B-Instruct et qwen25 pour Qwen/Qwen2.5-32B-Instruct.
CUDA_VISIBLE_DEVICES=0 python scripts/build_index.py \
--corpus_path /KidnapRAG/ReAct/datasets/hotpotqa/REACT_BM_llama70b.jsonl \
--output_dir /KidnapRAG/ReAct/datasets/hotpotqa/REACT_BM_llama70b \
--model_name intfloat/e5-large-v2
cd ReAct
CUDA_VISIBLE_DEVICES=0,1,2,3 python attack_react.py --attack_method BM --model_path meta-llama/Llama-3.3-70B-Instruct --seed 1 --dataset hotpotqa
Exemples sur HotpotQA avec le modèle QwQ.
Exécutez cette section depuis la racine du dépôt KidnapRAG.
cd Webthinker
bash scripts/webthinker/qwq_clean.sh \
./datasets/hotpotqa/hotpotqa_promptinject_select.json \
./datasets/hotpotqa_corpus/hotpotqa_corpus.jsonl \
./results/hotpotqa/clean_qwq.json
Arguments :
./datasets/hotpotqa/hotpotqa_promptinject_select.json : chemin de la requête./datasets/hotpotqa_corpus/hotpotqa_corpus.jsonl : chemin du corpus./results/hotpotqa/clean_qwq.json : chemin des résultatscd scripts
CUDA_VISIBLE_DEVICES=0,1 python generate_attack_doc_kill.py --input_path /KidnapRAG/Webthinker/results/hotpotqa/clean_qwq.json --gpu_num 2 --dataset hotpotqa --type ours
BM, BCM, BCCM, BCCCM, BCCCCM)cd ..
python concat.py --dataset hotpotqa --gen_model qwq
--gen_model prend en charge deepseek_32b pour lixiaoxi45/WebThinker-R1-32B et qwq pour Qwen/QwQ-32B.
bash scripts/webthinker/qwq_attack.sh \
./datasets/hotpotqa/hotpotqa_promptinject_select.json \
./datasets/hotpotqa_corpus/hotpotqa_corpus.jsonl \
./datasets/hotpotqa_poisoned_corpus/WEBTHINKER_BM_qwq.jsonl \
./results/hotpotqa/BM.json
Arguments :
./datasets/hotpotqa/hotpotqa_promptinject_select.json : chemin de la requête./datasets/hotpotqa_corpus/hotpotqa_corpus.jsonl : chemin du corpus./datasets/hotpotqa_poisoned_corpus/WEBTHINKER_BM_qwq.jsonl : chemin du corpus empoisonné./results/hotpotqa/BM.json : chemin des résultats@misc{
}