Skip to content

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚧 施工安全风险智能分析系统

Construction Safety Risk Analysis System Based on RAG + LLM

基于检索增强生成与大语言模型的施工安全风险智能决策平台



📑 目录

展开 / 收起


🌟 项目简介

本系统是一个面向 建筑工程施工安全 领域的智能风险分析平台,以 53,000+ 条 OSHA 真实事故记录 为知识库,结合 检索增强生成(RAG)大语言模型(DeepSeek),为施工现场提供智能化的安全决策支持。

系统核心能力:

  • 🎯 事故预评估 — 输入施工计划、工种、环境参数,自动输出结构化风险报告
  • 🔍 语义案例检索 — 基于 FAISS 向量索引的毫秒级相似事故检索
  • 📈 可视化仪表盘 — 实时环境风险监测与事故趋势分析
  • 📊 因果推断分析 — 基于 PSM(倾向得分匹配)的环境因素影响量化
  • 🖥️ 一键部署 — PyInstaller 打包,无需 Python 环境即可运行


🧠 核心技术

RAG(检索增强生成):将大规模事故知识库与 LLM 推理能力结合,让模型基于真实案例给出有据可依的安全建议,而非凭空生成。

传统方式:  人工查阅规范 → 经验判断 → 主观评估
                  ↓
本系统:    语义检索历史案例 → LLM 结构化分析 → 量化风险评估
传统模式 本系统
人工查阅事故报告 FAISS 毫秒级语义检索
经验主观判断 LLM 结构化推理
单一因素分析 多维环境因素关联
事后总结 事前预评估
静态报表 实时可视化仪表盘


🏗️ 系统架构

┌─────────────────────────────────────────────────────────────────────┐
│                    施工安全风险智能分析系统                            │
├──────────────────┬──────────────────┬───────────────────────────────┤
│   数据层          │    分析层         │    展示层                      │
│                  │                  │                               │
│  OSHA 事故数据   │  RAG 语义检索     │  Streamlit Web UI             │
│  53,000+ 记录    │  DeepSeek LLM    │  Plotly 可视化                 │
│  FAISS 向量索引  │  PSM 因果推断     │  风险仪表盘                    │
│  环境参数数据    │  本地兜底评估     │  结构化报告                    │
│                  │                  │                               │
│   📦 存储        │    🧠 推理        │    📊 交互                     │
└──────────────────┴──────────────────┴───────────────────────────────┘

数据流向

用户输入(工种/环境/计划)
        ↓
  语义向量化(sentence-transformers)
        ↓
  FAISS 相似案例检索 + 关键词混合打分
        ↓
  构建 Prompt(检索结果 + 用户输入)
        ↓
  DeepSeek LLM 结构化推理
        ↓
  输出:风险等级 / 危险源 / 预防措施 / PPE / 引用案例

🧩 功能模块

1️⃣ 事故预评估与风险建议

输入施工计划、工种、环境参数(温度/风速/湿度),系统自动输出结构化风险报告

输出项 说明
⚠️ 风险等级 1-4 级量化评估
💥 潜在危险源 基于历史案例识别
📋 管理薄弱点 制度与流程缺陷
🛡️ 预防措施 针对性安全建议
⛑️ 必备 PPE 个人防护装备清单
📚 引用案例 相似历史事故参考

2️⃣ RAG 语义检索引擎

混合检索策略:语义相似度 + 关键词匹配,双重打分确保召回质量

  • 向量化sentence-transformers/all-MiniLM-L6-v2 生成 384 维语义向量
  • 🔎 索引:FAISS 向量索引,支持毫秒级 Top-K 检索
  • 🎯 混合打分hybrid_score = α × semantic + β × keyword
  • 🌐 多语言扩展:中英关键词提示扩展(高处/坠落/触电 ↔ fall/electrocution)

3️⃣ 可视化风险仪表盘

实时环境监测 + 事故画像 + 趋势分析

  • 🌡️ 环境风险仪表 — 温度、风速、湿度三维监测
  • 📈 事故月度趋势 — 时间序列分析
  • 🗺️ 事故热力图 — 地理分布可视化
  • 👥 事故画像 — 工种、危害类型、季节分布
  • 🔗 环境关联 — 温度/风速与事故率相关性

