Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
RAGSieve — Contraste local auto-référencé pour la détection d'empoisonnement des connaissances dans la génération augmentée par récupération | Kitploit
Outils/GitHubGitHub/xrazymee/ragsieve
Outils DéfensifsApprentissage AutomatiqueArticles et RechercheSécurité de l'IADétection d'AnomaliesAttaque Adversariale
GitHubxrazymee/ragsieve

RAGSieve

Contraste local auto-référencé pour la détection d'empoisonnement des connaissances dans la génération augmentée par récupération

Voir le dépôt
37il y a 1 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

RAGSieve

Code pour RAGSieve : Détection de documents empoisonnés par des connaissances dans un RAG sans référence de confiance.

RAGSieve détecte les documents d'empoisonnement de connaissances à deux points d'un système de génération augmentée par récupération (RAG). RSQ est un filtre en ligne : il évalue les cinq documents sélectionnés pour la génération par rapport aux rangs 6--20 pour la requête courante. RSG est un scanner hors ligne : il évalue chaque document du corpus par rapport à son propre voisinage sémantique--lexical. Le paquet contient les implémentations RSQ et RSG utilisées dans l'article, la récupération exacte sur corpus complet, le filtrage et le remplissage Top-5, l'évaluation au niveau des documents, et un exemple exécutable compact.

Contenu du dépôt

data/datasets/       NQ, HotpotQA, and MS MARCO text knowledge bases
data/demo/           four target queries and 20 example poison documents
src/ragsieve/     RSQ, RSG, retrieval, filtering, and metrics
install.sh           environment installation
data_preparation.sh  local construction of the nine dense indices
run_demo.sh          end-to-end RSQ and RSG functionality check

Les trois bases de connaissances publiées contiennent 128 044 documents NQ, 9 961 documents HotpotQA et 8 239 passages MS MARCO. Elles incluent le texte brut, 1 000 requêtes échantillonnées, les qrels, les réponses cibles et le sous-ensemble fixe de 100 requêtes d'attaque. Les vecteurs denses sont générés localement et ne font jamais partie du dépôt.

La démo contient deux réalisations PR-W et deux CEM-C issues de NQ, avec cinq documents empoisonnés par requête. Ces attaques offrent un chemin court et inspectable à travers les deux détecteurs sans livrer la collection complète d'attaques ni les implémentations de génération d'attaques.

Installation

Python 3.11 ou 3.12, uv et un GPU compatible CUDA sont recommandés.

bash install.sh

Le détecteur télécharge les modèles Hugging Face nommés dans l'article lors de la première utilisation.

Pour le QA de bout en bout, copiez la configuration partagée compatible OpenAI et renseignez les trois valeurs :

cp .env.example .env
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=your-model-name
OPENAI_API_KEY=your-api-key

Le même point de terminaison et le même modèle génèrent les réponses et effectuent le jugement ASR sémantique.

Évaluation rapide

bash run_demo.sh

Cette commande construit un index BGE-M3 local pour l'instantané RSG de 520 documents, exécute RSQ sur les contextes de récupération sur corpus complet préparés, filtre et remplit le Top-5 de génération, et évalue les deux détecteurs. Les résultats sont écrits dans outputs/demo/ :

  • rsq-metrics.json : AUROC de RSQ et détection de poison à 5 % de retrait propre ;
  • rsg-metrics.json : métriques RSG sur l'instantané de corpus sans requête ;
  • filtered-top5.jsonl : les cinq documents retenus pour la génération après RSQ.
  • rsg-*-top5.jsonl et joint-*-top5.jsonl : contextes retenus pour chaque attaque de démo après RSG seul et après filtrage conjoint. Le QA est une commande séparée, à activation explicite.

Avec les exemples publiés, RSQ atteint 100 % d'AUROC et 100 % de détection de poison à 5 % de retrait propre pour PR-W et CEM-C. RSG atteint 100 % d'AUROC et 100 % de détection de poison au même budget de retrait propre ; sa règle fixe retire 85 % des documents empoisonnés et 0 % des documents propres. Ces valeurs constituent une vérification de fonctionnalité sur la démo curatée, et non le résultat agrégé de l'article.

Les champs de vérité terrain ne sont lus que par les commandes d'évaluation. Ils ne sont pas transmis à RSQ ni à RSG.

Construire les indices locaux complets

bash data_preparation.sh

