从《向量数据库》说起
- 上周同学来望京聊天时
- 我说最近在做:向量数据库
- 然后就向他解释
- 什么是向量
- 当时我们在楼下公园里遛弯
- 路边停了一排摩托车
- 我指着一辆比较酷的摩托给他举例子
- 意外的很容易他就听懂了
- 向量的核心是:把世间万物都数字化
- 一个人,一个美女,一辆车,一条狗
- 一群僵尸,一段记忆,一句话…
- 不管是什么
- 都用数字来表达
怎么做到向量的数字化呢
- 比如说:我
- 怎么用数字来描述我这个人呢
- 第1个维度:
- 在这个维度的设定是(物种:人:5001,狗:1001,猪:1002,花:2001,草:2002…)
- 我是个人:不是狗,不是猪,不是花,不是草
- 所以得到一个数字:
5001
- 第2个维度:
- 在这个维度的设定是(性别,男:1,女:0 ,不男不女:0.5,又男又妇:2,其他:3)
- 我是纯爷们,得到数字1,现在我的向量是
[5001,1]
- 第3个维度是身高
- 于是我的向量:
[5001,1,174]
- 第4个维度是籍贯
- 于是我的向量:
[5001,1,174,551]
- 第5个维度是体重
- 于是我的向量:
[5001,1,174,551,70]
- 第6个维度是小学学校名对应的数字
- 于是我的向量:
[5001,1,174,551,70,22]
- 第7个维度是喜欢的运动
- 第8个维度是喜欢的食物
- 第9个维度是喜欢的书
- 第10个维度是脸长
- 第11个维度是脸宽
- 第12个维度是眼睛大小
- 第13个维度是鼻孔大小
- 第14个维度是腿上有几根毛
- 第15个维度是肌肉密度
- 第16个维度是帅气程度
- 第17个维度是脾气
- ….
- 于是我的向量:
[5001,1,174,551,70,22,....]
- 维度越多
- 对我的描述越具体
- 最终我们定义一下,比如700个维度
- 那么最终我们用
[5001,1,174,551,70,22,....]
类似的700个数字定义了我 - 这一组数字就是我的向量表达
向量 有什么用?
- 刚才我们用向量表达了我这个人
- 这样会有什么好处呢
- 假设:
- 因为我的帅气英俊加上气宇不凡
- 有众多的追求者
- 但是我已经名花有主了
- 这时候追求者们
- 对我这个优秀的稀缺资源已经不能再被占有了
- 于是她们想找个:最接近我的人
- 这时候怎么办
- 去向量数据库里匹配向量和我重合度最高的人
- 这时候就会得到一批非常接近我的人
- 快去抢吧…
- 机会不等人
向量 崩塌
- 这时候就会有人质疑了
- 会不会出现一个人的向量和我无限接近
- 只有某一项或少数几项和我的不一样的人
- 比如一个各个向量都接近的女版的我?
- 比如会不会有条狗跟我的向量表达很近?
- 如果向量的维度不够
- 是会出现的
- 但是维度足够多
- 就会避免出现此类向量崩塌的场景
- 一个女版的我
- 一定会在其他的很多维度上和我产生明显差异
- 比如头发,运动能力,比如胸围,比如…
- 这就是向量的维度多的好处
- 大力出奇迹
- 维度多,细节到位
- 向量的匹配越真实
向量与AI
- 到这里是不是已经理解了向量是什么了
- 再从一句话来说
- “帮我写一篇今天晚饭的健康食谱”
- 这一句话
- 在向量维度也是用一组数字来表达
- 首先做分词
- 再对每个词的词性做数字化
- 词之间的关联数字化
- 最终这句话会对应成一个向量表达
[2,82,234,5,22,2197,74......]
- 这时候人工智能的输入层
- 就是通过向量化的数字
- 来理解这句话
- 再通过transformer层
- 最终输出合适的结果
- “请帮我写一篇晚饭的健康食谱”
- “写一篇晚饭的健康食谱”
- “晚饭的健身食谱”
- 以上的内容在向量表达层是很接近的
- 这就是一句话的多种说法
- 在向量表达层面非常接近
- 这点很重要
- 这也是大语言模型的基础
ChatGPT的向量
- 以最火的ChatGPT举例
- 我们说ChatGPT搞出1750亿参数的大模型时
- 这1750亿参数是怎么算出来的
- GPT3参数 =
输入层参数 + 层数 * transformer层
- 输入层参数量 =
词向量维度 * 词表大小 + 窗口长度)
- transformer层=
4 * 词向量维度 * 词向量维度 + 8 * 词向量维度 * 词向量维度 + 5 * 词向量维度
- 简化一下:
- GPT-3参数 =
12 * 层数 * 词向量维度 * 词向量维度 + (词表大小 + 窗口长度 + 5 * 层数) * 词向量维度
- ChatGPT的1750亿参数=
12 * 96 * 12288 * 12288 + (50257 + 2048 + 5 * 96) * 12288
- ChatGPT之类的大语言模型
- 通过足够多的向量化表达
- 来理解人类的语言的
- 在它出现之前人们训练AI只到几亿个参数的级别
- 结果openai公司有钱任性大力出奇迹
- 有足够多的显卡,烧到1750亿参数
- 训练出来的大模型让人产生的惊讶的理解和输出能力
- 而后面的GPT4的参数提升到1.8万亿
- 这段是不是不好理解啊
- 没关系
- 上面这通计算是在解释:
- ChatGPT智能的原因:大力出奇迹
总结
- 这篇文章里
- 我们用一个英俊的帅气男性举例
- 说明了向量是怎么产生的
- 向量是怎么用的
- 以及向量在AI人工智能领域的作用
- 而我最近在折腾的向量数据库
- 你能猜到是为什么吗?