4️⃣ PSM 因果推断分析

基于倾向得分匹配(Propensity Score Matching)量化环境因素对事故严重程度的因果效应

  • 控制混杂变量(工种、季节、地区)
  • 估计处理效应(ATE / ATT)
  • 输出匹配样本与效应报告


📷 系统截图

数据管理与风险仪表盘(温度 / 风速 / 湿度)

PixPin_2026-03-14_12-47-57 - 副本

事故预评估与RAG 历史案例检索

PixPin_2026-03-14_12-50-13

月度事故趋势、事故热力图与环境因素关联分析

image

📂 项目结构

Construction-Safety-Risk-Analysis-System/
├── app.py                              # 🖥️ Streamlit 主应用(Web UI)
├── launcher.py                         # 🚀 打包后启动入口
├── main.py                             # 📋 批量结构化抽取脚本
├── requirements.txt                    # 📦 Python 依赖清单
├── ConstructionSafetyAssistant.spec    # 🔧 PyInstaller 打包规格
├── settings.example.json              # ⚙️ 配置模板(不含密钥)
├── run_app.bat                         # ▶️ Windows 一键启动
├── stop_app.bat                        # ⏹️ 停止服务
├── .gitignore                          # 🔒 Git 忽略规则
├── LICENSE                             # 📄 MIT 许可证
│
├── rag/                                # 🔍 RAG 检索模块
│   ├── config.py                       #    ├── 数据与索引路径配置
│   ├── index_builder.py                #    ├── FAISS 索引构建
│   ├── retrieval.py                    #    ├── 检索与混合打分
│   ├── prompting.py                    #    ├── 提示词构建
│   ├── extraction_schema.py            #    ├── 结构化输出校验
│   └── local_pre_assessment.py         #    └── 本地兜底预评估
│
├── llm/                                # 🧠 LLM 调用模块
│   └── client.py                       #    └── DeepSeek 配置解析与调用
│
├── analysis/                           # 📊 因果分析模块
│   └── causal_psm.py                   #    └── 倾向得分匹配(PSM)
│
├── sensors/                            # 📡 传感器模块
│   └── api.py                          #    └── 传感器读取接口(当前 mock)
│
├── scripts/                            # 🛠️ 工具脚本
│   ├── start_app.py                    #    ├── 开发态启动逻辑
│   ├── stop_app.ps1                    #    ├── 停止服务
│   ├── build_windows_installer.py      #    ├── 一键生成安装器
│   └── installer_bootstrap.py          #    └── 安装器引导脚本
│
├── tests/                              # ✅ 测试用例(12 项)
├── indexes/                            # 🗂️ FAISS 索引与元数据
├── results/                            # 📈 分析结果输出
├── release/                            # 📦 发布产物(安装器)
├── docs/screenshots/                   # 📸 系统截图
├── 文档信息归档/                         # 📚 项目文档归档
└── Injury Severity.CSV                 # 🗃️ OSHA 事故数据集(53,000+)


🔧 技术栈

类别 技术 说明
🌐 Web 框架 Streamlit 快速构建数据应用
🧠 大语言模型 DeepSeek Chat OpenAI 兼容接口
🔍 向量检索 FAISS Meta 开源向量数据库
🔤 文本嵌入 sentence-transformers all-MiniLM-L6-v2
📈 可视化 Plotly 交互式图表
📊 数据处理 Pandas / NumPy 数据分析与处理
🧪 因果推断 statsmodels / scipy PSM 倾向得分匹配
📦 打包分发 PyInstaller Windows 安装器生成
🐍 运行环境 Python 3.12+ 主语言


🚀 快速开始

1. 克隆仓库

git clone https://github.com/jensenzhong/Construction-Safety-Risk-Analysis-System-Based-on-RAG-LLM.git
cd Construction-Safety-Risk-Analysis-System-Based-on-RAG-LLM

2. 创建虚拟环境

python -m venv .venv

# Windows PowerShell
.venv\Scripts\Activate.ps1

# Windows CMD
.venv\Scripts\activate.bat

