【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调参的论文试试:
 北大巨佬的学术成果,瞻仰一下。
 
 啊这……?????
 
 整不会了,先放放。停机的时候都给网站卡出彩花了。
 

















![[数据结构] RBTree  模拟实现RBTree](https://i-blog.csdnimg.cn/direct/479380651d1141e5b90e57869d415009.png)

