【AIGC FREE】我的知识我来管——制作私人知识库
终于要开始写些有用的东西了,写些什么呢?当下AIGC这么火,我亦不能免俗。当然也不能写得太普通了,也要有些自己的特色,写AIGC的文章很多,有很多[有手就行]、[你奶奶都会]之类的,读来也很有趣,做个入门挺好的,但我想做得更深入些,更讲究些,涉及些原理但不像是授课,涉及些编码但不像是工作,总之学中玩、玩中学,开开心心每一天哈!😄
我不喜欢做什么规划、计划,以前读研的时候有个同学说过“规划、规划,就是鬼话、鬼话”,我深以为然。我平时不爱写东西,我喜欢的是想,尤其是瞎想,俗称发呆的那种,这不禁让我想起十六七年前的一件事,我当时在安徽出差,宿舍旁边有个休闲场所,那顶上写的几个斗大的招牌,什么“休闲”、“娱乐”、“棋牌”、“唱歌”之类的,中间赫然有两个字——发呆,第一次见时倒有点懵住了,心想这“发呆”难道还得找个好地儿吗?可越往后越觉得发呆是件很奢侈的事情了。窃以为发呆是个想法沉淀、交织、自动碰撞的过程,往往发过呆后会有一些不错的想法跳出来,甚至很多是那种清醒时无论如何也想不到的,或许你静静地啥也不做的时候,倒是给头脑里(或心里,到底人的思想是在脑袋里还是在心里,这也是个问题,我也看过有记录说人换了心脏后就完全变成另一个人的故事,我们一面说“心里所想”,另一面又说“脑袋空空”,阳明“心”学,智慧大“脑”,总之这是另外一个问题了)各种想法一个争奇斗艳的机会了,它们或争斗,或压或挤,或融合、扭曲,分解又组合,想想CNN中的隐藏层,人脑(心)可比那复杂的多了,里面一片翻江倒海(全连接、超全连接,跨了几百层的可能都有,LSTM和RNN跟它相比都是小巫),外面却是那么安静,一静一动,宛如八卦太极图,黑白相生,动静相宜。
尽管如此呢,我还是想划定一个范围,大致有以下几点要写一写,算是“有但不限于”的那种:
一、文本生成,大语文模型(后面我会用LLM代替,少打几个字)的看家本领,包括微调(不太想谈)和langchain(这个可以谈,一会就谈);
二、语音生成,包括人声分离、情感识别、语音克隆、语音替换、语音对话等等与声音有关的,这个主要流程已经走通了,但包含的内容比较多,要分个几期来说;
三、图片生成,MJ&SD之类,这块我还不太熟悉,传统的photoshop、3d max、coredraw之类我还熟悉些,但似乎没啥帮助,边学边写吧;
四、视频生成,包括换脸、换衣服,尤其是数字人,有些以前做过,有些正在研究,慢慢来;
五、其他,所有不能归类于上面四类的,都放在这,我现在也不知道会有些什么,要看我发呆时能面蹦出什么了。
看我这个系列,需要有一些小准备的,现在这里统一说一下,后面就不再提了:
(1)要有一个google账号
(2)要注册一个goole云盘
(3)会用google colab,我这边的案例大部分是用colab跑的
(4)最好懂一点python,出现问题可以简单调试一下,当然也可以问我,我很乐于回答
(5)有个openai的号,至少能连gpt3.5(本着FREE的原则,我目前也没有升级到plus),
下面该写今天的主题了,如何做一个自己的私人知识库,
首先你得有个矢量库用来存放你的私人文档(的矢量),我在这用的是pinecone,一个在线的矢量库,如果你没有用过,请做以下操作:
到 https://www.pinecone.io/ 上注册一个账号,注册之后并不能马上用,只是先进入到一个waitlist,耐心等上几天(短的一两天,长的一两周);
等你收到确认邮件后,再次登录pinecone网站,需要创建索引

在弹出框中填写索引名称(任意)、维度(一定要填768)


这样就创建好索引了;
3. 下面到左侧菜单栏API Keys,查看,这个页面先别关掉,后面会用到

