safe_rag / PROJECT_INFO.md
Tairun Meng
Initial commit: SafeRAG project ready for HF Spaces
db06013
# 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 项目已经准备好部署和使用了!