Spaces:
Sleeping
Sleeping
File size: 4,321 Bytes
db06013 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# 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 项目已经准备好部署和使用了!
|