【Datawhale AI夏令营第四期】 魔搭-大模型应用开发方向笔记 Task04 RAG模型 人话八股文Bakwaan_Buddy项目创空间部署
什么是RAG:
我能把这个过程理解为Kimi.ai每次都能列出的一大堆网页参考资料吗?Kimi学了这些资料以后,根据这里面的信息综合还生成的答案,而不是仅仅基于自己的现有知识库回答。
Kimi本体认证:差不多就是这个意思!RAG=AI自己的知识库+现成输入/网上现找的,现学提炼信息回答
一个完整的RAG链路:
有道截屏翻译一下:
也就是说,我们传给AI解析的东西都会塞进数据库?那是不是机密的东西(比如未发表的自己的论文)就不能给AI纠错了?、
遗憾的是,确实是这样。
Kimi的后半段说的也很对,需要充分披露AI的使用情况。想之前我港硕在读的时候,我们有门课的老师就允许我们用AI,但是必须在作业开头声明使用的AI及其具体用途,比如翻译润色、资料收集等。
想起来之前一个很常见的例子:好像是词向量空间里面,男人到国王的距离与女人到女王的距离差不多。
之前在Youtube看推荐算法网课的时候,记得很对推荐的选项也是离线完成的。
RAG的在线计算过程和推荐算法感觉有很多相似之处。
说到推荐系统,Youtube上有一个推荐系统网课挺不错,是基于小红书的技术路线做的剖析。B站上好像也有。
https://www.youtube.com/watch?v=5dTOPen28ts&list=PLvOO0btloRntAi-VnV06M1Bu0X1xljUUP
传送门(需要科学上网)
现有的开源框架:
我猜这里是RAG的关键?让模型学到知识库里面的东西。
代码当中这个get_similarity函数就是在算余弦相似度:
这段RAG代码定义了两个主要的类,VectorStoreIndex 和 LLM。
VectorStoreIndex负责管理文档、找相似的。
LLM类型要常见一些,之前其他大模型应用里面也有差不多的类,在这负责查询文档生成文本。
那么,RAG的核心是否就依赖于这个额外输入的knowledge.txt呢?
知识库的文本数据被读取,生成向量表示,和模型的其他自有知识库里面的知识一起参与余弦相似度匹配(计算问题向量与知识库中每个文档向量之间的余弦相似度),如果最相似,知识库就发挥了作用,与模型现有的其他知识一起参与生成回答。
RAG模型的两个主要组件:检索组件用来管理和检索文档向量,生成组件用于生成回答。
项目开发遇到的BUG:
说回项目开发这块,我之前用的DeepSeek的模型,现在按照Task03的案例换回浪潮大模型,但是遇到一个很致命的问题——运行模型弹出的俩浏览器网页我的电脑都打不开。
一位群友提供了一个解决方案:
我尝试了但是还是不行。
然后另一位大佬说要做端口转发,但我完全没听过这是啥……
于是我又继续在群里厚脸皮请教,刚刚那位大佬表示:我没把命令形式写对。
以防万一,我这次直接让Kimi帮我写了一段规范的:
streamlit run app.py --server.address 127.0.0.1 --server.port 6006
这次就没问题啦!耶!!!
但是我的程序还是跑不起来,不知道为什么老找不到模型……
我看了一下被我模仿……哦不借鉴的Task03的AI科研助手,原来他这里专门定义的模型路径跟我那个不一样,有个“-”和“_”的区别,怪不得我打不开!!
我的代码:
果然不报这个错误了!!
经过我的一番操作和通义千问不厌其烦地努力,手工删除了很多借鉴,咳咳,别人模型引入的一些莫名其妙不需要的多余变量,现在总算是迁移模型成功了!
人话:能跑了。
但是显而易见,这个迁移后的效果不怎么好……
增加了随机种子以后好了一些,但是显然回答的质量远不如之前DeepSeek的模型高。
而且整个【换一换】按钮老重复出现,我暂时还不知道该怎么改掉。
效果不算太让我满意,但是就我目前水平来说感觉一下子也提不起来,而且确实这个夏令营的进度太!赶!了!我还同时参加了AIGC方向的夏令营,两边都在猛追进度。我决定先看看部署如何是好,之前看了Streamlit好像就有这个功能。
看起来还不算太难?
注意这个注册邮箱不能是QQ邮箱,否则显示不出校验码。
但是我换了港硕邮箱,发现他认不出我是真人……163邮箱也不行。
另一个部署平台也注册不了……
这就有点尴尬了……
创空间部署装环境
我试了AI给我建议的部署平台,俩都不行,后面我找到了ModelScope的疑似部署地址创空间,下面这个是教程:https://www.modelscope.cn/docs/%E5%88%9B%E7%A9%BA%E9%97%B4%E5%88%9B%E5%BB%BA%E4%B8%8E%E6%90%AD%E5%BB%BA
传送门
我创空间部署的时候遇到了一个奇葩问题:环境没对——No Module named ‘langchain’。
问了热心群友,终于搞明白了应该怎么给创空间装环境让他不要报错“缺少模块”。
这个问题解决了以后,后面又遇到Torch和CUDA不配合的问题:
还是这位好心的大佬,教我把调用了GPU的代码让AI改CPU!
然后果然代码没再报错了。但我感觉CPU好像不太聪明的样子,看不到运行结果??
群里这位大佬摸索的这个部署逻辑基本对。
要有个app.py,requirements.txt库写上所有依赖的环境包,创空间会自动读取这俩运行装库,跑代码,没报错=部署成功一大半了(环境没挂),后续就是功能测试和代码内部逻辑问题。
Task03AI科研助手案例:
我第一次运行装环境也报错。
大佬说更新pip和改一下传参的写法。
我再跑了一次装环境的命令发现报错消失了,但是始终提示找不到他这代码文件。确实看只装了环境,也没有拉代码库下来的命令,我就自己建了个.py代码跑。
中间报错我问通义千问也是半懂不懂的,反正缺啥库就装,一顿操作猛如虎。
然后莫名其妙就跑起来了,AMAZING!
喂它一个之前实习公司讲座介绍的关于AI调参的论文试试:
北大巨佬的学术成果,瞻仰一下。
啊这……?????
整不会了,先放放。停机的时候都给网站卡出彩花了。