# SafeRAG 项目信息 ## 📁 项目结构 ``` safe_rag/ ├── app.py # Gradio 演示应用 ├── requirements.txt # Python 依赖 ├── config.yaml # 配置文件 ├── README.md # 项目说明(HF Spaces 配置) ├── simple_e2e_test.py # 端到端测试 ├── simple_test.py # 基本功能测试 ├── data_processing/ # 数据处理模块 │ ├── __init__.py │ ├── data_loader.py # 数据加载器 │ └── preprocessor.py # 文本预处理器 ├── retriever/ # 检索模块 │ ├── __init__.py │ ├── embedder.py # 嵌入生成器 │ ├── faiss_index.py # FAISS 索引 │ ├── retriever.py # 检索器 │ └── reranker.py # 重排序器 ├── generator/ # 生成模块 │ ├── __init__.py │ ├── vllm_server.py # vLLM 服务器 │ ├── prompt_templates.py # 提示模板 │ └── safe_generate.py # 安全生成器 ├── calibration/ # 校准模块 │ ├── __init__.py │ ├── features.py # 特征提取 │ ├── calibration_head.py # 校准头 │ └── trainer.py # 训练器 └── eval/ # 评估模块 ├── __init__.py ├── eval_qa.py # QA 评估 ├── eval_attr.py # 归因评估 ├── eval_calib.py # 校准评估 └── eval_system.py # 系统评估 ``` ## 🚀 核心功能 ### 1. 数据处理 (`data_processing/`) - **DataLoader**: 加载 HF Datasets(HotpotQA, TriviaQA, Wikipedia) - **Preprocessor**: 文本清理、句子分割、词元化 ### 2. 检索系统 (`retriever/`) - **Embedder**: 使用 BGE/E5 生成嵌入向量 - **FAISSIndex**: 构建和搜索 FAISS 索引 - **Retriever**: 批量检索相关文档 - **Reranker**: 重排序提升检索质量 ### 3. 生成系统 (`generator/`) - **VLLMServer**: vLLM 推理服务器 - **SafeGenerator**: 风险感知的答案生成 - **PromptTemplates**: 提示模板管理 ### 4. 风险校准 (`calibration/`) - **RiskFeatureExtractor**: 提取 16 维风险特征 - **CalibrationHead**: LogReg/MLP 校准头 - **Trainer**: 校准头训练 ### 5. 评估系统 (`eval/`) - **QAEvaluator**: EM/F1 评估 - **AttributionEvaluator**: 引用归因评估 - **CalibrationEvaluator**: 校准质量评估 - **SystemEvaluator**: 系统性能评估 ## 🎯 风险校准策略 ### 风险特征 (16维) 1. **检索统计**: 相似度分数、方差、多样性 2. **覆盖特征**: Q&A 间的 token/实体重叠 3. **一致性特征**: 段落间语义相似度 4. **多样性特征**: 主题方差、段落多样性 ### 自适应策略 - **低风险 (r < 0.3)**: 正常生成 - **中风险 (0.3 ≤ r < 0.7)**: 保守生成 + 强制引用 - **高风险 (r ≥ 0.7)**: 非常保守或拒绝回答 ## 📊 性能目标 - **QA 准确率**: 相比 vanilla RAG 的 EM/F1 提升 - **归因质量**: 引用精确率/召回率提升 8-12pt - **校准质量**: ECE 降低 30-40% - **系统吞吐**: vLLM 带来 2-3.5x 提升 ## 🧪 测试验证 ### 端到端测试 (`simple_e2e_test.py`) - ✅ 8/8 测试通过 - ✅ 完整 RAG 流程验证 - ✅ 所有核心功能正常 ### 基本测试 (`simple_test.py`) - ✅ 模块导入测试 - ✅ 基本功能验证 - ✅ 配置检查 ## 🚀 部署到 Hugging Face Spaces ### 1. 上传文件 - 将整个 `safe_rag` 目录上传到 HF Spaces - 确保 `app.py` 在根目录 ### 2. 配置 Spaces - SDK: Gradio - Hardware: GPU (推荐 A10G 或 A100) - Environment: Python 3.8+ ### 3. 自动部署 - HF Spaces 会自动安装依赖 - 自动启动 `app.py` - 提供公共访问链接 ## 📝 使用说明 ### 本地运行 ```bash # 安装依赖 pip install -r requirements.txt # 运行测试 python3 simple_e2e_test.py # 启动演示 python3 app.py ``` ### 在线演示 访问 Hugging Face Spaces 链接,体验交互式 RAG 系统。 ## 🎉 项目状态 ✅ **完成**: 所有核心模块实现 ✅ **测试**: 端到端测试通过 ✅ **简化**: 移除不必要的文件 ✅ **就绪**: 可部署到 HF Spaces SafeRAG 项目已经准备好部署和使用了!