Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
TrustworthyRAG — 用于检测检索增强生成系统中错误信息与知识投毒的评估智能体。 | Kitploit
工具/GitHubGitHub/gpt-laboratory/trustworthyrag
代码分析机器学习论文与研究AI 安全异常检测
GitHubgpt-laboratory/trustworthyrag

TrustworthyRAG

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

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

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),以及下方的论文一节。

架构

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

项目结构

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

环境搭建

# 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.

使用方法

运行完整实验套件

python run_experiment.py --all

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

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

其他实验选项

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 一致):

$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:

$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.

仅重新生成图表

python generate_charts.py

运行测试

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 个样本)

数据集准确率精确率召回率F1 分数对比基线
TruthfulQA(混合)91%100%40%57.1%+7%
FEVER(完整运行)73%20%26.7%22.9%−12%

朴素的全信任基线: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 个样本)

策略准确率精确率召回率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

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

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

主要发现:

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

三 LLM 对比与阈值无关性

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

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
下载工具