基于 RAG + 知识图谱 · 医疗急救 AI Agent

蛇咬伤急救 智能助手 系统

多路混合检索 RAG + 知识图谱推理,覆盖蛇种识别、血清推荐、医院查询、急救指导的全链路智能咨询

RAG 知识图谱 Neo4j ChromaDB BM25 BGE GLM-4 React

📌 项目背景

蛇咬伤是全球重要的公共卫生问题,尤其在热带和亚热带地区。传统急救知识获取方式存在信息分散、 专业性不足、难以快速定位等问题,延误了最佳救治时机。

SnakeGuardian 采用先进的 RAG(检索增强生成)技术与知识图谱推理相结合的方式, 构建了一个智能蛇咬伤急救咨询系统。系统能够根据用户描述的症状、地区、蛇的特征等信息, 智能推理蛇种、推荐抗蛇毒血清、查询附近救治医院,并提供科学的急救指导。

💡
设计哲学: 让 AI 成为急救现场的"第一响应者"。通过多路检索确保信息覆盖的广度,通过知识图谱推理确保专业判断的精度,通过数据飞轮实现系统的持续进化。

🏗️ 系统架构

系统采用前后端分离架构,核心由 RAG 检索引擎和知识图谱推理引擎双驱动:

以下是系统的主要界面展示,从用户交互到知识图谱可视化,覆盖完整的使用场景:

1 前端交互界面

SnakeGuardian 前端界面
图1:SnakeGuardian 前端交互界面 — 智能对话与急救咨询入口
流式输出 · 快捷提问 · 反馈机制 · 会话管理 · 响应式设计

🌐 前端展示层

React + Vite 构建的现代化 Web 界面,支持流式输出、快捷提问、反馈收集等交互功能。

⚡ API 服务层

Flask + Flask-CORS 提供 RESTful API,处理对话请求、会话管理、反馈存储等业务逻辑。

🧠 AI 引擎层

多路混合检索(向量 + BM25 + Reranker)+ 知识图谱推理,双引擎驱动精准回答。

💾 数据存储层

ChromaDB 存储向量知识库,Neo4j 存储知识图谱,JSONL 存储用户反馈数据。

🕸️ 知识图谱

知识图谱是系统的核心推理引擎,包含 50 种毒蛇 的结构化知识,支持多维度推理:

2 知识图谱可视化

蛇咬伤知识图谱
图2:蛇咬伤知识图谱 — 蛇种、毒素、症状、血清、地区、医院的关联网络
Neo4j 图数据库 · 实体关系建模 · 多跳推理 · 路径查询

图谱节点类型

🐍
蛇种节点
50 种毒蛇实体
☠️
毒素节点
神经毒/血循毒/细胞毒/混合毒
🩺
症状节点
呼吸困难/肿胀/出血等
💉
血清节点
抗蝮蛇毒/抗五步蛇毒等
📍
地区节点
省份/城市分布
🏥
医院节点
蛇伤救治医院

推理路径

路径起点终点说明
路径 1 症状 血清 症状 → 毒素 → 蛇种 → 血清
路径 2 地区 血清 地区 → 蛇种 → 血清
路径 3 颜色 血清 颜色 → 蛇种 → 血清
路径 4 蛇种 医院 蛇种 → 血清 → 医院
路径 5 省份 医院 省份 → 城市 → 医院 → 血清储备

🔍 多路混合检索

系统采用三路并行检索策略,确保信息覆盖的广度和精度:

👤 用户问题 🔀 三路并行检索 📊 结果融合 🤖 LLM 生成 💬 流式回答

🔤 路径 A:向量检索

ChromaDB + BGE-small-zh 语义相似度匹配,捕捉"意思相近"的召回。权重 1.0。

🔤 路径 B:BM25 检索

BM25Okapi 关键词精确匹配,确保"关键词命中"的召回。权重 0.3。

🔤 路径 C:知识图谱

实体抽取 → Neo4j 图查询,结构化推理蛇种、血清、医院等信息。

🏥 路径 D:医院匹配

地名提取 → 医院索引精确查询,快速定位附近救治医院。

RRF 融合算法: 采用 Reciprocal Rank Fusion 算法融合向量检索和 BM25 检索的结果,再经 BGE-reranker-base 重排序精排 Top-K,确保最终结果的相关性和准确性。

⚙️ 关键技术点

🧠 知识图谱推理

基于 Neo4j 图数据库,支持多跳推理:症状→毒素→蛇种→血清,覆盖 50 种毒蛇的完整知识网络。

🔍 多路混合检索

向量检索(语义相似)+ BM25(关键词精确)+ 知识图谱(结构化推理)三路并行,RRF 融合 + Reranker 精排。

🧠 智能上下文管理

滑动窗口保留最近 2 轮对话 + 向量检索历史相关对话(相似度>0.5),跨轮次记住地理位置等关键信息。

