Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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é.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
TrustworthyRAG — Un agent d'évaluation pour détecter la désinformation et l'empoisonnement des connaissances dans les systèmes de génération augmentée par récupération. | Kitploit
Outils/GitHubGitHub/gpt-laboratory/trustworthyrag
Analyse de CodeApprentissage AutomatiqueArticles et RechercheSécurité de l'IADétection d'Anomalies
GitHubgpt-laboratory/trustworthyrag

TrustworthyRAG

Un agent d'évaluation pour détecter la désinformation et l'empoisonnement des connaissances dans les systèmes de génération augmentée par récupération.

Voir le dépôt
il 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

Trustworthy RAG

Un agent d'évaluation pour détecter la désinformation et l'empoisonnement des connaissances dans les systèmes de génération augmentée par récupération.

Vue d'ensemble

Ce projet implémente le cadre Trustworthy RAG avec un agent d'évaluation intégré qui évalue la fiabilité des réponses RAG à l'aide de trois composants d'analyse complémentaires :

  • Vérificateur NLI - Vérification de la cohérence factuelle via l'inférence en langage naturel (BART-MNLI)
  • Détecteur d'empoisonnement - Détection multi-signaux de contenu adversarial (linguistique, structurel, sémantique, NLI intra/inter-documents)
  • Calculateur d'indice de confiance - Score composite pondéré combinant factualité, cohérence et sécurité face à l'empoisonnement

Le système produit un score de confiance (0-1) pour chaque réponse RAG, permettant la détection automatisée des attaques par empoisonnement des connaissances et des contenus hallucinés.