3. 安装依赖

pip install -r requirements.txt

4. 配置 API Key

复制示例配置文件并填入你的 DeepSeek API Key:

cp settings.example.json settings.json

编辑 settings.json

{
  "deepseek": {
    "api_key": "your_api_key_here",
    "base_url": "https://api.deepseek.com/v1",
    "model": "deepseek-chat"
  }
}

或使用环境变量:

# Windows PowerShell
$env:DEEPSEEK_API_KEY="your_api_key"

# Linux / macOS
export DEEPSEEK_API_KEY="your_api_key"

5. 启动应用

# 方式 A:使用项目脚本(推荐)
run_app.bat

# 方式 B:直接运行
streamlit run app.py --server.address 127.0.0.1 --server.port 8501

💡 提示:浏览器访问 http://127.0.0.1:8501



📊 数据与索引

数据集

默认使用 Injury Severity.CSV,包含 53,000+ 条 OSHA 真实事故记录。

字段 说明
abstract 事故描述文本(用于检索与分析)
event_keyword 事故关键词分类
degree_of_inj_x 伤害严重程度
date 事故发生日期
temp / wind_speed / wind_deg 环境参数

构建索引

python -m rag.index_builder --device cpu

生成文件:

  • indexes/faiss.index — FAISS 向量索引
  • indexes/metadata.parquet — 结构化元数据


🧪 测试

pytest -q

测试覆盖(12 项):

模块 测试内容
RAG 引用过滤与约束验证
预评估 输出结构完整性
LLM DeepSeek 配置解析
启动器 配置播种逻辑
PSM 因果分析健全性


📦 Windows 打包分发

一键打包安装器

python scripts/build_windows_installer.py

产物:release/ConstructionSafetyAssistant-Installer.exe

安装后运行

  1. 运行安装器,按提示完成安装
  2. 桌面 / 开始菜单启动 Construction Safety Assistant
  3. 浏览器自动打开 http://127.0.0.1:8501

💡 打包版本已内置 Python 运行时和所有依赖,无需额外安装。



❓ 常见问题

问题 解决方案
启动后浏览器没打开 手动访问 http://127.0.0.1:8501
提示缺少索引文件 运行 python -m rag.index_builder --device cpu
DeepSeek 报 API Key 缺失 检查 settings.json 或环境变量 DEEPSEEK_API_KEY
查看启动日志 %LOCALAPPDATA%\ConstructionSafetyAssistant\launcher.log
如何停止服务 运行 stop_app.bat 或关闭终端窗口


🔒 安全说明

本项目已配置 .gitignore 保护敏感文件:

  • settings.json(含 API Key)不会被提交
  • .env 文件不会被提交
  • settings.example.json 提供安全配置模板

🚨 请勿将真实 API Key 提交到公开仓库。



🗺️ Roadmap

  • 接入真实传感器(MQTT / HTTP / 串口)
  • 增加多工种风险模板库
  • 引入用户权限与审计日志
  • 支持多项目 / 多工地数据隔离
  • 增强检索评估指标与可解释性
  • 支持更多 LLM 后端(GPT-4、Claude、通义千问)
  • 移动端适配与小程序版本


⚖️ 许可证与声明

本项目采用 CC BY-NC 4.0 许可证。

允许 禁止
✅ 学习与研究使用 ❌ 商业用途
✅ 修改与二次创作 ❌ 未署名使用
✅ 非商业分享与传播 ❌ 去除版权声明

⚠️ 商业使用须获得作者书面授权。 如需商业合作请联系作者。

ℹ️ 本项目基于公开的 OSHA 事故数据集进行研究开发。系统中的传感器数据为模拟数据,仅用于展示系统设计理念和核心功能。


施工安全风险智能分析系统 · 2025

Copyright © 2025 Jensen Zhong. All commercial rights reserved.

Made with ❤️ by Jensen Zhong

About

基于 RAG + LLM 的施工安全风险智能分析系统 ,基于53000+真实事故案例实现语义检索与智能预评估| Construction safety risk analysis powered by RAG retrieval and DepSeek LLM with 53,000+ OSHA accident records

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages