Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/gpt-laboratory/trustworthyrag
代码分析机器学习论文与研究AI 安全异常检测
GitHubgpt-laboratory/trustworthyrag

TrustworthyRAG

用于检测检索增强生成系统中错误信息与知识投毒的评估智能体。

查看仓库
402个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Trustworthy RAG(可信赖的 RAG)

一个用于检测检索增强生成(RAG)系统中错误信息与知识投毒的评估代理。

概述

本项目实现了一个 Trustworthy RAG 框架,其中集成有评估代理(Evaluation Agent),通过三个互补的分析组件评估 RAG 响应的可靠性:

  • NLI 验证器(NLI Verifier) - 通过自然语言推断(BART-MNLI)进行事实一致性检查
  • 投毒检测器(Poison Detector) - 多信号对抗性内容检测(语言学、结构、语义、文档内/跨文档 NLI)
  • 信任指数计算器(Trust Index Calculator) - 结合事实性、一致性与投毒安全性的加权综合评分

系统为每条 RAG 响应生成信任评分(Trust Score)(0-1),从而能够自动检测知识投毒攻击与幻觉内容。

本仓库是 ICSEA 2026 会议同名论文的研究工件。LaTeX 源码请参见 [Conference_ICSEA2026/](https://github.com/gpt-laboratory/trustworthyrag/blob/main/Conference_ICSEA2026),以及下方的论文一节。

架构

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

项目结构

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

环境搭建

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.

使用方法

运行完整实验套件

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

这将运行所有实验并自动生成图表:

  • TruthfulQA 主实验(100 个样本,混合投毒)
  • 按策略实验(每种策略 100 个样本:注入、矛盾、实体替换、隐蔽型)
  • FEVER 数据集实验(100 个样本)
  • 消融研究(5 种权重配置,每种 60 个样本)

其他实验选项

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)

交互式提示允许你选择:

  • LLM:Llama 3.3 70B(主用)、Qwen 3.5 35B 或 Mistral 7B Instruct(对照)
  • 嵌入模型:all-MiniLM-L6-v2(本地)或 snowflake-arctic-embed2(API)
  • K:检索深度 —— K=3(更快)或 K=5(标准,默认)

你也可以通过 LLM_MODEL 环境变量以非交互方式固定生成器 (与 configs/config.yaml 及 run_experiment.py 中的 MODEL_DESCRIPTIONS 一致):

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

安全编码 SDLC 用例

在项目根目录重现安全编码助手实验(40 条 OWASP/CWE 规则)。 该实验复用现有的 ExperimentRunner 和 PoisonedDatasetGenerator,并将结果写入 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.

仅重新生成图表

root@kitploit:~
python generate_charts.py

运行测试

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

关键结果

主要结果(Llama 3.3 70B + all-MiniLM-L6-v2,TruthfulQA,K=5,100 个样本)

朴素的全信任基线:85%(TruthfulQA)、85%(FEVER)。FEVER 的表现不及基线——信任指数需要对简短的事实性陈述进行特定领域的校准。

在 95% 置信区间下(比例采用 Wilson 区间,F1 采用百分位自助法,B=20,000),TruthfulQA 混合投毒的主要结果为:准确率 91%(CI 83.8–95.2)、召回率 40%(CI 19.8–64.3)、F1 57.1%(CI 25.0–80.0),Δ=0.225。由于每次运行只有 15 个投毒样本,区间较宽,因此我们将其报告出来,以免夸大结果的精确性。

按策略检测(TruthfulQA,每种策略 100 个样本)

2×2 因子网格(K=3,TruthfulQA,100 个样本)

主要发现:

  • Llama 的嵌入不变性:两种嵌入模型产生完全相同的检测结果——信任指数由 LLM 驱动,而非由检索驱动
  • Qwen 的生成风格问题:冗长/含糊的输出降低了干净样本的 NLI 蕴含率 → 准确率 71%,比 85% 的朴素基线低 14 个百分点
  • K 敏感性的空结果:对于 Llama 3.3 70B,K=5 与 K=3 产生相同的检测性能——信任评分分离度仅变化 0.015;检测的瓶颈在于攻击策略的难度,而非检索深度

安全编码 SDLC 用例(OWASP/CWE)

该代理在软件工程领域的一个应用:一个安全编码助手,从**包含 40 条精选规则(源自 OWASP Top 10 和 CWE)**的知识库中检索相关信息(例如针对 SQL 注入的参数化查询、自适应密码哈希、TLS 配置)。开发者查询会检索出相应指导,评估代理会在 LLM 给出推荐之前对这些指导进行筛查。我们用五种策略对 30% 的规则注入了安全攻击载荷(例如伪造的 CORRECTION: 指令、被替换的 CWE 标识符)。

按策略的检测结果(Llama 3.3 70B + all-MiniLM-L6-v2,K=5):

  • 注入几乎被完美阻断(F1 92.3%,Δ=0.54):该代理能够在这些不安全建议(例如禁用输入验证)到达开发者之前,可靠地捕获这种公然的注入尝试。
  • 实体替换的召回率升至 58%(而开放域 TruthfulQA 上为 0%):修改结构化的 CWE 标识符会引入跨文档不一致,NLI 信号能够捕获这些问题。
  • 矛盾与隐蔽操纵仍可逃逸(召回率 0%):被悄悄弱化的建议不会留下任何表面痕迹,能够通过审查——这是安全流程中危险且隐蔽性高的场景。