📈 数据飞轮机制

用户点赞 → 质量过滤 → 去重检查 → 向量化存储 → 下次检索使用,实现系统的持续自我优化。

🔄 流式输出

Server-Sent Events 实现逐字流式输出,支持打断生成,提供流畅的用户体验。

📊 质量过滤

自动过滤低质量反馈:问题≥10字、回答≥50字、不含"抱歉"等否定词,确保数据飞轮的高质量。

📊 技术栈与性能

85%+
检索准确率
<3s
响应时间
90%+
上下文记忆
50
毒蛇种类
组件技术说明
前端 React + Vite 现代化 Web 界面
后端 Flask + Flask-CORS RESTful API 服务
向量检索 Chroma + BGE-small-zh 语义相似度匹配
关键词检索 BM25Okapi 精确关键词匹配
重排序 BGE-reranker-base 精排 Top-K 结果
知识图谱 Neo4j + NetworkX 结构化推理
LLM ZhipuAI GLM-4-Flash 生成式回答

🔌 API 接口

接口方法说明
/api/chat/stream POST 流式对话接口,支持 SSE 逐字输出
/api/feedback POST 用户反馈接口,支持点赞/差评
/api/session/clear POST 清除会话历史
/api/health GET 健康检查接口
# 流式对话示例
curl -X POST http://localhost:5000/api/chat/stream \
  -H "Content-Type: application/json" \
  -d '{"question": "在广东被绿色的蛇咬了怎么办?"}'

# 反馈示例
curl -X POST http://localhost:5000/api/feedback \
  -H "Content-Type: application/json" \
  -d '{"message_id": "123", "liked": true}'

🚀 快速开始

# 1. 克隆项目
git clone https://github.com/YUII99166/SnakeGuardian-Agent.git
cd SnakeGuardian-Agent

# 2. 安装后端依赖
python -m venv .venv1
source .venv1/bin/activate  # Linux/Mac
pip install -r requirements.txt

# 3. 安装前端依赖
cd frontend && npm install && cd ..

# 4. 配置 API Key(config.yaml)
apikey: "your-zhipuai-api-key"

# 5. 初始化向量库
jupyter notebook 01_setup.ipynb

# 6. 启动服务
python app.py          # 后端
cd frontend && npm run dev  # 前端

# 7. 访问 http://localhost:3000 🎉

📊 数据验证

# 验证所有存储
python verify_storage.py

# 查看反馈数据
python view_feedback.py

# 查看向量库
python view_vectordb.py

📁 项目结构

🚀 app.py

Flask 后端入口:对话 API、反馈接口、会话管理

🧠 rag_service.py

RAG 核心服务:混合检索、知识图谱查询、上下文管理

🕸️ snake_knowledge_graph.py

知识图谱构建:实体抽取、关系建模、Neo4j 导入

🌐 frontend/

React 前端:App.jsx 主组件 + 流式对话 UI

📚 knowledge/

知识库数据:蛇类数据、医院索引、提取文本

📊 chroma_db/

向量数据库:自动生成的 ChromaDB 存储

🛠️ 开发指南

🐍 添加新蛇种数据

1. 在 knowledge/snakes/ 添加蛇类数据文件
2. 运行 02_knowledge_base.ipynb 重建向量库
3. 运行 05_knowledge_graph.ipynb 更新知识图谱

🔍 修改检索策略

编辑 rag_service.py 中的:
_hybrid_search() - 混合检索逻辑
_rrf_merge() - RRF 融合权重
_query_kg() - 知识图谱查询

🧠 调整上下文管理

编辑 rag_service.py 中的:
_get_relevant_history() - 历史检索策略
相似度阈值(默认 0.5)
滑动窗口大小(默认 2 轮)

✍️ 总结与展望

SnakeGuardian 是一个完整的蛇咬伤急救智能咨询系统,通过 RAG + 知识图谱的双引擎架构, 实现了从蛇种识别、血清推荐到医院查询的全链路覆盖。

系统采用多路混合检索策略确保信息覆盖的广度,通过知识图谱推理确保专业判断的精度, 配合数据飞轮机制实现系统的持续自我优化。

未来计划包括:多模态支持(蛇种图片识别)、语音对话(ASR/TTS 集成)、 更完善的地区医院覆盖、以及基于用户反馈的自动评估系统。

⚠️
免责声明: 本系统仅供参考,不能替代专业医疗诊断。遇到蛇咬伤紧急情况,请立即拨打 120 急救电话。

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

🙏 致谢

🤖 ZhipuAI

GLM-4-Flash 大语言模型

🧠 BAAI

BGE Embedding & Reranker

🔗 LangChain

RAG 框架支持

🕸️ Neo4j

图数据库

📄 许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件

📮 联系方式

🌟
开源地址: 项目持续迭代中,欢迎 Star & PR。
联系: 如有任何问题或建议,欢迎在项目中提 Issue。