Ce dépôt constitue l'artefact de recherche de l'article de conférence ICSEA 2026 du même titre. Voir [Conference_ICSEA2026/](https://github.com/gpt-laboratory/trustworthyrag/blob/HEAD/Conference_ICSEA2026/) pour les sources LaTeX, et la section Article ci-dessous.

Architecture

root@kitploit:~
User Query
    |
    v
+-------------------+
|     RETRIEVER     |   Embedding (MiniLM-L6-v2 or Snowflake Arctic Embed2) + FAISS
+--------+----------+
         |
         v
+-------------------+
|     GENERATOR     |   Llama 3.3 70B / Qwen 3.5 35B / Mistral 7B Instruct via FARMI API
+--------+----------+
         |
         v
+--------------------------------------------+
|           EVALUATION AGENT                 |
|                                            |
|  NLI Verifier    Poison Detector           |
|  (factuality)    (5 detection methods)     |
|       |                |                   |
|       v                v                   |
|     Trust Index Calculator                 |
|     T = 0.4*F + 0.35*C + 0.25*(1-P)       |
+--------------------------------------------+
         |
         v
   Answer + Trust Score + Evaluation Report

Structure du projet

root@kitploit:~
src/
  retriever/              # Document retrieval (embeddings, FAISS, chunking)
  generator/              # LLM response generation (FARMI client, prompts)
  evaluation_agent/       # Core evaluation (NLI, poison detection, trust index)
  experiments/            # Experiment framework (poisoned datasets, runner)
  pipeline/               # End-to-end RAG pipeline orchestrator

tests/                    # Unit tests (78 tests, pytest)
configs/config.yaml       # All configuration parameters
figures/                  # Auto-generated charts (7 figures, 300 DPI)
run_experiment.py         # Experiment CLI (main entry point)
generate_charts.py        # Visualization generator
requirements.txt          # Python dependencies

Installation

root@kitploit:~
# Create and activate virtual environment
python -m venv venv
.\venv\Scripts\Activate.ps1    # Windows PowerShell
# source venv/bin/activate     # Linux/Mac

# Install dependencies
pip install -r requirements.txt

# Configure FARMI API access (required for LLM generation)
# Copy the template and fill in your own credentials:
#   cp .env.example .env       # then edit .env and set FARMI_API_KEY
# The .env file is .gitignored - never commit it or hardcode keys in source.

Utilisation

Exécuter la suite d'expériences complète

root@kitploit:~
python run_experiment.py --all

Ceci exécute toutes les expériences et génère automatiquement les graphiques :

  • Expérience principale TruthfulQA (100 échantillons, empoisonnement mixte)
  • Expériences par stratégie (100 échantillons chacune : injection, contradiction, échange d'entités, subtile)
  • Expérience sur le jeu de données FEVER (100 échantillons)
  • Étude d'ablation (5 configurations de poids, 60 échantillons chacune)

Autres options d'expérience

root@kitploit:~
python run_experiment.py --quick          # Quick test (10 samples)
python run_experiment.py --samples 30     # Custom sample count
python run_experiment.py --per-strategy   # Per-strategy breakdown only
python run_experiment.py --fever          # Include FEVER dataset
python run_experiment.py --ablation       # Ablation study only
python run_experiment.py --grid           # 2x2 factorial grid (all LLM x embedding combos)
python run_experiment.py --grid --samples 50  # Full grid run (100 samples per config)

L'invite interactive vous permet de sélectionner :

  • LLM : Llama 3.3 70B (principal), Qwen 3.5 35B ou Mistral 7B Instruct (comparaison)
  • Embedding : all-MiniLM-L6-v2 (local) ou snowflake-arctic-embed2 (API)
  • K : profondeur de récupération — K=3 (plus rapide) ou K=5 (standard, par défaut)

Vous pouvez également fixer le générateur de manière non interactive via la variable d'environnement LLM_MODEL (correspondant à configs/config.yaml et à MODEL_DESCRIPTIONS de run_experiment.py) :

root@kitploit:~
$env:LLM_MODEL = "mistral-7b-instruct"   # or "qwen3.5:35b", "llama3.3:70b"
python run_experiment.py --all

Cas d'utilisation SDLC du codage sécurisé

Reproduisez l'expérience de l'assistant de codage sécurisé (40 règles OWASP/CWE) depuis la racine du projet. Elle réutilise le ExperimentRunner et le PoisonedDatasetGenerator existants et écrit les résultats dans data/experiments/seccode_*.json :

root@kitploit:~
$env:LLM_MODEL = "llama3.3:70b"; $env:HF_HUB_OFFLINE = "1"; $env:TRANSFORMERS_OFFLINE = "1"
python Conference_ICSEA2026/run_seccode_usecase.py
# Set $env:SECCODE_N = "4" first for a quick smoke run over a few rules.

Régénérer uniquement les graphiques

root@kitploit:~
python generate_charts.py

Exécuter les tests

root@kitploit:~
pytest                    # All tests (includes slow model-loading tests)
pytest -m "not slow"      # Fast tests only (~0.4s)
pytest --cov=src          # With coverage report

Résultats clés

Résultats principaux (Llama 3.3 70B + all-MiniLM-L6-v2, TruthfulQA, K=5, 100 échantillons)

Ligne de base naïve qui fait toujours confiance : 85 % (TruthfulQA), 85 % (FEVER). FEVER obtient des résultats inférieurs à la ligne de base — l'indice de confiance nécessite un calibrage spécifique au domaine pour les affirmations factuelles courtes.

Avec des intervalles de confiance à 95 % (Wilson pour les proportions, bootstrap par centiles B=20,000 pour le F1), le résultat principal de TruthfulQA en configuration mixte est : exactitude 91 % (IC 83.8–95.2), rappel 40 % (IC 19.8–64.3), F1 57.1 % (IC 25.0–80.0), Δ=0.225. Les intervalles sont larges car chaque exécution ne comporte que 15 échantillons empoisonnés ; nous les rapportons donc pour éviter de surestimer la précision.

Détection par stratégie (TruthfulQA, 100 échantillons chacune)

Grille factorielle 2×2 (K=3, TruthfulQA, 100 échantillons)

Principaux résultats :

  • Invariance de l'embedding pour Llama : les deux modèles d'embedding produisent des résultats de détection identiques — l'indice de confiance est piloté par le LLM, et non par la récupération
  • Problème de style de génération de Qwen : les sorties verbeuses/évasives réduisent l'implication NLI pour les échantillons propres → exactitude de 71 %, 14 points de pourcentage sous la ligne de base naïve de 85 %
  • Résultat nul de sensibilité à K : K=5 produit des performances de détection identiques à K=3 pour Llama 3.3 70B — la séparation des scores de confiance ne change que de 0.015 ; la détection est limitée par la difficulté de la stratégie d'attaque, et non par la profondeur de récupération

Cas d'utilisation SDLC du codage sécurisé (OWASP/CWE)

Une application de l'agent en génie logiciel : un assistant de codage sécurisé qui récupère à partir d'une base de connaissances organisée de 40 règles issues de l'OWASP Top 10 et de CWE (par ex. requêtes paramétrées pour l'injection SQL, hachage adaptatif des mots de passe, configuration TLS). Une requête de développeur récupère des recommandations que l'agent d'évaluation filtre avant que le LLM n'émette une recommandation. Nous empoisonnons 30 % des règles avec les cinq stratégies comme charges utiles de sécurité (par ex. une directive CORRECTION: frauduleuse, un identifiant CWE échangé).

Détection par stratégie (Llama 3.3 70B + all-MiniLM-L6-v2, K=5) :

  • L'injection est bloquée quasi parfaitement (F1 92.3 %, Δ=0.54) : l'agent détecte de manière fiable les tentatives manifestes d'insérer des conseils dangereux (par ex. désactiver la validation des entrées) avant qu'ils n'atteignent le développeur.
  • L'échange d'entités atteint un rappel de 58 % (contre 0 % sur TruthfulQA en domaine ouvert) : la modification d'un identifiant CWE structuré introduit des incohérences inter-documents que les signaux NLI peuvent détecter.
  • La contradiction et la manipulation subtile échappent encore à la détection (rappel de 0 %) : une recommandation discrètement affaiblie ne présente aucun artefact de surface et passe la revue — le cas dangereux et peu visible dans un flux de travail de sécurité.

Comparaison de trois LLM et indépendance du seuil

Au-delà du point de fonctionnement τ=0.5, l'indice de confiance présente un signal fort et indépendant du seuil sur trois LLM (exécutions regroupées de stratégie mixte) :

  • Le style de génération prime sur la taille du modèle : Mistral 7B surpasse Qwen 3.5 35B malgré une taille ~5× inférieure — les réponses évasives et verbeuses de Qwen réduisent l'implication NLI.
  • τ est un hyperparamètre spécifique au LLM : les trois modèles nécessitent trois seuils optimaux différents (0.71 / 0.58 / 0.43). Le calibrage de τ sur les scores des seuls échantillons propres rétablit l'exactitude de Qwen de 65.5 % à 74.5 % en réduisant les faux positifs.
  • Les trois se situent bien au-dessus du hasard (ROC-AUC > 0.70) ; la faible exactitude de Qwen à τ=0.5 est donc un artefact de seuillage, et non une absence de signal.

Stabilité et surcoût

  • La variance d'une exécution à l'autre est faible : sur 5 répétitions indépendantes, la configuration mixte obtient une exactitude de 90.6 ± 0.5 % et un F1 de 56.1 ± 1.3 % ; l'injection est invariante à 99.0 ± 0.0 %. Les verdicts sont déterminés par les preuves récupérées, et non par la formulation d'une génération unique.
  • Surcoût : l'évaluation ajoute ≈14.7 s/échantillon (≈17× par rapport au RAG de base), dominée par jusqu'à 20 passes NLI CPU à K=5. Cela convient à une utilisation par lots ou asynchrone (par ex. une passerelle de revue de code/CI) ; l'inférence GPU devrait réduire ce temps sous 2 s.

Pile technologique

  • LLM : Llama 3.3 70B (principal), Qwen 3.5 35B et Mistral 7B Instruct (comparaison) — cluster FARMI, Université de Tampere
  • Modèle NLI : facebook/bart-large-mnli
  • Embeddings : all-MiniLM-L6-v2 (384-dim), snowflake-arctic-embed2 (1024-dim)
  • Stockage vectoriel : FAISS (CPU)
  • Jeux de données : TruthfulQA, FEVER (HuggingFace), et une base de connaissances de codage sécurisé de 40 règles organisées issues de l'OWASP Top 10 / CWE
  • Framework : Python 3.10+, PyTorch, Transformers, LangChain

Formule de l'indice de confiance

root@kitploit:~
Trust = alpha * Factuality + beta * Consistency + gamma * (1 - PoisonProbability)

Default weights: alpha=0.4, beta=0.35, gamma=0.25

Un facteur d'atténuation non linéaire s'applique lorsque la probabilité d'empoisonnement dépasse 0.7 : delta = 1 - 0.4 * (P - 0.70) / 0.30 — à P=1.0, la confiance est réduite de 40 %.

Contributions

  • Un agent d'évaluation autonome qui opère comme middleware défensif dans la boucle d'inférence RAG
  • Un détecteur d'empoisonnement à cinq signaux avec agrégation pondérée par la pertinence (linguistique, structurel, NLI intra-/inter-documents, outlier sémantique)
  • Un indice de confiance composite avec un facteur d'atténuation non linéaire pour les contextes à forte contamination
  • Caractérisation d'une hiérarchie de détection par stratégie (injection résolue → échange d'entités non détecté)
  • Preuve que le style de génération importe plus que la taille du modèle, ainsi qu'une méthode de calibrage du seuil par LLM
  • Un cas d'utilisation SDLC de codage sécurisé (OWASP/CWE) en génie logiciel
  • Un cadre reproductible, un générateur d'attaques et la publication des expériences

