基于GraphRag的本地课程图谱问答系统

基于GraphRag的本地课程图谱问答系统

项目概述

本项目旨在打造一个集知识图谱构建、智能问答、以及本地化信息检索于一体的课程知识问答系统。核心目标是利用图谱技术和大模型问答能力,为用户提供准确、快速且安全的课程知识查询体验,特别适合对数据隐私和自主部署有高要求的场景。

项目的主要价值在于通过结构化的课程三元组数据(CSV格式)自动构建知识图谱,存储于Neo4j图数据库中,为后续的知识查询和可视化提供基础支持。同时集成本地知识检索工具(graphrag)与外部大语言模型(如OpenAI API),实现自然语言问答,提升用户交互体验。整个系统部署在本地环境,保证数据隐私安全,适应教育、企业培训等多场景应用。

技术架构

整体架构设计

系统采用Django作为后端开发框架,分为数据层、图数据库访问层、问答逻辑层和前端展示层。架构示意如下:

用户界面(前端)<--> Django Web服务 <--> Neo4j图数据库
                                <--> 本地graphrag工具(知识检索)
                                <--> 大模型接口(OpenAI API)
                                <--> 数据处理(CSV导入、知识图谱构建)

主要技术栈

  • 后端框架:Django
  • 图数据库:Neo4j,使用py2neo库操作
  • 知识图谱构建:基于CSV三元组导入,节点关系节点化管理
  • 自然语言处理:jieba中文分词
  • 本地工具:graphrag问答与索引检索
  • 大模型集成:OpenAI API,增强问答智能
  • 前端技术:Bootstrap、MaterialDesignIcons、ECharts等实现响应式界面与可视化

模块关系和交互

  • 数据模块(datas):负责从CSV文件读取三元组,构建知识图谱,存入Neo4j。
  • 图数据库访问(myneo4j):封装Neo4j节点关系的增删查改,提供图谱查询接口,支撑问答逻辑。
  • 问答与检索(myneo4j):集成本地graphrag工具进行知识检索,调用大模型API进行自然语言理解与答复。
  • 用户管理(accounts):提供注册、登录、权限控制,保障系统安全。
  • 前端模板(templates):实现用户交互界面,包括登录、注册、图谱查询、关系问答等页面。
  • 整体部署:通过manage.py管理迁移和启动,确保系统在本地环境稳定运行。

功能模块

知识图谱构建(datas模块)

  • 读取结构化CSV三元组数据(如cibiao.txt或清洗后csv)
  • 自动匹配节点,避免重复创建
  • 构建实体关系图,存入Neo4j
  • 提供基础的图谱数据存储和管理功能,为查询提供基础数据

Neo4j知识管理与查询(myneo4j模块)

  • 定义节点(MyNode)、问答(MyWenda)等数据模型
  • 提供节点、关系的增删查改接口
  • 支持复杂的图结构查询,关系路径分析
  • 集成外部本地检索工具(graphrag)实现知识索引检索
  • 支持多轮问答,结合大模型(OpenAI)实现智能应答

用户管理(accounts模块)

  • 自定义用户模型(UserProfile),支持手机号、明文密码存储
  • 提供注册、登录、密码修改、个人信息维护功能
  • 后台管理界面方便维护用户数据
  • 安全措施:密码加密存储,权限控制

前端界面(templates目录)

  • base.html:基础布局模板
  • index.html:首页,提供知识图谱查询表单
  • login.html:用户登录
  • register.html:用户注册
  • modify.html:密码修改
  • my_info.html:个人信息管理
  • wenda.html:关系图谱问答页面,支持自然语言输入和结果展示

其他支持功能

  • 静态资源(CSS、JS、图片)优化用户体验
  • 交互式可视化(如ECharts)展示知识关系
  • 日志管理(logs.json)和输出目录(output)存储检索和问答数据

项目结构

整体目录结构清晰,分层管理核心功能:

  • datas/:知识图谱数据导入脚本(main.py)和原始数据文件
  • myneo4j/:Neo4j数据库操作封装、Web接口逻辑
  • accounts/:用户管理模型、视图、后台配置
  • templates/:前端页面模板
  • static/:前端静态资源(CSS、JS、字体、图片)
  • xy_neo4j/:Django项目配置
  • manage.py:项目管理入口
  • README.md:项目说明
  • req.txt / requests.txt:依赖配置文件

部署和运行

环境要求

  • Python 3.8+(推荐3.9或更高)
  • Django 3.x或以上
  • Neo4j图数据库(建议版本4.x或5.x)
  • 依赖包:py2neo、jieba、requests、ECharts、Bootstrap等前端库
  • 本地graphrag工具(需自行安装配置,路径可在配置中调整)

安装与配置步骤

  1. 克隆项目代码到本地
  2. 创建虚拟环境:
   python -m venv venv
   source venv/bin/activate
   pip install -r req.txt
  1. 安装Neo4j并启动,配置settings.py中的连接参数
  2. 导入CSV三元组数据(使用datas/main.py或通过Django管理命令)
  3. 配置本地graphrag工具,确保调用路径正确
  4. 配置OpenAI API密钥(在settings.yaml中)
  5. 迁移数据库模型:
   python manage.py migrate
  1. 创建超级用户(可选):
   python manage.py createsuperuser

启动方式

  • 运行开发服务器:
  python manage.py runserver
  • 访问http://127.0.0.1:8000/即可使用系统界面。

核心技术亮点

  • 本地化部署:全部服务在本地环境运行,保证数据隐私安全
  • 知识图谱自动构建:从CSV数据自动匹配实体关系,减少人工维护
  • 图数据库高效查询:利用Neo4j强大的路径和关系查询能力
  • 多模态问答结合:结合本地知识检索(graphrag)和大模型(OpenAI),提升问答智能
  • 丰富前端交互:响应式页面支持多场景操作,支持知识可视化
  • 安全可靠:用户权限管理、密码加密保障系统安全

业务价值

该系统为教育、企业培训等领域提供了一个安全、智能、可扩展的知识问答平台,显著降低了信息检索成本,提高了用户满意度,同时满足对数据隐私和自主控制的需求。未来可结合更多知识源和AI模型,持续扩展系统能力,打造更强大的知识服务生态。


本项目通过结合知识图谱、图数据库和大模型技术,打造了一个高效、安全、智能的本地课程知识问答系统,具有广阔的应用前景和持续优化潜力。


如有问题请联系作者:https://qalangtao.com 。
800

图片[1]-基于GraphRag的本地课程图谱问答系统
图片[2]-基于GraphRag的本地课程图谱问答系统
图片[3]-基于GraphRag的本地课程图谱问答系统
图片[4]-基于GraphRag的本地课程图谱问答系统
图片[5]-基于GraphRag的本地课程图谱问答系统
图片[6]-基于GraphRag的本地课程图谱问答系统
© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享