暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

向量数据库

423

向量数据库可以解决包括大模型长时记忆、模型幻觉等问题,改善模型数据的时效性;通过数据处理和清洗,提供更高效的模型训练和学习过程,降低成本。同时,随着近期多模态模型的进展,未来模型数据量级和维度会快速提升,这也催生了更多针对向量数据库的需求。
目前行业仍处于低渗透率、商业化早期阶段,市场规模不足十亿美元级别。与其他AI相关硬件和基础设施相类似的是,模型能力和下游应用生态的成熟度直接决定了市场规模的增速,展望24-25年,随着AIGC技术的持续发展,有希望在B和C端看到更多的AI原生应用落地,从而带动向量数据库需求的提升。
本文简要的介绍了向量数据库的原理、与AI的结合以及行业进展情况。




一、数据库和向量数据库

1. 数据库的定义和分类

数据库是指长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。从架构上看,数据库作为计算机三大基础软件(操作系统、数据库、中间件)之一,向下可充分发挥硬件算力,向上支撑上层的应用需求,是信息系统高效运行的关键基础。

按照组织架构来看,可以把数据库分为关系型和非关系型数据库。

关系型数据库:指使用表格形式来存储数据,并通过主键和外键的关系将表格连接在一起。特点是数据的结构是固定的,每个字段必须有特定的数据类型,体现了数据库与ACID的大一统(原子性Atomicity、一致性Consistency、隔离性Isolation、持久性Durability)。关系型数据库适用于处理复杂的关系数据。

比较典型的关系型数据库包括:MySQL, PostgreSQL, SQL Server 等。


非关系型数据库:指不使用表格的形式来存储数据,而是使用键值对、文档或图形等不同的数据结构。特点是数据结构可以动态地更改,字段可以没有特定的数据类型。非关系型数据库适用于处理高速读写、大量数据和弹性扩展等需求。

比较典型的包括:MongoDB, Cassandra, CouchDB 等。


2. 向量数据库

向量数据库专门用于处理和管理向量数据,数据内容一般是多个数值组成的数据,用来表示某种特征或者属性,可以处理更多的非结构化数据。数据库储存的大部分是高维向量,高维向量是特征或属性的数学表示。每个向量都有一定数量的维度,范围从几十到几千不等,具体取决于数据的复杂性和粒度。向量通常是通过对原始数据(例如文本、图像、音频、视频等)应用某种变换或嵌入函数来生成的。

传统数据库中,我们通常是查询数据库中的行,其中的值与我们查询的内容完全匹配。在向量数据库中则不然,向量数据库主要是通过ANN算法(近邻最相似),凭借相似度量来查找与我们所查询内容最相似的量。例如查询“小猫”,向量临近的输出包括“猫”、“狗”、“狼”等动物(距离更近),而“香蕉”“苹果”则非我们要找的答案(距离更远)。


3. 向量索引的三个方法——PQ、LSH、HNSW

索引(Indexing)可以理解为给数据制作目录的过程,在后续的数据整理和查询中能够加快运行效率。因为向量数据库储存数据为向量,因此需要采用较为特殊的索引方式。

(1)PQ(Product Quantization,乘积量化)

PQ是一种针对高维度的有损压缩技术,将原始向量分解成为更小的部分,然后重新组合在一起,查询的时候会针对子块进行查询,因此不会丢失数据的重要信息(但仍然会有部分信息遗漏)。

主要步骤包括:

①分割:把完成向量切片,形成更小的子块,并给每一个子块进行量化

②代码分配:给每个子块创建一个“代码本”,“代码本”根据K均值聚类算法形成,主要显示了该子块所包含的数据特征(离散化值)

③编码:用算法给每个子块分配特定代码(一般来说,在第②步我们会找出代码本中最能体现该子块的一串代码作为子块的PQ码)

④查询:查询的时候,算法会自动把查询向量分解为子向量并对其量化,之后使用索引来查找距离最近的数值(通过对子向量之间距离的累积或加权求和)。


(2)LSH(Locality-sensitive hashing,局部敏感哈希算法)

LSH是一种在近似最近邻搜索上下文中建立索引的技术。它针对速度进行了优化,同时仍提供近似的、非详尽的结果。LSH 使用一组哈希函数将相似的向量映射到“桶”中,通过将查询项与同一桶中的项进行比较,可以快速识别出潜在的近似最近邻。如下所示:

