项目概述
本项目旨在构建一个基于图数据库的地质知识图谱展示与智能问答系统,通过结构化的地质知识三元组数据,实现知识的有效存储、管理和交互查询。系统集成了Neo4j图数据库、Django Web框架及OpenAI大语言模型,支持用户以自然语言形式进行地质知识的查询与问答,提升专业领域知识获取的效率与便捷性。
核心解决的问题包括:
- 地质知识的结构化表示与持久化存储
- 图谱数据的动态查询与可视化展示
- 结合自然语言处理技术实现智能问答交互
- 用户身份认证与个性化问答记录管理
目标用户群体主要为地质科研人员、学生及相关行业从业者,帮助其快速获取并理解复杂的地质知识关系,辅助学习和决策。
技术架构
整体架构设计
系统采用典型的前后端分离架构,基于Django框架构建后端服务,负责业务逻辑处理、数据管理及API接口;前端通过Django模板渲染动态页面,实现用户交互界面。核心数据存储层使用Neo4j图数据库,专门存储和管理地质知识图谱。系统还集成了OpenAI GPT大语言模型,通过外部API提供智能问答能力。整个架构将用户认证、数据存储、知识查询与智能交互有机结合,形成闭环。
主要技术栈
- Python 3.x
- Django Web框架(MVC架构)
- Neo4j图数据库及官方Python驱动(GraphDatabase)、py2neo库
- pandas数据处理库
- jieba中文分词工具
- OpenAI GPT模型API
- HTML/CSS/Bootstrap/Material Design Icons(前端UI)
- 日志模块(logging)
模块间的关系和交互
- datas模块负责将清洗后的地质知识三元组数据批量导入Neo4j,实现图数据库的基础数据构建。
- myneo4j模块作为核心业务模块,提供基于Neo4j的图谱数据管理、动态查询以及智能问答功能,调用datas模块数据接口,并依赖accounts模块进行用户身份绑定。
- accounts模块实现用户注册、登录及信息管理,为myneo4j模块提供认证与权限控制支持。
- templates目录提供前端展示模板,配合myneo4j和accounts模块的视图逻辑,渲染用户界面,实现交互体验。
- 静态资源由static目录提供,支持页面样式与交互行为。
功能模块
1. datas模块
- 负责地质知识三元组的导入与持久化存储于Neo4j图数据库。
- 核心脚本
import_neo4j.py封装Neo4j连接、事务执行及数据写入逻辑,支持从CSV文件批量导入。 - 采用Cypher MERGE语句保证数据幂等性,避免重复节点与关系。
- 通过pandas处理数据,结合日志模块实现导入过程的监控与异常处理。
- 为上层模块提供稳定的图数据基础。
2. myneo4j模块
- 定义图谱相关数据模型(节点、关系、问答记录等),支持持久化管理。
- 封装Neo4j查询工具,动态构造Cypher语句,实现节点及关系的灵活检索。
- 视图层处理用户请求,结合OpenAI API实现基于知识图谱的智能问答。
- 集成jieba分词提升中文语义理解能力。
- 提供RESTful接口,支持前端调用与数据可视化。
- 依赖accounts模块进行用户身份验证,保障问答记录关联。
3. accounts模块
- 实现用户注册、登录、登出及信息维护等功能。
- 用户模型继承Django AbstractUser,扩展手机号及密码管理。
- 使用Django表单实现数据校验,保证输入合法性。
- 通过后台admin管理用户数据,支持密码加密和权限配置。
- 为业务模块提供安全的认证和权限支持。
4. templates目录
- 提供统一的前端页面模板,包括基础布局(base.html)、首页(index.html)、问答界面(wenda.html)以及用户认证相关页面(login.html、register.html、modify.html、my_info.html)。
- 基于Django模板语言实现动态内容渲染,支持表单提交与数据交互。
- 使用Bootstrap和Material Design Icons实现响应式、现代化UI风格。
- 通过模板继承机制保证页面风格一致性,易于维护和扩展。
模块间协作关系
- 用户通过templates提供的页面与accounts模块交互完成认证。
- 登录用户可访问myneo4j模块提供的图谱查询与智能问答功能,所有请求均由views层处理并调用datas层数据接口。
- myneo4j模块调用OpenAI API增强问答能力,结果通过模板层渲染给用户。
- datas模块作为数据持久层,为myneo4j模块提供稳定的图数据库支持。
项目结构
xy25_neo4j_geology/
├── accounts/ # 用户认证与管理模块
│ ├── models.py # 用户模型定义
│ ├── views.py # 认证逻辑实现
│ ├── forms.py # 表单验证
│ ├── urls.py # 路由配置
│ └── admin.py # 后台管理注册
├── datas/ # 知识三元组导入模块
│ ├── import_neo4j.py# Neo4j导入脚本
│ └── cleaned_triplets.csv # 清洗后的数据文件
├── myneo4j/ # 图数据库交互与问答模块
│ ├── models.py # 节点、关系及问答记录模型
│ ├── pyneo_utils.py # Neo4j交互工具
│ ├── views.py # 业务逻辑和问答视图
│ ├── urls.py # 路由配置
│ └── admin.py # 后台管理
├── templates/ # 前端页面模板
│ ├── base.html # 基础模板
│ ├── index.html # 首页(图谱查询)
│ ├── wenda.html # 智能问答
│ ├── login.html # 登录
│ ├── register.html # 注册
│ ├── modify.html # 密码修改
│ └── my_info.html # 用户信息页
├── static/ # 静态资源(CSS、JS、图片等)
├── xy_neo4j/ # Django项目配置文件
│ ├── settings.py # 项目配置
│ ├── urls.py # 全局路由
│ └── wsgi.py # WSGI入口
├── manage.py # Django管理脚本
├── .venv/ # 虚拟环境
└── README.md # 项目说明文档
关键目录和文件说明
- accounts/models.py:定义用户信息模型,扩展认证字段。
- datas/import_neo4j.py:知识图谱数据导入核心脚本。
- myneo4j/pyneo_utils.py:图数据库操作工具函数集。
- myneo4j/views.py:图谱查询与智能问答业务逻辑入口。
- templates/base.html:所有页面的骨架模板,统一风格与导航。
- xy_neo4j/settings.py:项目全局配置,包括数据库、静态文件、API密钥等。
部署和运行
环境要求
- Python 3.7及以上
- Neo4j图数据库(推荐社区版,版本4.x或以上)
- 虚拟环境管理工具(如venv)
- 网络环境支持访问OpenAI API
安装和配置步骤
- 克隆项目代码到本地。
- 创建并激活Python虚拟环境:
python -m venv .venv
source .venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windows
- 安装依赖包:
pip install -r requests.txt
- 安装并启动Neo4j数据库,配置数据库连接(地址、用户名、密码)于
datas/import_neo4j.py及myneo4j/pyneo_utils.py中。 - 配置OpenAI API密钥,确保系统能调用智能问答接口。
- 运行数据库导入脚本,导入知识三元组数据:
python datas/import_neo4j.py
- 执行Django数据库迁移并创建管理员账户:
python manage.py migrate
python manage.py createsuperuser
- 配置Django项目设置文件
settings.py,包括数据库、静态文件路径及安全配置。
启动方式
- 启动Django开发服务器:
python manage.py runserver
- 访问
http://127.0.0.1:8000/即可使用系统。 - 通过后台管理界面(
/admin)管理用户及数据记录。
通过上述模块协同工作,地质知识图谱展示问答系统实现了从数据入库、图谱管理到智能问答的完整流程,极大提升了地质领域知识的检索效率与交互体验,为科研与教学提供有力支持。
如有问题请联系作者:https://qalangtao.com 。
800
![图片[1]-地质知识图谱展示问答系统](https://qalangtao.com/wp-content/uploads/2025/11/微信图片_20251129142418_46_379-1024x474.png)
![图片[2]-地质知识图谱展示问答系统](https://qalangtao.com/wp-content/uploads/2025/11/微信图片_20251129142429_47_379-1024x475.png)
![图片[3]-地质知识图谱展示问答系统](https://qalangtao.com/wp-content/uploads/2025/11/微信图片_20251129142438_48_379-1024x469.png)
![图片[4]-地质知识图谱展示问答系统](https://qalangtao.com/wp-content/uploads/2025/11/微信图片_20251129142445_49_379-1024x474.png)
![图片[5]-地质知识图谱展示问答系统](https://qalangtao.com/wp-content/uploads/2025/11/微信图片_20251129142519_50_379-1024x472.png)
![图片[6]-地质知识图谱展示问答系统](https://qalangtao.com/wp-content/uploads/2025/11/微信图片_20251129142531_51_379-1024x433.png)
![图片[7]-地质知识图谱展示问答系统](https://qalangtao.com/wp-content/uploads/2025/11/微信图片_20251129142538_52_379-1024x426.png)
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END









