【AIGC FREE】我的知识我来管——制作私人知识库(二)
先回顾一下上一篇讲知识库的文章:
自从有了制作私人知识库的想法,就一直想着有没有办法,能不能不把这些“知识”发给chatgpt/gpt4,这恐怕是垂直领域做私有知识库的人都希望的吧,然而从制作私有知识的流程来说,又几乎是不可能的。
我们分析一下制作过程,我们用的方法叫langchain,是将本地文档转化成矢量存放到矢量库中,当我们向它提问时,它会先将问题矢量化后在矢量库中找到相关矢量,再将问题矢量和找到矢量混合后发给chatgpt, chatgpt用类似的方法在它的巨大的矢量库进行查找,查到的当然也是矢量,矢量再用反矢量化(矢量化的逆运算)还原成文字信息,这个文字信息就是问题的回答。(为方便理解,这里的解释比较口语化,没有涉及embidding、transformer之类的概念,需要的请自行实习)
从上面的过程中可以看出,矢量化和反矢量化是一对相反的操作,同样这也就说明了矢量化并不是加密操作,而是很容易反向转化成文字的,因此我们的问题和在本地文档中的相关内容其实是发送给chatgpt的,如果这些内容中有一些重要的数据,比如身份证、姓名、银行账号、病历等,其实也就泄露出去了,尽管chatgpt也未必想要。
近期我正好在研究隐私计算相关的内容,于是翻遍了国内外几十种隐私计算平台和几百种加密算法,深入研究了多方安全计算(MPC)、可信联邦学习(TFL)和可信执行环境(TEE)这三种技术方案,尽管也看到一些联邦大模型的开源项目(比如FATE-LLM等),但都有两点局限:
(1)采用开源大语言模型作为底座,比如FATE-LLM就是以gpt-2作为基础大模型的,其他一些国产开源项目是以chatglm-6b为基座的;
(2)多采用联邦学习作为联合建模的方法,通俗点说,就是两方都要用相同的加密方法,通过特定的同态加密之类的方法,来保证数据不泄露。(同态加密的概念这里就不详细解释了,需要的自行查资料,也可以给我留言)。
记住,我说的是两方都要加密,这就跟langchain的模式有很大的不同,尽管我们可以把本地文档加密后再矢量化,但chatgpt那边可不会对它的所有语料加密,因此在这里同态加密就做不起来,一边加密另一边不加密,两边矢量化后的矢量空间就不一致了,那transformer找到的内容就很难映射到你的私有矢量了,那得到什么奇怪的结果也就不奇怪了。
这基本上是我一个月前就想到的了,随后我混迹于AIGC相关的十几个微信群中,从模型到应用,从文本到做图,在每天浩如烟海、铺天盖地的各类AI产品宣传中,终于让我找到了一个那么特殊的项目——cape privacy,它的宣传语是:

第一次接触这个项目也是在一个月前(遍查各群聊天记录,好像是6月8日),当时我的第一个想法是“不可能",我还在几个群里问过,但结论是“可能是做了一些脱敏”、”应用面很窄,用处不大“,随后也就扔一边去没管他了。
然而问题依然还在,甚至有时很影响,当我拿到一个文档时,我往往会犹豫要不要入到矢量库中去,那也就相当于公开了。今天终于痛定思痛,既然还没找到其他方法,那就只能是它了,尽管有着一百个“不相信”,也强迫自己要去探个究竟。
于是我就到它的官网上去探索了:https://chat.capeprivacy.com/
注册登录后,二话不说,先扔一本书上去。


有点让我”惊喜“的是,这个文档本身是做了加密的(不能复制),在lainchain中是无法生成矢量的,这里居然能上传,还能像模像样地回答问题。
虽然问题是回答了,但我依然没明白”所以然“。那只能继续深挖,在看过FAQ、Overview之后还是不明所已,好在我发现了,它居然有Discord和Github。(虽然有Github,但也只是开放了一些接口,并没有开源核心算法 )

终于在扒了一堆Discord消息之后,我终于对其有了一个基本的了解。


也就是说,它并不关心你的本地文档是不是会泄漏,它只对一些特定的隐私数据进行处理,这些特定的隐私数据有三种:PII、PCI和PHI,分别涉及身份、金融和健康三个方面,当遇到这三个方面的词时将自动对其做转换(比如将“Wayne Gretzky”换成” [Name1] [Name2]“),然而这并不影响句子的语法和意义,对一个大语言模型来说句子中个别实体对象的替换,并不会影响大语言模型去”遣词造句“,关于这一点,我在medium上曾经发过一篇文章《LLM, this may not be the path to the ultimate AI》,有兴趣同学的可以去读一读:
https://medium.com/@185482899/llm-this-may-not-be-the-path-to-the-ultimate-ai-fe92c49f2ce5


cape privacy这个方案对我还是有很大启发的,这说明我们不能固守已经的方案,而要根据实际情况,打开思路,做一些必要的调整和变通。
尽管我不觉得它能百分百地保证本地文档的安全(显然也没有),但它仍然很有借鉴意义。
Everyone, have a good dream!
Welcome to like, reward is better!