在LSH中,哈希函数具有一种特殊的性质,即对于相似的项,它们被分配到相同的桶的概率较高,而对于不相似的项,它们被分配到相同的桶的概率较低。这种性质使得LSH能够通过仅比较具有相同哈希桶的项来减少搜索的规模。当然,近似的质量最终取决于哈希桶的数量,哈希桶越多,质量越好,但相应的计算成本也会上升,因此LSH对于大型数据适用性不强。


(3)HNSW(Hierarchical Navigable Small World,分层可导航小世界)

HNSW 方法是把高维向量分层的组织成一个图,每个节点是一个向量,每条边是一个距离或者相似度。每一层都是一个可导航小世界(Navigable Small World, NSW)图,即一个具有短路径和局部连通性的图。每一层的节点数目随机地减少,从而形成一个金字塔状的结构。这样做可以利用不同层次的边来加速搜索过程,并且可以用贪心算法来遍历图。这就像是在超市里,你有一个详细的地图,这个地图上标记了每个商品的位置,你可以通过这个地图来找到你想要的商品,而不需要在所有的区域之间穿梭。这也大大提高了效率。



(4)横向对比


4. 向量化关键步骤——Embedding

Embedding的输入端是高维度的数据,例如文字、图片、音频;输出端主要是向量形式,整个过程可以简单的阐述为数据降维(降维的方法是前文提到的索引技术,一般是通过PQ、HNSW和LSH)。


5. 向量数据库的优缺点

向量数据库主要功能是相似度搜索,因此更适合于大规模数据,且支持复杂查询。另一方面,在Embedding过程中,高维度数据可以被分拆成向量,因此在处理音频、视频、图像等数据的场景中,向量数据库的兼容性更强。

当然,向量数据库目前也存在产品成熟度较低、缺乏下游需求等短板。




二、向量数据库和AI

1. 提升训练速度

大模型发展愈发成熟,模型性能提升速度有目共睹,但性能提高往往带来更高的训练数据需求,大量的训练语料又代表着更长的训练时间和更高的训练成本。当前大模型训练过程中,主要面临几个问题:训练语料缺乏良好的时效性、重复或无效语料堆积、学习速度提升困难,这导致大模型对最新发生的事件缺乏认知。向量数据库的加入可以有效的改善这一问题,主要通过赋能数据导入、特征提取、模型构建等环节。在数据导入阶段,向量数据库主要对非结构型数据进行数据清理和筛选,完成数据的预处理;在特征提取阶段,向量数据库可以给数据加上向量特征,便于后续搜索和引用;在模型构建环节,向量数据库可以在微调等环节降低训练数据量,提升训练速度并控制成本。



向量数据库如何完成数据的预处理,并提升后续的数据抽取效率?目前AI模型训练数据包含的种类非常繁杂,很难用一个简单的低维数据库进行统一和查找。例如消费者购买记录中,包含有性别、年龄、居住地区、日常登录时间、搜索记录、购买价格段等文本型数据,也有用户喜爱偏好(款式、颜色等)等图像型数据,用传统的数据管理方法很难找到其中的关联性,从而在投喂大模型的过程中缺乏连贯的逻辑。向量数据库主要是基于向量相似度查询,用类似“模糊正确”的方式将有关联的数据进行归类,同时也可以将复杂的特征量进行向量化,从而转变成为格式统一的数据类型,以便给后续的模型训练提供相应的语料。


2. 解决LLM目前短板

目前大模型的记忆能力一般存在以下缺陷:

①时间局限性,目前模型的预训练数据都是旧数据,对于新发生的内容、私域数据等缺乏认知。

②文字长度局限性,目前大部分LLM都有一定的文本长度限制,超出后就会遗忘上下文,甚至在长度过半后就会出现较为明显的“遗忘”现象,会导致包括分析能力下降、无法进行大型文件分析、每次对话需要重启等问题。

③低准确率和幻觉等,主要出现在长对话后的部分内容遗忘以及模型“说胡话”。


针对上述问题,向量数据库可以有效改善大模型性能,具体可以表述为:

①更少的预训练或者更快速的学习过程,通过对数据进行分类、去重和清洗,实现数倍甚至十数倍的效率提升,模型的训练和开发成本将大幅下降。

②让大模型拥有长久记忆,扩宽的应用场景,这在包括员工培训、客服等方面可以明显提升用户体验。

③为大模型提供外挂知识库,提升模型的时效性和准确性。企业数据库可以通过向量数据库,对接企业模型,进行数据更新。

④向量数据库可以更好的处理高维数据,以适配多模态模型的需求。


