McOwska/Information-Retrieval-Prompt-Injection

GitHub: McOwska/Information-Retrieval-Prompt-Injection

基于 HotpotQA 数据集的实验项目,研究 Prompt 注入攻击对多跳检索 RAG 流水线的影响并评估攻击成功率与回答质量。

Stars: 0 | Forks: 0

# 多跳检索中的 Prompt 注入 本仓库是一个小型研究型项目,旨在测试 prompt 注入如何影响简单的多跳检索 pipeline。 它构建了一个基于 HotpotQA 的语料库,通过重定向指令对文档进行投毒,在干净或被投毒的检索结果上运行多跳 agent,并使用以下指标评估结果: - `F1` 用于衡量回答质量 - `ASR`(攻击成功率)用于衡量模型遵循注入指令的频率 代码刻意保持轻量化,便于检查。 ## 仓库内容 - `dataset/` 构建语料库和问题集,并应用投毒策略 - `retireval/` 包含 BM25 检索器 - `multihop_agent/` 包含检索 + 推理循环 - `evaluation/` 运行实验并计算指标 - `classifier/` 包含可选的对抗意图防御器 - `results/` 和 `results_old/` 包含之前运行保存的输出结果 ## 项目流程 典型的工作流程是: 1. 从 HotpotQA 构建干净的语料库和问题集 2. 创建被投毒的语料库 3. 使用干净或被投毒的检索运行多跳 agent 4. 衡量回答质量和攻击成功率 ## 设置 创建并激活一个虚拟环境,然后安装依赖: ``` python3 -m venv venv source venv/bin/activate pip install -r requirements.txt ``` 在仓库根目录创建一个 `.env` 文件: ``` GROQ_API_KEY=gsk_*** BASE_URL=https://api.groq.com/openai/v1 MODEL=llama-3.1-8b-instant TEMPERATURE=0.0 MAX_TOKENS=256 ``` 根据你要调用的 endpoint,也可以使用 `OPENAI_API_KEY` 或 `BERGET_API_KEY` 来代替 `GROQ_API_KEY`。 ## 准备数据 生成干净的语料库、被投毒的语料库和问题集: ``` python3 dataset/save_docs_to_local.py ``` 这会将 JSONL 文件写入 `data/processed/`,包括: - `corpus.jsonl` - `corpus_poisoned_all_embedded.jsonl` - `questions.jsonl` 投毒行为在 [dataset/poisoning.py]() 和 [dataset/save_docs_to_local.py]() 中进行配置。 ## 运行评估 当前的主脚本是 [main_eval.py](),它会: - 加载干净的语料库 - 加载被投毒的内嵌语料库 - 运行多跳评估 - 将对比输出保存到 `results/` 运行命令: ``` python3 main_eval.py ``` 评估逻辑位于 [evaluation/evaluator.py](),指标定义在 [evaluation/metrics.py]() 中。 ## 可选组件 agent 本身位于 [multihop_agent/agent.py]()。它会: - 使用 BM25 检索文档 - 跨多跳生成后续查询 - 根据积累的上下文生成最终答案 在 [classifier/guard.py]() 中还有一个可选的基于分类器的防御器,用于在对抗性文档进入上下文之前对其进行标记。 ## 结果处理 如果你有多个结果文件夹,以下脚本可以帮助合并它们: - [results_processing/merge_results.py]() - [results_processing/evaluate_results.py]() 它们会合并保存的 `comparison.csv` 文件,并计算跨运行的汇总指标。 ## 注意事项 - 该仓库目前侧重于实验性探索,而非打包发布 - 部分脚本特意保持简单,并使用固定路径以加快迭代速度 - `retireval/` 目录名保持原样,以与现有代码库保持一致 ## 快速开始 如果你只想走最快捷的流程: ``` source venv/bin/activate pip install -r requirements.txt python3 dataset/save_docs_to_local.py python3 main_eval.py ```
标签:DLL 劫持, Petitpotam, Python, Sysdig, 人工智能, 信息检索, 大语言模型, 无后门, 用户模式Hook绕过, 红队评估, 逆向工具