
अनुसंधान कार्यान्वयन: छलावरण दस्तावेज़ों का उपयोग करके पुनर्प्राप्ति-संवर्धित भाषा मॉडलों के विरुद्ध विषाक्तता हमला, जो फ़िल्टरिंग सुरक्षा को दरकिनार कर गलत उत्तर उत्पन्न करने के लिए प्रेरित करता है।
EMNLP 2026 पेपर CamoDocs: A Poisoning Attack Against Retrieval-Augmented Language Models Using Camouflaged Documents की आधिकारिक रिपॉजिटरी।
CamoDocs रिट्रीवल-ऑगमेंटेड जनरेशन (RAG) के विरुद्ध एक नॉलेज डेटाबेस पॉइज़निंग हमला है, जिसमें क्वेरी समावेशन की आवश्यकता नहीं होती। प्रत्येक प्रतिकूल उप-दस्तावेज़ को एक अनुकूलित हानिरहित उप-दस्तावेज़ के साथ जोड़कर छिपाया जाता है, ताकि परिणामी पॉइज़न किए गए दस्तावेज़ उन क्वेरी-ओवरलैप कलाकृतियों से बच सकें जिन पर फ़िल्टरिंग रक्षा तंत्र निर्भर करते हैं।

CamoDocs हानिरहित और प्रतिकूल उप-दस्तावेज़ उत्पन्न करता है, हानिरहित भागों को डिस्पर्शन टोकन और कोहेरेंस फ़िल्टरिंग के साथ अनुकूलित करता है, और उन्हें मर्ज करके पॉइज़न किए गए दस्तावेज़ बनाता है जो फ़िल्टरिंग रक्षा तंत्र से बचते हैं और लक्षित गलत उत्तर उत्पन्न करते हैं।
Python 3.10, CUDA 12.8, PyTorch 2.8.0 के साथ परीक्षण किया गया। 8B-श्रेणी के पीड़ितों के लिए एक 48 GB GPU पर्याप्त है। Mixtral-8x7B एक 48 GB कार्ड पर फिट नहीं होता; इसे कई कार्डों में विभाजित करने के लिए --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 फ़िल्टर रक्षा तंत्र को अतिरिक्त रूप से 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
प्रत्येक स्क्रिप्ट Llama-3.1-8B पीड़ित के साथ HotpotQA पर एक पंक्ति का पुनरुत्पादन करती है। किसी अन्य डेटासेट के लिए वातावरण में 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)
पहले छह को 1 GPU की आवश्यकता होती है। LLM फ़िल्टर अतिरिक्त रूप से दूसरे शेल में एक 20B क्रिटिक चलाता है, इसलिए पीड़ित के साथ-साथ उस क्रिटिक के लिए पर्याप्त GPU मेमोरी की आवश्यकता होती है। हमारे रनों ने चार 48 GB कार्डों का उपयोग किया; अपने स्वयं के हार्डवेयर से मेल खाने के लिए TP और LM_DEPLOY_TP सेट करें:
# शेल 1
conda activate camodocs_vllm
bash scripts/gpt_oss_safeguard_vllm_serve.sh # :8001 पर सेवा करता है, TP=4
# शेल 2
conda activate camodocs
bash scripts/llm_filter_eval.sh # पहले क्रिटिक की स्वास्थ्य-जाँच करता है
चरण 1-2 GPT-4o-mini के साथ हानिरहित और प्रतिकूल अनुच्छेदों का मसौदा तैयार करते हैं, चरण 3 टोकन-स्तरीय अनुकूलन लागू करता है, चरण 4 रक्षा तंत्रों के विरुद्ध मूल्यांकन करता है।
bash scripts/gen_synth_benign_hotpotqa.sh # चरण 1: हानिरहित वाहक मसौदे
bash scripts/gen_adv_hotpotqa.sh # चरण 2: प्रतिकूल मसौदे
bash scripts/camodocs_token_manipulation.sh # चरण 3: CamoDocs टोकन हेरफेर
bash scripts/eval_trustrag.sh # चरण 4: मूल्यांकन
स्क्रिप्ट रिपोर्ट किए गए रनों के लिए उपयोग किए गए सटीक हाइपरपैरामीटर रखती हैं (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 का contriever कोड है और CC BY-NC 4.0 के अंतर्गत रहता है, इसलिए वह निर्देशिका केवल गैर-वाणिज्यिक उपयोग के लिए है।
यह पैकेज अनुसंधान और पुनरुत्पादन उद्देश्यों के लिए प्रदान किया गया है। जारी किया गया कोड पेपर में रिपोर्ट किए गए प्रयोगों को पुनरुत्पादित करने और RAG मजबूती और रक्षा पर अनुसंधान का समर्थन करने के लिए है।
पैकेज सार्वजनिक रूप से उपलब्ध डेटासेट, मॉडल और सॉफ़्टवेयर लाइब्रेरी का उपयोग उनके संबंधित लाइसेंस और उपयोग की शर्तों के तहत करता है। HotpotQA, NQ और MS-MARCO जैसे BEIR डेटासेट इस पैकेज में पुनर्वितरित होने के बजाय आधिकारिक BEIR URL से डाउनलोड किए जाते हैं।
पाइपलाइन द्वारा उपयोग किए जाने वाले मॉडल वेट और API, जिनमें 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},
}