3. 向量数据库与AI结合的几个例子
(1)本地化部署(以OpenAI为例)
向量数据库可以赋能OpenAI等大模型聊天机器人,使生成效果得到提升,同时可以更好的调用本地数据库内容,改善大模型的及时性和准确性。
这里展示了几个关键步骤:
①本地数据的整理,将内部数据进行分化和归类,这类数据可以以企业流文件、PDF等不同形式存在。
②通过Embedding model将输入的数据进行向量化
③向量数据储存在数据库中
④将原数据进行储存,以便在查询时回归到源文件
⑤使用Embedding model对查询语句进行向量化
⑥和⑦进入向量数据库,使用ANN等方式进行近邻最相似查找
⑧根据输出的向量回归到源数据和文件
⑨将问题和查询所得源文件以prompt的方式投喂给模型,模型将根据问题和结果进行整理,并生成相应的回答。当然,在这一步大模型会识别哪些信息是不相关的,在回答中予以剔除。
通过上述的方式,大模型回答的内容可以根据用户提供的本地数据进行完善,以解决模型本地化部署、回答时效性等问题。
(2)长对话
以GPT3.5和GPT4为例,每次对话我们都需要和模型介绍一次问题的背景,也无法把超长文档交给模型进行解读,主要是因为模型都有文本输入的长度限制。而导入向量数据库后,可以做到长时间记忆(例如模型可以记住10天前对话内容)以及超长对话(例如500轮以上)

(3)记忆能力和隐私数据
这一点和(2)有类似之处,但更倾向于对过去隐私聊天内容的记忆。



三、向量数据库市场规模和格局
1. 行业处于早期,后续规模增速取决于下游进展
目前原生向量数据库规模没有非常明确的界定,可以参考的是2023年原生向量数据库龙头之一的Pinecone收入大约是2000万USD,考虑到行业处于发展早期,玩家数量不多,预计行业集中度适中,行业整体规模不会超过10亿美元。
市场规模测算我们暂时按照向量数据库在非关系型数据库中的渗透率来计算。非关系型数据库增速高于关系型,因此未来数据库结构中的非关系型数据占比会明显提升(预计2030年达到30%);向量数据库19年开始出现,21-22年逐渐用于图片识别、安防、电商推荐等环节,行业经历从0-1的阶段,预计22-23年全球向量数据库(非原生)规模分别为1.9亿和7.4亿美元,渗透率分别为1%和3%。
后续的行业规模取决于两个方面:①大模型性能更替,特别是出现下一代能力更强的、对于训练数据要求更高的模型类型(重点关注多模态);②AI原生爆款应用出现,24年有望在营销、教育、办公领域出现几款现象级产品。上述两点将直接带动渗透率的提升,我们预计到2030年向量数据库的渗透率达到20%,则对应200亿美元市场规模。


2. 主要玩家
行业主要玩家包括Zilliz、Weaviate、Pinecone等,在商业化进程中推进顺利的多为一级市场非上市公司,代表性龙头Pinecone仍然处于融资阶段,距离上市还有时间。从功能来看,原生向量数据库公司的产品各有特色,例如Weaviate价格亲民、Zilliz社区活跃度高、Pinecone性能完善。
23年在AIGC兴起后,可以看到许多云数据库公司纷纷进军向量数据库领域,考虑到这些公司在社区建设、数据库框架和运维、下游客户结构方面有优势,市场兴起后这部分公司大概率继续保持行业领军地位。

3. 一些可以参考的排名数据
非关系型数据库包括文档、键值、图像、向量等不同类型,根据DB Engine的数据,文档、键值、图像和向量数据库评分最高的数据库分别为MongoDB(文档)、Redis(键值)、Neo4j(图像)、Pinecone(向量,第一的Kdb是时间序列数据库,排除)。需要注意的是,这里的评分对象是原生数据库,依据是搜索网站结果、搜索频率、数据库调用次数和工作量等。


4. 需要注意什么问题?
有几个点需要我们关注:
①原生向量数据库 vs 传统数据库+向量插件,前者的必要性如何?(主要是对行业格局的担忧,小市场成熟后面临大厂进入的例子比比皆是)
②本地化部署和边缘侧部署中,向量数据库是否不可或缺?(主要是对下游需求的担忧)
当然,近期打算和美国本土的大佬聊聊,有什么消息回头再跟兄弟们更新一下。


四、相关公司
受限于篇幅和合规,目前关注的MongoDB、Elastic等公司情况不在本文中展示,感兴趣的朋友可以私信交流。



注:本文中的部分图表和内容参考了长江证券、广发证券、兴业证券的研报内容。

文章转载自戏说数据那点事,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论