RAGSentinel: Certifiable Geometric Consensus for Robust Retrieval-Augmented Generation
Organizations: University of North Texas · University of Louisville
Abstract
Retrieval-augmented generation (RAG) improves the factuality of large language models by grounding responses in external documents, but it also exposes a critical security vulnerability: adversarial documents injected into the knowledge database can enter the context window and steer the model toward targeted incorrect answers. Existing post-retrieval defenses rely on instruction following, parametric knowledge, or text-level consistency, all of which can be imitated or optimized against by adaptive attackers. We propose RAGSentinel, a training-free, label-free defense for black-box RAG systems. RAGSentinel uses a surrogate encoder to measure query-conditioned hidden-state shifts induced by retrieved documents, removes shared topic directions, and filters poisoned documents as geometric outliers from a robust majority consensus. We prove that, under an honest-majority assumption and a representation-level separation condition, RAGSentinel exactly recovers a poison-free majority-sized context. Experiments across three question-answering datasets, three LLM families, and multiple poisoning attacks show that RAGSentinel consistently achieves low attack success rates while preserving competitive accuracy and remaining effective against adaptive attacks with full pipeline knowledge.
Figures & tables
| NQ | HotpotQA | MS-MARCO | |||||||||||
| Model | Method | No attack | PoisonedRAG | PIA | AD | No attack | PoisonedRAG | PIA | AD | No attack | PoisonedRAG | PIA | AD |
| ACC | ACC/ASR | ACC/ASR | ACC/ASR | ACC | ACC/ASR | ACC/ASR | ACC/ASR | ACC | ACC/ASR | ACC/ASR | ACC/ASR | ||
| Mistral-7B | Vanilla RAG | 0.71 | 0.53/0.40 | 0.58/0.29 | 0.49/0.45 | 0.73 | 0.38/0.60 | 0.42/0.51 | 0.40/0.52 | 0.82 | 0.59/0.34 | 0.66/0.24 | 0.66/0.29 |
| RobustRAG | 0.64 | 0.69/0.11 | 0.68/0.09 | 0.69/0.11 | 0.57 | 0.57/0.30 | 0.56/0.31 | 0.59/0.26 | 0.87 | 0.87/0.03 | 0.85/0.03 | 0.86/0.04 | |
| InstructRAG | 0.72 | 0.54/0.40 | 0.57/0.29 | 0.62/0.29 | 0.71 | 0.43/0.52 | 0.42/0.52 | 0.56/0.30 | 0.82 | 0.61/0.32 | 0.70/0.23 | 0.70/0.21 | |
| AstuteRAG | 0.69 | 0.70/0.10 | 0.69/0.03 | 0.67/0.12 | 0.68 | 0.67/0.17 | 0.64/0.15 | 0.63/0.24 | 0.85 | 0.81/0.12 | 0.85/0.08 | 0.83/0.11 | |
| NQ | HotpotQA | MS-MARCO | |
|---|---|---|---|
| ACC/ASR | ACC/ASR | ACC/ASR | |
| 8 | 0.60/0.05 | 0.60/0.08 | 0.69/0.10 |
| 10 | 0.63/0.04 | 0.63/0.09 | 0.77/0.05 |
| 12 | 0.61/0.03 | 0.66/0.07 | 0.74/0.05 |
| 14 | 0.66/0.02 | 0.61/0.06 | 0.73/0.07 |
| 16 | 0.68/0.01 | 0.60/0.05 | 0.75/0.07 |
| Method | NQ | HotpotQA | MS-MARCO |
|---|---|---|---|
| Vanilla RAG | 0.49 | 0.49 | 0.48 |
| RobustRAG | 3.15 | 3.62 | 2.44 |
| InstructRAG | 0.89 | 0.77 | 0.96 |
| AstuteRAG | 2.29 | 2.13 | 2.96 |
| TrustRAG | 2.80 | 2.60 | 2.54 |
| CrAM | 1.22 | 1.22 | 1.06 |
| Surrogate | Pooling | NQ | HotpotQA | MS-MARCO |
|---|---|---|---|---|
| BGE-M3 | CLS | 0.61/0.04 | 0.62/0.11 | 0.75/0.08 |
| Mean | 0.60/0.09 | 0.58/0.14 | 0.73/0.10 | |
| Last token | 0.63/0.04 | 0.63/0.09 | 0.77/0.05 | |
| E5-Mistral-7B | Mean | 0.61/0.06 | 0.60/0.08 | 0.75/0.07 |
| Last token | 0.64/0.03 | 0.64/0.04 | 0.78/0.04 | |
| Phi-3.5-mini | Mean | 0.58/0.08 | 0.57/0.09 | 0.70/0.12 |
| Notation | Definition |
|---|---|
| User query | |
| Set of retrieved documents | |
| Number of retrieved documents; number of injected poisoned documents | |
| Surrogate encoder for hidden-state extraction; deployed black-box LLM | |
| Hidden-state shift induced by document | |
| Residual vector after adaptive norm clipping and topic-direction removal |
Appendix figures & tables10 assets
Supplementary material from the paper’s appendix.
Appendix
| Attack | NQ | HotpotQA | MS-MARCO | ||||||
|---|---|---|---|---|---|---|---|---|---|
| DACC | FPR | FNR | DACC | FPR | FNR | DACC | FPR | FNR | |
| PoisonedRAG | 0.941 | 0.06 | 0.05 | 0.963 | 0.03 | 0.10 | 0.940 | 0.06 | 0.06 |
| PIA | 0.957 | 0.04 | 0.07 | 0.975 | 0.02 | 0.07 | 0.968 | 0.03 | 0.05 |
| AD | 0.968 | 0.03 | 0.05 | 0.981 | 0.01 | 0.10 | 0.977 | 0.02 | 0.05 |
| Method | NQ | HotpotQA | MS-MARCO | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Anchor mimicry | Norm boundary | Subspace camouflage | Anchor mimicry | Norm boundary | Subspace camouflage | Anchor mimicry | Norm boundary | Subspace camouflage | |
| ACC/ASR | ACC/ASR | ACC/ASR | ACC/ASR | ACC/ASR | ACC/ASR | ACC/ASR | ACC/ASR | ACC/ASR | |
| Vanilla RAG | 0.54/0.38 | 0.56/0.37 | 0.49/0.43 | 0.45/0.52 | 0.48/0.52 | 0.44/0.53 | 0.59/0.34 | 0.58/0.33 | 0.60/0.31 |
| RobustRAG | 0.66/0.15 | 0.68/0.12 | 0.69/0.12 | 0.57/0.30 | 0.58/0.28 | 0.56/0.30 | 0.87/0.03 | 0.86/0.04 | 0.87/0.03 |
| InstructRAG | 0.55/0.39 | 0.56/0.36 | 0.54/0.38 | 0.44/0.49 | 0.45/0.49 | 0.42/0.50 | 0.59/0.35 | 0.56/0.36 | 0.59/0.32 |
| AstuteRAG | 0.70/0.08 | 0.69/0.09 | 0.70/0.12 | 0.66/0.17 | 0.67/0.16 | 0.67/0.16 | 0.80/0.12 | 0.80/0.12 | 0.80/0.11 |
| NQ | HotpotQA | MS-MARCO | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Variant | No attack | PoisonedRAG | PIA | AD | No attack | PoisonedRAG | PIA | AD | No attack | PoisonedRAG | PIA | AD |
| ACC | ACC/ASR | ACC/ASR | ACC/ASR | ACC | ACC/ASR | ACC/ASR | ACC/ASR | ACC | ACC/ASR | ACC/ASR | ACC/ASR | |
| w/ Arithmetic Mean | 0.68 | 0.55/0.08 | 0.52/0.13 | 0.58/0.09 | 0.63 | 0.57/0.09 | 0.59/0.13 | 0.66/0.12 | 0.80 | 0.82/0.13 | 0.69/0.11 | 0.77/0.13 |
| w/o Topic-Direction Removal | 0.62 | 0.58/0.09 | 0.63/0.11 | 0.58/0.09 | 0.61 | 0.55/0.12 | 0.57/0.12 | 0.60/0.09 | 0.80 | 0.79/0.09 | 0.68/0.11 | 0.77/0.09 |
| w/o Active Subspace Selection | 0.63 | 0.53/0.12 | 0.54/0.09 | 0.52/0.10 | 0.63 | 0.63/0.09 | 0.53/0.12 | 0.54/0.15 | 0.80 | 0.74/0.08 | 0.70/0.15 | 0.74/0.08 |
| w/o Adaptive Norm Clipping | 0.65 | 0.61/0.07 | 0.63/0.10 | 0.58/0.07 | 0.67 | 0.54/0.17 | 0.56/0.09 | 0.57/0.11 | 0.82 | 0.76/0.10 | 0.70/0.14 | 0.72/0.14 |
| Centering method | ||||
|---|---|---|---|---|
| No topic removal | 0.64/0.10 | 0.56/0.19 | 0.46/0.31 | 0.37/0.47 |
| Coordinate-wise median | 0.67/0.06 | 0.61/0.11 | 0.53/0.21 | 0.44/0.35 |
| Geometric median | 0.67/0.05 | 0.62/0.11 | 0.54/0.20 | 0.45/0.34 |
| Arithmetic mean | 0.68/0.06 | 0.61/0.12 | 0.53/0.22 | 0.44/0.36 |
| Oracle benign mean | 0.69/0.05 | 0.62/0.10 | 0.55/0.19 | 0.46/0.33 |
| Retriever | Backbone LLM | NQ | HotpotQA | MS-MARCO |
|---|---|---|---|---|
| ACC/ASR | ACC/ASR | ACC/ASR | ||
| Contriever | Mistral-7B | 0.63/0.04 | 0.63/0.09 | 0.77/0.05 |
| Llama-3.1-8B | 0.68/0.03 | 0.60/0.06 | 0.71/0.05 | |
| Qwen-2.5-7B | 0.65/0.06 | 0.64/0.11 | 0.73/0.09 | |
| Contriever-MS | Mistral-7B | 0.65/0.05 | 0.66/0.07 | 0.76/0.07 |
| Llama-3.1-8B | 0.73/0.06 | 0.61/0.05 | 0.76/0.08 |
| NQ | HotpotQA | MS-MARCO | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Surrogate Model | No attack | PoisonedRAG | PIA | AD | No attack | PoisonedRAG | PIA | AD | No attack | PoisonedRAG | PIA | AD |
| ACC | ACC/ASR | ACC/ASR | ACC/ASR | ACC | ACC/ASR | ACC/ASR | ACC/ASR | ACC | ACC/ASR | ACC/ASR | ACC/ASR | |
| BGE-M3 | 0.69 | 0.63/0.04 | 0.63/0.05 | 0.61/0.04 | 0.68 | 0.63/0.09 | 0.64/0.06 | 0.63/0.09 | 0.82 | 0.77/0.05 | 0.71/0.04 | 0.78/0.04 |
| E5-mistral-7b | 0.66 | 0.64/0.03 | 0.66/0.03 | 0.67/0.03 | 0.64 | 0.64/0.04 | 0.64/0.07 | 0.63/0.05 | 0.78 | 0.78/0.04 | 0.74/0.05 | 0.76/0.05 |
| Phi-3.5-mini | 0.64 | 0.61/0.05 | 0.64/0.06 | 0.64/0.03 | 0.65 | 0.60/0.05 | 0.57/0.05 | 0.59/0.05 | 0.81 | 0.73/0.09 | 0.80/0.09 | 0.76/0.08 |
| Mistral-7B | 0.67 | 0.64/0.01 | 0.63/0.01 | 0.64/0.02 | 0.65 | 0.61/0.08 | 0.63/0.06 | 0.65/0.09 | 0.73 | 0.72/0.03 | 0.73/0.04 | 0.72/0.06 |
| NQ | HotpotQA | MS-MARCO | ||||||||
| Model | Method | PoisonedRAG+PIA | PoisonedRAG+AD | PIA+AD | PoisonedRAG+PIA | PoisonedRAG+AD | PIA+AD | PoisonedRAG+PIA | PoisonedRAG+AD | PIA+AD |
| ACC/ASR | ACC/ASR | ACC/ASR | ACC/ASR | ACC/ASR | ACC/ASR | ACC/ASR | ACC/ASR | ACC/ASR | ||
| Mistral-7B | Vanilla RAG | 0.49/0.46 | 0.37/0.60 | 0.35/0.62 | 0.35/0.65 | 0.18/0.80 | 0.24/0.75 | 0.43/0.47 | 0.42/0.53 | 0.43/0.52 |
| RobustRAG | 0.59/0.25 | 0.60/0.26 | 0.60/0.27 | 0.46/0.44 | 0.50/0.42 | 0.53/0.38 | 0.82/0.09 | 0.83/0.09 | 0.81/0.10 | |
| InstructRAG | 0.47/0.48 | 0.44/0.50 | 0.43/0.52 | 0.40/0.55 | 0.37/0.60 | 0.36/0.62 | 0.56/0.38 | 0.46/0.49 | 0.56/0.39 | |
| AstuteRAG | 0.71/0.15 | 0.65/0.25 | 0.65/0.20 | 0.61/0.27 | 0.52/0.42 | 0.53/0.40 | 0.78/0.15 | 0.68/0.29 | 0.71/0.19 | |