接下来,直接上代码,请在google浏览器中打开我分享的链接:
https://colab.research.google.com/drive/10nBse4sqAxQWNmGbc0rXcCSQP-RFXlDH?usp=sharing
(注:在此声明一下,这些代码并非本人所创,乃是langchain-chatglm群 @裘 老兄所创,他的代码原来分为两部分,文档写矢量库是在kaggle上跑的,问答页面部分是在huggingface上跑的,我将两者合并了,略做些修改,都放到colab中了)
下面做一个重要的步骤,把打开的colab在你自己的google云盘中保存一份(如下图):


在新标签页打开,前面打开的colab页面可以关掉了。之所以保存在你自己的google云盘中,有两个原因:一是这是你自己的文件,后面所做的任何修改都会保存下来;二是后面你再跑这个colab程序,你就可以到你自己的云盘上去直接打开就行了,在google云盘上打开colab文件的方式如下图所示:

刚打开的colab文件如下图所示:

先别急着执行,我们先要做一些修改,往下找,找到一个代码框是以“#上传文档到pinecone,需预先注册好pinecone账号,并创建一个index”开头的,在这个代码框中继续往下找,找到如下图所示的几行代码:

把代码中xxxx部分替换成你的pinecone中的API Key、environment和索引名称。
接着点击colab页面左边的

按钮,会显示目录树,然后从你本地磁盘拖个文件上去:

等待文件上传完成,可以一次上传多个文件,当前支持PDF和docx两种类型的文件,文件上传完成后会显示在目录树中。
注意:如果上传文件的位置如上图所示,右边代码中的“/content"就不用改。(当然你也可以改成其他目录,相应右边的代码也要调整)

代码中默认是上传PDF文件的,如果要上传docx文件,需要对代码做些修改(如下图)

注:如果你上传的文件中既有PDF文件,也有docx文件,则这段代码则需要执行两次(先执行PDF矢量化,修改代码后,再执行docx文件矢量化)
修改之后,随时用Ctrl+S保存,修改后的内容将直接保存到你的google云盘上。
下面回到colab页面的开头,逐个代码块执行,执行代码块很简单,只要点击代码块左边的

按钮即可,colab的代码块只能顺序执行(即下一个必须等上一个执行完才能执行,当然你可以先点上这个按钮,会有一个虚框套住这个按钮,等前一代码块执行完后会自动执行这个代码块,初学者最好一步一步来,不要着急)
执行过程中有几个代码块需要单独讲一下,比如下面这个代码块,在执行完成后会出现“RESTART RUNTIME”按钮,这个没啥,点它,然后在弹出框中点击“是”,即可

执行过程中注意观察输出日志,比如文档写矢量库的代码执行的日志大概是这样的:

最后一步,“#打开知识库对话界面”,执行之后会出现一个链接URL(蓝色部分)

在蓝色链接上点击右键,在菜单中选择“在新标签页中打开链接”,打开的新链接页面,需要做一些配置,按下面的图示操作即可

把 top_k调小一点(2或3),防止token太长

这里也要输入你自己的pinecone的API Key、environment和索引名称:

如果不想每次打开这个界面都要输入pinecone相关信息,也可以在执行最后一个代码块(即“#打开知识库对话界面”)前先修改一下以下代码
好了,下面可以愉快地开始问答了
对于每个问题,你还可以查看一下命中了你知识库中的哪个文档的哪个部分,由于gpt的幻觉,你最好看看这里,如果还不放心,就去查查原文档(我就遇到过连这种命中都是编出来的情况)
好了,至此你的私人知识库已经搭建起来了,有几点需要注意的:
pinecone库要时不时用一下,比如写点进去,或者跟知识库作些问答, 因为如果14天你没运作,那你的索引库就被自动清除了:(
这里的核心思想是langchain,我不细说,仔细看代码,有不明白的可以留言提问
这里我留个题目给大家,看看有没有人能做出来:为什么我们在pinecone中创建的索引的维度必须是768?
最后,祝大家玩得开心,学得愉快!
补充说一下,如果你只想搭建一个知识库,最快的办法是用Dify:https://cloud.dify.ai/apps
我简单用两句话总结一下,就是你建应用,建数据集,将应用和数据集绑定起来,两分钟搞定。详细操作请查看 @卡兹克 的公众号文章:【有手就行】2分钟0代码,教你用Dify搭建专属AI知识库
注:Dify是开源的,也支持本地部署。