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 が 1 枚あれば十分です。Mixtral-8x7B は 48 GB カード 1 枚には収まらないため、--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
各スクリプトは、Llama-3.1-8B 被害モデルを用いた HotpotQA 上の 1 行を再現します。別のデータセットを使用する場合は、環境変数に 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)
最初の 6 つは GPU が 1 枚必要です。LLM Filter はさらに別のシェルで 20B の批評モデルを実行するため、被害モデルに加えてその批評モデル用の十分な GPU メモリが必要です。私たちの実行では 48 GB カードを 4 枚使用しました。お使いのハードウェアに合わせて 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/)、および 3 つのデータセットすべてに対するステージ 2/3 の出力例(data_examples/)が同梱されています。
報告されたすべての数値は、同梱のアーティファクトから HotpotQA、NQ、MS-MARCO で再現できます。(ステージ 2 自体を再実行するには、NQ および MS-MARCO 用の独自の回答ファイルが必要です — 試行すると gen_adv.py がこれを説明します。)
このコードベースは、同じく MIT ライセンスである元の PoisonedRAG リポジトリに従い、MIT ライセンス(LICENSE)の下で提供されます。
1 つの例外: 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},
}