原标题:《向量数据库》笔记:数据库发展简史

先导阅读:
如何理解“向量化”?
坦率地说,外行。但是,教学相长,想了想还是写笔记了!
1.向量数据库存在的意义?
这个很像“终极奥义”式的问题。首先要知道,原来关系型数据库只能存 20% 的数据;齐次,另外 80% 非结构化数据,之前用 NoSQL 方式存储。再者,向量数据库更偏向非关系型,将所有对象的不同的信息,分解成向量的标量(就是某个分量),以向量的形式存储。依托于分布式存储,节点结构通常是 B树或者 B+ 树。
以下是书上原话:
『
向量数据库可以提供基于语义的查询能力,这是区别于传统数据库的核心功能。索引可以更好地组织向量数据之间的关系,建立更合适的向量数据相似度匹配的数据结构,例如基于聚类、基于图的索引结构。专门的向量数据库更好地结合向量数据特点,设计分布和压缩算法,让存储效率更高,成本更低。
通过分布式架构确保多个数据副本的存在,保证多个数据副本之间的数据一致性。基于数据的分片技术。
从以下三方面构建专业向量数据库。
第一,结合向量数据库格式设计相应的存储、索引、查询组件。
第二,重视数据库技术多年累计的通用能力,这里指的是 DBMS。
第三,不急于补充传统数据库独有能力,小步快跑地对 AI 功能升级。
』
2.在大模型的应用。
数据形成指令集,流向服务端软件,服务端软件再将其转换为 CPU 运算。运算完成后,服务端反馈结果给到用户,同时,用户将重要数据存储到存储系统,调度计算资源,交付给计算机的必须是结构化数据。不难发现,大模型经过海量数据之后,可以理解自然语言,这说明模型已经理解非结构化。
作者这样评论 LLMs,大模型现在可以做到编写代码、处理表格、接受指令等,帮助人类社会完成一次巨大的资源调度范式的变化,我们可能不再需要那么多程序员翻译这些指令,之前由于这种翻译带来的信息损耗将会变小很多,人类的生产效率也会得到极大的提升。
AI 时代,人类调度算力方式,人类调度数据方式都将演进到自然语言。一方面,将人类产生的各种传统数据转化为向量数据存储到向量数据库中。另一方面,我们可以将人类查询数据的指令也转化为向量数据,这两种向量数据进行相似度匹配。
3.了解向量数据库历史
(1)孕育期,1980 - 2012
深度神经网络发展,例如 ImageNet,数据集包含 1000 个类别,超过 1400 万张图。此外涉及的算法还有,一是诸如AlexNet,谷歌 GoogleNet、微软 ResNet、Facebook,这些新的深度学习模型;二是深度学习框架的发展,例如 TensorFlow、微软 CNTK、Facebook Pytorch;三是建立大规模计算基础设施,例如,英伟达计算平台 CUDA。这些算法发展看似无关,实则助力搜索内容相似度计算。这里所谓的搜索内容,其内涵是比较丰富的,例如,图片、声音等。
关于神经网络和向量数据库,总结成两句话:
一是深度 神经网络催生向量数据库。主要是传统数据库效率不高,迫切需要一种新型数据存储、索引、查询方式。
(a)深度学习模型的输出,包括卷积神经网络 CNN;
(b)以及相似度查询充分应用于,推荐系统、图像识别、文本查询中;
(c)GPT、GLM 大模型需要处理大量向量数据。
二是向量数据库发展需要深度神经网络。向量信息很多来源于非结构化数据,因其能捕捉深层语义信息。
(a)向量化技术;
(b)多模态数据处理;
(c)实时性要求;
(d)AI 原生数据库能力。
(2)诞生期 2012 - 2017
两个案例准备学习的,FAISS,HNSW。
FAISS 提供扁平索引,适用于待查量在 10 万行及以下,具有最高的查询精度。倒排文件索引,通过聚类方法提高查询效率,支持亿行级别的向量数据规模。
HNSWLib 通过更高内存占用来换取更高的查询效率,支持千万行级别的向量规模。
(3)成长期 2017 至今
专注于开发向量数据库的公司,Zilliz, Pinecone, Qdrant, Chroma 等等。
互联网公司开始开发向量数据库。
传统数据库,开始试探向量数据库方向,例如,PostgreSQL pgvector,Redis Vector Search。阿里巴巴达摩院自己研发的向量数据管理引擎 Proxima。
第二章介绍了几个目前比较流行的向量数据库,对比情况如下。
插件式向量数据库
单机向量数据库
存算一体分布式向量数据库
存算分离分布式向量数据库