基于Flask和Python的实时内容推荐与个性化智能问答系统设计项目书详解
一,设计简介
该项目是一个知识图谱驱动的智能问答系统,前端采用Vue.js框架开发,后端基于Flask构建RESTful API与Python核心逻辑交互。系统集成了经过微调的ChatGLM大型语言模型,实现了高质量的自然语言理解与生成能力。项目的完整设计文档已发布在GitHub仓库中,可供参考和二次开发。该仓库主要包含Web端实现部分,展示了知识图谱与大模型协同工作的实践方案。
二.项目概述及优点
2.1功能
系统功能包括收集知识图谱(课程实时收听,教材构造图谱,自主添加图谱),问答系统(知识图谱问答,选择专项问答,课程专项问答)以及推荐相关信息。
2.2目标
图2.1 相关系统技术图
图2.2 项目架构图
2.3产品描述
图2.3.1 查询检索流程图
图2.3.2 软件系统架构图
2.4产品创新
1.个性化知识图谱定义。我们对于问答系统可以通过相关课程,相关文档以及自己添加相关数据来构建相关的属于自己的知识图谱,知识图谱可以辅助问答以及推荐机制。
2.更准确大模型问答。对于问答系统,我们采用了Chatglm模型并进行微调,我们通过gpt-4配合相关数据集进行生成,保证生成的准确性,生成了44W条数据对大模型进行微调,进行黑盒测试使模型做选择题(50%单选题,50%多选题)的分数达到67分,原模型分数为32分(满分100),使模型在相关领域的问答更加准确,对于问答体我们用gpt-4生成了2w数据进行微调,使用回答更贴进专业。
3.双推荐机制的使用。对于推荐系统,我们采用了双推荐机制,首先我们对于用户本身提问的数据进行推荐,通过用户的问答以及得到的回答构建相关知识图谱,用户接下来的问题将会和提出的知识图谱以及知识库中获得的知识一并提问,得到相关的答案。同时我们还会对用户数据进行储存,对于有相同问答以及图谱的用户,我们会收集其好评以及差评,通过收集好评差评我们可以记录相关的数据得到更多的推荐。
4.多方式构建知识图谱。对于知识图谱,我们设计了多种方式来使用户构建属于自己的知识图谱,比如可以在上课的时候打开软件来进行收听,也可以通过播放网课来进行收听,用户也能使用相关的教材来构建自己的图谱知识。
5.多种用户端的软件使用。我们设计了不同用户端的软件,网页端,客户端,手机端,每个端有各自特殊的地方,网页端可以很好的适配学生快速打开,客户端可以方便个性化管理知识图谱,手机端更加简洁方便的查看相关信息。
2.5产品优点
1. 灵活构建知识图谱
软件的显著优势之一是允许用户通过相关课程、文档及自定义数据来构建个性化的知识图谱。这种灵活性确保了用户能够根据自己的需求和兴趣,定制专属的知识体系。知识图谱不仅有助于提升问答系统的准确性,还能为推荐机制提供有力的支持,使推荐内容更加精准、贴合用户需求。
2. 高准确度问答系统
问答系统采用了Chatglm模型,并经过大量数据的微调,显著提升了模型在相关领域的问答准确性。通过与gpt-4的配合,软件生成了高达44万条数据用于大模型的微调,使模型在选择题测试中的分数大幅提升,从原模型的32分提升至67分。此外,针对问答体,软件还利用gpt-4生成了2万条数据进行微调,使回答更加专业、贴切。
3. 创新的双推荐机制
推荐系统采用了独特的双推荐机制,充分结合了用户个人数据和群体数据。首先,系统会根据用户自身的提问和回答数据构建知识图谱,从而为用户提供个性化的推荐。其次,系统还会收集和分析具有相似问答及图谱的用户数据,包括其好评和差评,以进一步丰富推荐内容。这种机制不仅考虑了用户的个人喜好,还充分利用了群体智慧,使得推荐结果更加全面、精准。
4. 多样化的知识图谱构建方式
软件为用户提供了多种构建知识图谱的方式,以适应不同场景和需求。用户可以在上课或播放网课的过程中使用软件,将课程内容转化为知识图谱。同时,用户还可以借助相关教材,手动构建和完善自己的知识图谱。这种多样化的构建方式使得用户能够轻松地将学习与知识管理相结合,提升学习效率和质量。
三,项目需求分析及开发思想
3.1功能性需求分类
产品所需要的功能应该具有知识图谱构建,问题匹配与答案生成,交互和追问,验证和优化,相关内容推荐等功能。
3.2 用户界面需求
需求 |
达到要求 |
用户输入框 |
布局合理,方便用户的输入 |
用户登录 |
当用户访问到涉及权限限制相关的内容时,即跳出提醒用户进行登录 |
知识图谱概念图 |
动态展示,信息完整,不卡顿 |
答案显示 |
响应及时,不出现错误答案。 |
知识关系图显示 |
响应及时,节点信息关系正确渲染,以丰富的色调提升直观的效果,能够增加动态效果 |
检索结果 |
检索准确,可以抽取相关信息 |
问答系统 |
相关问答准确,可以得到相关信息 |
3.3 软硬件环境需求
需求 |
达到要求 |
操作系统 |
ubuntu 18.04及以上版本。 |
Python |
Python3.6及其以上版本。 |
Java |
jdk1.8 |
显卡 |
GeForce GTX 4090 Ti |
内存 |
32GB以上 |
CPU |
无 |
3.4 软件质量需求
需求 |
达到要求 |
正确性 |
对该领域下测试问题准确率应达到82% |
健壮性 |
对错误的输入、不合法的输入能避免返回错误答案 |
易用性 |
界面对用户友好,操作简单 |
清晰性 |
功能模块清晰无歧义 |
安全性 |
提供权限验证模块,限制用户功能 |
兼容性 |
支持市场上常用的浏览器 |
可扩展性 |
支持对问答算法对持续优化,并能够扩展系统功能 |
3.5知识图谱构建
对教材相关的多元数据进行分析整理,然后采用智能化方法对采集到的数据进行三元组抽取,构建知识图谱。我们可以自己进行知识图谱的构建,我们设置了以下几种构建知识图谱的方式。
- 通过语音识别对课程进行实时抽取构建,我们可以对上课时老师讲课进行知识图谱构建,也可以通过对电脑内的课程进行语音识别抽取从而构建图谱。
- 通过教材,对相关教材进行知识图谱的抽取,通过命名实体识别以及关系抽取构建知识图谱。
- 通过手动添加构建相关知识图谱,或者补充以有知识图谱。
3.6系统推荐构建
我们构建推荐系统分为三个方式,通过两个方式对用户进行推荐分析,通过协同过滤算法,以及用户本身问题以及选择构建的知识图谱进行问答。
- 通过不同用户行为对用户进行相关的推荐。
- 通过用户本身的问题对用户进行推荐。
- 通过构建的知识图谱对书籍进行相关的推荐。
3.7智能推理问答具体功能
我们采用rag配合知识图谱配合大模型构建推理问答系统,我们通过构建了相关的数据库采用sentence_transformers通过faiss进行相似度搜索得到相关的答案,同时通过相关的知识图谱对问题相关知识进行查找,最后放入大模型进行微调询问。
- 我们采用相关知识利用知识图谱以及数据库进行问答。
- 通过44w相关数据对大模型进行微调,通过微调得到相关的答案。
- 我们选择2w相关的问答知识对数据进行微调得到相关的模型。
3.8知识图谱数据管理具体功能
我们采用了Mysql以及Neo4j数据库进行双管理数据,通过Mysql对用户数据进行处理同时采用Neo4j对节点数据进行保存。
3.9系统服务接口
我们前后端连接采用flask进行前后端交互,前端采用Vue进行编写,后端使用python进行前后端交互。
四,设计概述及设计方案
4.1设计概述
4.1.1登录界面
- 用户名输入框:输入相关用户名。
(2)密码输入框:输入相关密码。
(3)登录按钮:点击登录。
图4.1 登录界面画面
我们可以输入相关密码进入系统。
进入系统后我们可以看到以下界面。
4.1.2课程内容推荐
(1)推荐内容搜索:搜索相关推荐内容。
(2)推荐内容:点击进行相关推荐内容网页。
(3)相关名词解释:解释相关的百度名词。
(4)推荐图片:推荐出相关的图片进行显示。
图4.2 课程内容推荐画面
课程内容推荐顶端为搜索框,用户在搜索框中输入关键词并点击检索按钮后,系统会识别用户检索请求中的专业概念,映射到知识图谱的结构中,给出可视化的知识结构与实体信息,减少知识的孤立性,结果更直观。
4.1.3课程内容实时推荐
(1)录制电脑内声音:对电脑内声音进行录制并进行知识图谱分析。
(2)录制电脑外声音:对电脑外声音进行录制并进行知识图谱分析。
(3)识别语音:对相关语句进行识别。
(4)相关内容推荐分析:通过各种方法对项目进行分析。
图4.3 课程实时内容推荐画面
课程实时内容推荐画面通过播放相应的课程,来构建相应的知识图谱,通过openai开源Whisper来对课程进行识别,通过对语句进行命名实体识别以及关系抽取来详细构建知识图谱。同时对相关的内容进行推荐,用户可以直接点击连接得到相关的网页来查看推荐内容。推荐算法根据所录制的课程有关,通过识别语音以及归纳出的知识图谱来对进行识别。
图4.4 课程内容推荐录制画面
课程开始录制时会有录音显示方便观看。
图4.5 课程内容推荐停止录制画面
课程结束录制时也会有相应的提醒,来提示录制结束。
图4.6 课程内容推荐画面
课程录制过程中也可以查看一些数据分析,可以通过这些分析更加直观的,分析课程数据。
4.1.4检索内容
(1)知识图谱搜索框:搜索知识图谱中的相关内容。
(2)知识图谱:查看知识图谱。
(3)切换选项:切换不同知识图谱。
图4.7 检索内容画面
制作结束的图谱可以在这里进行查找,通过查找数据可以更直观的看到相关的关系。
4.1.5课程内容关系全貌
(1)知识图谱:查看知识图谱。
图4.9 课程内容关系全貌画面
该界面可以查看关系全貌,可以看相关的知识图谱。
4.1.6教材知识图谱添加
(1)输入相关句子提取:输入句子得到相关的实体。
(2)关系抽取:输入得到相关的关系。
(3)添加相关节点:输入相关节点添加到知识图谱。
(4)知识图谱:查看知识图谱。
(5)切换选项:切换不同知识图谱。
图4.10 教材图谱添加画面
该界面可以通过教材添加相关的知识图谱,通过识别教材中的语句俩构建相关的知识图谱。
4.1.7 知识图谱添加
(1)输入相关句子提取:输入句子得到相关的实体。
(2)关系抽取:输入得到相关的关系。
(3)添加相关节点:输入相关节点添加到知识图谱。
(4)知识图谱:查看知识图谱。
(5)切换选项:切换不同知识图谱。
图4.8 知识图谱添加画面
知识图谱添加,可以使用相关的命名实体识别以及关系抽取界面,同时也可以自己添加构成相关界面。
4.1.8课程信息问答
(1)问答输入框:问答输入语句得到答案。
(2)提取知识图谱:提取相关知识图谱。
(3)推荐内容:进行相关的内容推荐。
(4)切换选项:切换不同知识图谱。
(5)相关百科知识:介绍相关百科知识。
(6)选择相关知识图谱:相关知识图谱选择,对相关的问答产生相应影响。
(7)总共知识图谱:查看总共的知识图谱。
图4.11 课程信息问答画面
课程信息问答分为三个大方向问答,课程信息问答,通过rag配合知识图谱对,问题进行回答,同时还会在问题上进行进一步知识图谱的提取,提取出的图谱可以影响下一段的问答,从而使用问答更加精准。
五,项目获取
项目我放到github上了,想要的可以自行下载,记得点个star,谢谢。
♪(´▽`)
前端
GitHub – ninewilli/Intelligent-question-answering-system: Intelligent question answering system
后端
GitHub – ninewilli/after-Personalized-intelligent-question-answering-system: after Personalized intelligent question answering system
任务书
GitHub – ninewilli/Quest-Books: Quest Books
作者:Nonewilli