
Black-box фреймворк для атак, который перехватывает процесс рассуждения в агентных системах генерации с дополненной выборкой (retrieval-augmented generation) путём внедрения отравленных документов, с поддержкой множества методов атак и наборов данных.
Выполните следующие команды из родительского каталога клонированного репозитория KidnapRAG.
cd KidnapRAG
conda create -n KidnapRAG python=3.10
conda activate KidnapRAG
pip install -r requirements.txt
Затем загрузите корпусные датасеты 📄 и переместите датасет ReAct в /KidnapRAG/ReAct, а датасет WebThinker — в /KidnapRAG/WebThinker
Примеры на HotpotQA с моделью 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 поддерживает Llama-3.3-70B-Instruct и Qwen/Qwen2.5-32B-Instruct.
--dataset поддерживает hotpotqa, musique и 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 дополнительно поддерживает следующие методы атаки: naive для наивной атаки, ignore для атаки игнорирования, completion_real для атаки ложного завершения, completion_realcmb для комбинированной атаки, topicattack для TopicAttack, poisonedRAG для PoisonedRAG и paradox для RAG Paradox.
BM, BCM, BCCM, BCCCM, BCCCCM)cd ..
python concat.py --dataset hotpotqa --gen_model llama70b
--gen_model поддерживает llama70b для Llama-3.3-70B-Instruct и qwen25 для 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
Примеры на HotpotQA с моделью QwQ.
Выполняйте этот раздел из корня репозитория 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
Аргументы:
./datasets/hotpotqa/hotpotqa_promptinject_select.json: путь к запросам./datasets/hotpotqa_corpus/hotpotqa_corpus.jsonl: путь к корпусу./results/hotpotqa/clean_qwq.json: путь к результатамcd 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 поддерживает deepseek_32b для lixiaoxi45/WebThinker-R1-32B и qwq для 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
Аргументы:
./datasets/hotpotqa/hotpotqa_promptinject_select.json: путь к запросам./datasets/hotpotqa_corpus/hotpotqa_corpus.jsonl: путь к корпусу./datasets/hotpotqa_poisoned_corpus/WEBTHINKER_BM_qwq.jsonl: путь к отравленному корпусу./results/hotpotqa/BM.json: путь к результатам@misc{
}