Article

  • Article de conférence — Trustworthy RAG: An Evaluation Agent for Detecting Misinformation and Knowledge Poisoning in Generative AI Systems, ICSEA 2026. Sources LaTeX dans [Conference_ICSEA2026/](https://github.com/gpt-laboratory/trustworthyrag/blob/HEAD/Conference_ICSEA2026/).

Le PDF compilé n'est volontairement pas inclus dans cette version ; compilez-le à partir des sources LaTeX.

Auteurs et contact

Auteurs de l'article de conférence ICSEA 2026 — Université de Tampere (TUNI).

Balkrishna Giri, chercheur MSc, Faculté des technologies de l'information et des sciences de la communication, Université de Tampere
E-mail : [email protected], [email protected]

Md Toufique Hasan, chercheur doctorant, GPT Lab, Faculté des technologies de l'information et des sciences de la communication, Université de Tampere
E-mail : [email protected]

Co-auteurs — Faculté des technologies de l'information et des sciences de la communication, Université de Tampere :

  • Dr. Jussi Rasku — [email protected]
  • Dr. Muhammad Waseem — [email protected]
  • Professeur Dr. Pekka Abrahamsson — [email protected]

Développé au GPT Lab, Université de Tampere.

Télécharger l’outil
Jeu de donnéesExactitudePrécisionRappelScore F1vs. Ligne de base
TruthfulQA (mixte)91%100%40%57.1%+7%
FEVER (exécution complète)73%20%26.7%22.9%−12%
StratégieExactitudePrécisionRappelF1Séparation
Injection99%93.8%100%96.8%0.498
Contradiction92%88.9%53.3%66.7%0.311
Subtile88%100%20.0%33.3%0.149
Échange d'entités85%—0%0%0.053
LLMEmbeddingExactitudePrécisionRappelF1Confiance propreSéparation
Llama 3.3 70Ball-MiniLM-L6-v291%100%40%57.1%0.8300.240
Llama 3.3 70Bsnowflake-arctic-embed291%100%40%57.1%0.7990.188
Qwen 3.5 35Ball-MiniLM-L6-v271%25.0%46.7%32.6%0.6330.161
Qwen 3.5 35Bsnowflake-arctic-embed271%28.1%60.0%38.3%0.6530.199
StratégieAccPrecRappelF1Δ
Injection d'instructions97.5%85.7%100.0%92.3%0.542
Contradiction85.0%—0.0%0.0%0.156
Manipulation subtile85.0%—0.0%0.0%0.066
Échange d'entités72.5%29.2%58.3%38.9%0.291
Mixte86.2%100.0%8.3%15.4%0.163
LLMExactitude (τ=0.5)ROC-AUCτ* optimal
Llama 3.3 70B91%0.810.71
Mistral 7B Instruct87%0.790.58
Qwen 3.5 35B69–71%0.730.43
Niveau de confiancePlage de scoresSignification
HIGH> 0.8Fiable
MEDIUM0.5 - 0.8À vérifier si important
LOW0.3 - 0.5Problèmes probables
VERY_LOW< 0.3Ne pas faire confiance