01 提效利器:RAG为传统MIS系统大幅提效,门槛并不高
你好,我是叶伟民。
开篇词里面我们提过,RAG是传统软件开发人员加入AI浪潮的最快之路,但是这条路里面又分三条小路。
第一条是最容易想到的,就是直接跳槽换一份RAG工作(比如做大模型应用开发),这条路成功率最小。第二条,就是在现有公司/团队里面开一个全新的RAG项目,这条路成功率高一点,但是还是有难度,这个方案我们下一章再探讨。
使用RAG改造自己所处的项目,这条路成功率最高,难度最小,因此我们安排在最前面讲解,也就是我们第一章要学习的实战案例——传统MIS系统的RAG改造。
今天这一讲,我们就先睹为快,看看传统MIS系统使用RAG改造前后的模样,同时搞定一些环境准备工作,方便我们把MIS系统乃至整个课程的配套代码运行起来。
用RAG改造传统MIS系统的收益
我们如果单纯出于自己想加入AI浪潮的私心,就想推进一个RAG改造项目,这样是很难获得上级或者客户等利益相关者同意的。我们必须要让他们看到改造系统所带来的收益,才可能让他们同意我们改造。
那么使用RAG改造传统MIS系统有什么收益呢?最直观的一个收益就是可以(大幅)减少用户的操作步骤和操作时间,提高用户的工作效率。
项目改造入手点
那么如何入手改造项目,才能减少用户的操作步骤和操作时间,提高用户的工作效率呢?我们先从日常最熟悉的查询操作说起。
查询数据
具体来说,原来的MIS系统想查询一条数据要经过以下步骤。
- 找到数据查询界面入口,总计1个步骤。
- 打开数据查询界面,总计1个步骤。
- 输入N种查询条件,总计N个步骤。
- 点击“查询”按钮。
总计是2+N+1个步骤,有没有更快更方便的方法呢?如果用户可以使用自然语言查询,理想状态下只需要1个步骤,总计可以减少N+2个步骤。N越多,用户的操作步骤和操作时间减少得越多。
另外如果可以结合准确率高的语音输入法,那么用户节省的时间更多。既然查询部分改成了自然语言,那么录入数据部分也可以相应地改为自然语言录入。
录入数据
查询数据提升效率的思路找到了,我们很容易想到录入数据也能做相似的改造。
传统MIS系统里,录入一条数据要经过以下步骤。
- 找到数据管理界面入口,一般需要1个步骤。
- 打开数据管理界面,总计1个步骤。
- 点击“新建”按钮,总计1个步骤。
- 录入数据,每个输入控件可能都要操作一遍,假设有N个输入控件,那么总计N个步骤。
- 点击“保存”按钮。
总计3+N+1个步骤,如果用户可以使用自然语言录入数据,理想状态下只需要1个步骤,总计可以减少N+3个步骤。同样,N越多,用户的操作步骤和操作时间减少得越多。
语音输入
另外,结合准确率高的语音输入法,那么能为用户节省的时间就会更多。既然录入部分改成了自然语言,那么修改数据和删除数据部分也可以相应地改为自然语言。
不过语音输入法属于操作系统配置部分,不属于软件应用开发部分,这里提到这个,更多是为了启发你的思路。
接下来,我们看看这个实战案例所要改造的MIS系统。
传统的MIS系统
这里我们使用一个ERP系统来代表传统的MIS系统。我们以其中一个子模块:“销售管理”下面的“销售对账”为例。
录入数据
我们先看看录入数据部分,直观感受一下录入的操作流程。
第一步,我们需要点开左边的“销售管理”菜单。
点开之后,进入第二步,点击“销售对账”子菜单。
进入“销售对账”页面,继续第三步,点击页面主要部分左上角的“添加”按钮。
第四步,进入“添加数据”页面,操作N个输入控件。
然后点击“提交”按钮。
经过3+N+1个步骤之后,我们终于录入完一条数据。
使用RAG改造之后
我们将以上模块使用RAG改造之后,理想状态下将只需要两个步骤:第一步,输入你的问题。第二步,点击“提交”按钮。然后系统会解析你输入的内容,将其转化为数据录入系统。
查询数据
我们再来看看查询数据的操作。第一步,我们需要点开左边的“销售管理”菜单。
点开之后,进入第二步,点击“销售对账”子菜单。
第三步,进入“销售对账”页面后,在N个输入控件输入查询条件。
点击“搜索”按钮,系统将返回查询结果。
经过2+N+1个步骤之后,我们终于可以查询出数据了。
使用RAG改造之后
我们使用RAG改造以上模块之后,理想状态下只需要两个步骤就能查询数据了。
第一步,输入你的问题。第二步,点击“提交”按钮。然后系统会解析你输入的内容,将其转化为具体的查询条件来查询出数据。
现在通过改造前后的比较,我们明显看出通过RAG改造传统MIS系统可以提升用户的工作效率。我们可以通过这点,说服用户等利益相关者同意使用RAG改造传统MIS系统。
细心的同学应该注意到了,即使使用RAG改造了传统MIS系统,我们也依旧保留了传统MIS系统的界面。是的,使用RAG将系统改造到可以替换的程度,并非短期可以完成的工作。即使完成了,根据经验,还是会有部分用户坚持使用传统界面,所以我们还需要保留传统界面,这样遇到RAG不能很好工作的时候,用户还能够通过传统界面完成任务。
安装先决软件和配置环境
我们约定使用Windows 11这个操作系统,为了把这个MIS系统运行起来,我们先需要安装以下软件。
- Python 3.9
- Miniconda(或Anaconda)
Python相信各位同学都不陌生,这里就不做介绍了。这里我们着重了解一下Miniconda或Anaconda,因为我们整个课程里都将使用Miniconda或Anaconda。
为什么要使用Miniconda或Anaconda
Miniconda或Anaconda是两种常用的Python发行版,我们整个课程将使用它们来创建Python的虚拟环境。
任何软件开发项目都会遇到依赖冲突、全局环境混乱、升级难题等问题,那么如何解决这些问题呢?Java使用Maven,.NET使用NuGet,Python则使用虚拟环境。
虚拟环境概述
虚拟环境是一种用于创建隔离的Python环境的方法。每个虚拟环境都有自己的Python解释器和一套独立的Python库。使用虚拟环境可以带来以下好处。
- 依赖管理:在虚拟环境中,你可以为不同的项目安装不同的库和库的版本,而不会相互冲突。
- 版本控制:你可以为每个虚拟环境指定一个Python版本,这样即使全局环境中的Python版本更新了,你的项目仍然可以使用特定版本的Python。
- 避免全局污染:在全局环境中安装太多包可能会导致依赖问题和版本冲突。虚拟环境可以避免这些问题,因为每个环境都是独立的。
- 开发和生产一致性:你可以在本地开发环境中使用与生产环境相同的依赖和配置,从而确保代码在不同环境中的行为一致。
- 安全性:虚拟环境可以限制对全局系统的更改,从而提高安全性。
- 灵活性:你可以为不同的项目创建多个虚拟环境,每个环境都可以根据项目需求定制。
我们可以使用以下工具创建和管理虚拟环境。
- venv:Python标准库中包含的虚拟环境工具,从Python 3.3版本开始提供。
- virtualenv:一个第三方工具,用于创建隔离的Python环境,可以与Python 2.x版本一起使用。
- Conda:作为Anaconda的一部分,Conda也可以用来创建和管理虚拟环境,但它提供了更多的功能,如包管理和跨语言支持。
使用虚拟环境是Python开发中的最佳实践之一,它可以帮助开发者管理项目依赖,确保项目的可移植性和可重复性。
初识Conda
Conda也有分两个版本,一个是完整版本Anaconda,一个是精简版本Miniconda。
Anaconda是一个打包的集合,里面预装好了conda、某个版本的python、众多包、科学计算工具等等,就是把很多常用的、不常用的库都给你装好了。
而Miniconda是Anaconda的精简版。Miniconda只包含最基本的Conda包管理器和Python解释器。由于Miniconda体积较小,它适合于那些只需要Conda包管理功能的用户。用户可以根据自己的需要,通过Conda安装所需的包和库。Miniconda可以节省磁盘空间,并且启动速度更快。它提供了更多的灵活性来选择安装哪些包。
安装Miniconda
如果你没有安装Anaconda,就可以按照下面的操作完成Miniconda的安装。如果你之前安装过Anaconda,直接使用就可以了,可以跳过安装这一步。
首先,我们使用浏览器打开https://mirrors.tuna.tsinghua.edu.cn/。
然后搜索anaconda,点击搜索到的anaconda链接。
然后点击miniconda。
之后点击 Miniconda3-py39_23.5.2-0-Windows-x86_64.exe 下载。
下载之后,一路按默认安装即可。
确认Miniconda已经安装和配置正确
如果一切顺利,这时候我们点击开始菜单,输入conda,应该弹出以下界面。
我们点击Anaconda Powershell Prompt,应该弹出以下界面。
然后我们输入conda --version,应该弹出以下界面,这时就说明安装成功了。
虚拟环境搭建&系统运行
安装完Miniconda之后,我们最后还要搭建虚拟环境,并把MIS系统运行起来。
创建虚拟环境
首先我们来创建虚拟环境。继续使用我们刚才打开的 Anaconda Powershell Prompt
,输入下面的命令:
这里的 rag1
是虚拟环境的名称。
当弹出以下提示时,输入 y
。
然后我们创建一个虚拟环境 rag1
。如果一切顺利,将会出现以下界面。
激活虚拟化境
环境创建好以后,需要激活才能使用。输入以下命令即可激活虚拟环境。
如果一切顺利,命令行开头的 base
将会变成 rag1
。
下载源代码
激活了虚拟环境之后,我们到这里下载这一章的配套源代码。
安装依赖
下载和解压完源代码之后,回到我们刚才打开的 Anaconda Powershell Prompt
,输入cd命令进入源代码解压后的目录,然后再进入。
然后再输入以下命令安装所有依赖。
运行MIS系统
所有依赖安装完毕后,我们输入命令运行系统。
如果一切顺利,将会显示如下界面。
确认MIS系统可以正常运行
这时候我们打开浏览器,访问 http://127.0.0.1:8000/,应该会出现以下页面。
至此,我们的MIS系统可以正常运行了。
小结
好了,今天这一讲到这里就结束了,最后我们来回顾一下今天的学习成果。
这一讲我们学会了三件事情。
第一件事,讨论了如何说服利益相关方,同意我们推动项目的RAG改造,并且分析了改造的切入点。
第二件事,展示了这个实战案例改造前后的模样,建立了感性、直观的认识。
第三件事,学习了如何把我们要改造的传统MIS系统运行起来,并且顺便搭建了整个课程所需要的环境。
好了,现在我们已经讲完改造前后的MIS系统,以及经改造后会有多方便,相信你的用户看了之后也会心动,愿意让你去改造。下一节我们开始讲这个实战案例的第一个基础概念:对话模式。
思考题
既然一个RAG应用无法一步到位,那么我们如何度过RAG应用不成熟的早期阶段呢?
欢迎你在留言区和我交流互动,如果这节课对你有启发,也推荐分享给身边更多朋友。
- 张申傲 👍(4) 💬(1)
第1讲打卡~ 思考题:对于项目的RAG改造,可以采用渐进式迭代的方式,正如课程实例中的MIS系统,系统整体上可以仍然保留全部的原始功能,保证业务上可以正常使用。同时对系统按照优先级或业务模块进行划分,逐个进行RAG能力的升级,并增加适当的灰度、abTest、回滚等功能,保证系统的平滑升级。
2024-09-05 - Geek_003d7a 👍(1) 💬(2)
请教一下老师,我目前是环境学院的研二学生,毕业方向是基于rag的##问答模型,然后发一篇中文核心,写一篇大论文,然后毕业,请问我可以选择这个课程吗
2024-11-11 - dog_brother 👍(1) 💬(1)
实战1的1-7节都看完了,在思考大模型在这个案例中起到了什么作用?我理解是将自然语言转化成程序语言,从而调用原有的服务端接口,并且将大模型返回结果进行封装后展示给用户。 在这个实战中,用户提问上下文算做外部知识,其他的就没了。
2024-10-17 - ティア(Erlin Ma) 👍(1) 💬(1)
对于现有系统,使用原始界面和rag界面并存的方式,是个很好的选择。 到对于新系统,界面部分的开发和维护成本很高,应该提供展示交互过程的rag界面来解决自然语言单次输入的不完整问题。 同时,尽量复用系统和其它用户共享的样例以及用户自身成功操作记录,来提高单次输入的成功率。 还有就是功能粒度的调整,标准是输入难易度和操作流程的平衡。传统页面有的很重,需要适当拆分。 以上就是我参考mid journey的交互过程,正在实践的几点启发,欢迎大家讨论改进。
2024-09-07 - overland 👍(1) 💬(1)
请教下老师哈,对于这个传统MIS的改造,只是用RAG能力,后台怎么理解前台输入的自然语言呢,是不是有什么自然语言类似LLM模型的处理?这块不太懂
2024-09-06 - grok 👍(1) 💬(1)
老师请问对于Django完全不懂,是否影响这门课的学习?只对机器学习相关的库比较熟
2024-09-06 - see 👍(0) 💬(3)
老师,这一套代码,可以在mac上跑吗?
2024-09-29 - 杨阳 👍(0) 💬(1)
改造后也是按照改造前一样的方式运行吗?
2024-09-13 - 亚林 👍(0) 💬(0)
恩 这才是python工程化包管理的正确姿势
2025-02-12 - Formater 👍(0) 💬(0)
老师,示例代码中内嵌的JS代码无法从cdn.bootcdn.net下载,如何解决?
2024-12-11