三 LLM 对比与阈值无关性

在 τ=0.5 工作点之外,信任指数在三个 LLM 上展现出很强的阈值无关信号(混合策略运行的合并结果):

  • 生成风格 > 模型规模:Mistral 7B 体积约为 Qwen 3.5 35B 的 1/5,但性能更优——Qwen 含糊、冗长的回答降低了 NLI 蕴含率。
  • τ 是 LLM 特定的超参数:三个模型需要三个不同的最优阈值(0.71 / 0.58 / 0.43)。在仅含干净样本的评分上校准 τ,可通过减少误报将 Qwen 的准确率从 65.5% 提升至 74.5%。
  • 三者均显著高于随机水平(ROC-AUC > 0.70),因此 Qwen 在 τ=0.5 时准确率偏低是阈值选择造成的假象,而非信号缺失。

稳定性与开销

  • 运行间方差很低:在 5 次独立重复中,混合配置的准确率为 90.6 ± 0.5%,F1 为 56.1 ± 1.3%;注入策略完全不变,为 99.0 ± 0.0%。判定由检索到的证据驱动,而非单次生成的措辞。
  • 开销:评估增加约 14.7 秒/样本(约为基线 RAG 的 17 倍),主要来自 K=5 时最多 20 次 CPU NLI 计算。这适合批量/异步使用场景(例如代码审查/CI 门禁);GPU 推理预计可将其降至 2 秒以下。

技术栈

  • LLM:Llama 3.3 70B(主用)、Qwen 3.5 35B 与 Mistral 7B Instruct(对照)——坦佩雷大学 FARMI 集群
  • NLI 模型:facebook/bart-large-mnli
  • 嵌入模型:all-MiniLM-L6-v2(384 维)、snowflake-arctic-embed2(1024 维)
  • 向量存储:FAISS(CPU)
  • 数据集:TruthfulQA、FEVER(HuggingFace),以及包含 40 条精选 OWASP Top 10 / CWE 规则的安全编码知识库
  • 框架:Python 3.10+、PyTorch、Transformers、LangChain

信任指数公式

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

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

当投毒概率超过 0.7 时,会应用非线性阻尼器: delta = 1 - 0.4 * (P - 0.70) / 0.30 —— 当 P=1.0 时,信任度降低 40%。

信任等级分数范围含义

贡献

  • 一个自主的评估代理,作为防御性中间件在 RAG 推理循环内部运行
  • 一个五信号投毒检测器,采用相关性加权聚合(语言学、结构、文档内/跨文档 NLI、语义离群)
  • 一个复合信任指数,为高污染场景配备非线性阻尼器
  • 刻画按策略的检测层级(注入可解决 → 实体替换无法检测)
  • 提供证据表明生成风格比模型规模更重要,并提出一种按 LLM 的阈值校准方法
  • 一个软件工程领域的安全编码(OWASP/CWE)SDLC 用例
  • 一个可复现的框架、攻击生成器与实验发布

论文

  • 会议论文 —— Trustworthy RAG: An Evaluation Agent for Detecting Misinformation and Knowledge Poisoning in Generative AI Systems,ICSEA 2026。LaTeX 源码位于 [Conference_ICSEA2026/](https://github.com/gpt-laboratory/trustworthyrag/blob/main/Conference_ICSEA2026)。

本发布版有意不包含编译好的 PDF;请从 LaTeX 源码自行构建。

作者与联系方式

ICSEA 2026 会议论文作者 —— 坦佩雷大学(TUNI)。

Balkrishna Giri,理学硕士研究员,坦佩雷大学信息技术与通信科学学院
邮箱:[email protected]、[email protected]

Md Toufique Hasan,博士研究员,GPT 实验室,坦佩雷大学信息技术与通信科学学院
邮箱:[email protected]

共同作者 —— 坦佩雷大学信息技术与通信科学学院:

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

开发于坦佩雷大学 GPT 实验室。

下载工具
数据集准确率精确率召回率F1 分数对比基线
TruthfulQA(混合)91%100%40%57.1%+7%
FEVER(完整运行)73%20%26.7%22.9%−12%
策略准确率精确率召回率F1分离度
注入99%93.8%100%96.8%0.498
矛盾92%88.9%53.3%66.7%0.311
隐蔽88%100%20.0%33.3%0.149
实体替换85%—0%0%0.053
LLM嵌入模型准确率精确率召回率F1干净信任分分离度
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
策略准确率精确率召回率F1Δ
指令注入97.5%85.7%100.0%92.3%0.542
矛盾85.0%—0.0%0.0%0.156
隐蔽操纵85.0%—0.0%0.0%0.066
实体替换72.5%29.2%58.3%38.9%0.291
混合86.2%100.0%8.3%15.4%0.163
LLM准确率(τ=0.5)ROC-AUC最优 τ*
Llama 3.3 70B91%0.810.71
Mistral 7B Instruct87%0.790.58
Qwen 3.5 35B69–71%0.730.43
HIGH> 0.8可靠
MEDIUM0.5 - 0.8重要场合请核实
LOW0.3 - 0.5可能存在问题
VERY_LOW< 0.3不可信任