Par défaut, cela construit les 3 jeux de données x 3 récupérateurs évalués dans l'article : BGE-M3, E5-large-v2 et all-MiniLM-L6-v2. La sortie est placée dans le répertoire ignoré data/indices/. Un sous-ensemble peut être sélectionné sans modifier le script :

DATASETS="nq" ENCODERS="bge-m3" DEVICE="cuda:0" bash data_preparation.sh

Chaque index est produit à partir du corpus complet publié avec les paramètres de pooling, de préfixe, de troncature et de normalisation cosinus de l'article.

RSQ : filtrage en ligne au moment de la requête

Préparez une récupération propre et une récupération avec les attaques fournies :

uv run ragsieve prepare-contexts \
  --dataset-dir data/datasets/nq \
  --index-dir data/indices/nq/bge-m3 \
  --subset data/demo/subset.json \
  --attacks data/demo/attacks.jsonl \
  --output outputs/demo/contexts.jsonl \
  --device cuda:0

prepare-contexts effectue une recherche exacte sur le corpus complet une fois par requête, évalue séparément les documents injectés et enregistre les 100 premiers dans leur ordre d'origine. RSQ évalue les candidats 1--5 par rapport aux rangs 6--20 ; les rangs restants sont disponibles pour le remplissage. Exécutez RSQ, calculez les métriques au niveau des documents et remplissez le contexte de génération :

uv run ragsieve detect \
  --input outputs/demo/contexts.jsonl \
  --output outputs/demo/rsq-predictions.jsonl \
  --device cuda:0

uv run ragsieve evaluate \
  --predictions outputs/demo/rsq-predictions.jsonl \
  --output outputs/demo/rsq-metrics.json

uv run ragsieve filter-contexts \
  --contexts outputs/demo/contexts.jsonl \
  --predictions outputs/demo/rsq-predictions.jsonl \
  --output outputs/demo/filtered-top5.jsonl

uv run ragsieve qa \
  --input outputs/demo/filtered-top5.jsonl \
  --output outputs/demo/qa-records.jsonl \
  --summary outputs/demo/qa-summary.json \
  --env-file .env

RSQ combine quatre sources de preuves : la concentration d'ancres de réponse, l'intégrité du système d'écriture, la surprisal d'un modèle de langue local et une transition d'alignement de requête. Tous les paramètres des valeurs par défaut de la CLI sont ceux de l'article.

RSG : inspection hors ligne du corpus

RSG consomme le texte des documents et les vecteurs déjà maintenus par l'index RAG :

uv run ragsieve detect-graph \
  --documents data/demo/corpus.jsonl \
  --embeddings data/indices/demo/bge-m3/embeddings.npy \
  --output outputs/demo/rsg-predictions.jsonl \
  --device cuda:0

uv run ragsieve evaluate-graph \
  --predictions outputs/demo/rsg-predictions.jsonl \
  --labels data/demo/labels.jsonl \
  --output outputs/demo/rsg-metrics.json

RSG construit le graphe exact des 16 plus proches voisins par cosinus, retient les voisins sémantiquement proches et lexicalement éloignés, mesure l'élévation de densité de chaque document par rapport au plancher de son propre voisinage, et combine la queue empirique du corpus avec l'intégrité du système d'écriture.

Déploiement conjoint

Le déploiement conjoint est sériel : RSG exclut d'abord les documents, puis RSQ évalue le nouveau top cinq par rapport aux rangs 6--20 survivants. Les candidats signalés sont retirés et le contexte est rempli une fois à partir du classement survivant ; les documents de remplacement ne sont pas réévalués. Après bash run_demo.sh, l'exemple PR-W est :

uv run ragsieve quarantine-contexts \
  --contexts data/demo/contexts.jsonl \
  --graph-predictions outputs/demo/rsg-predictions.jsonl \
  --condition pr_w \
  --output outputs/demo/serial-pr_w-contexts.jsonl
uv run ragsieve detect \
  --input outputs/demo/serial-pr_w-contexts.jsonl \
  --output outputs/demo/serial-pr_w-rsq.jsonl --device cuda:0
uv run ragsieve filter-contexts \
  --contexts outputs/demo/serial-pr_w-contexts.jsonl \
  --predictions outputs/demo/serial-pr_w-rsq.jsonl \
  --output outputs/demo/joint-pr_w-top5.jsonl

uv run ragsieve qa \
  --input outputs/demo/joint-pr_w-top5.jsonl \
  --output outputs/demo/joint-pr_w-qa.jsonl \
  --summary outputs/demo/joint-pr_w-qa-summary.json \
  --env-file .env
Télécharger l’outil