面向生成式 AI 的向量数据库:架构,性能与未来趋势

打印 上一主题 下一主题

主题 928|帖子 928|积分 2784

导读 向量数据库是高效处理惩罚和准确检索高维数据的基石,对于生成式 AI 技术而言至关重要。本文将分享向量数据库的架构计划和实现中的关键点。
主要分为五个方面:

  • 向量数据库配景先容
  • Milvus 整体架构计划
  • 性能的关键-索引
  • 面向 AI 连续进化
01
向量数据库配景先容
1. 什么是向量数据
我们经常会遇到一些非结构化数据,好比图片、视频、语音、文本等,它们通过模型被向量化,进而有助于模型的明白、训练和推理。向量,与数学中向量的概念雷同,代表高维空间里面的一个点。

2. 什么是向量检索
向量检索,即给定场景向量,找出离场景向量近来的 k 条向量,也就是 KN 查询。常见的计算 metric 有 L2、IP、Cosine 等,这与产生向量的模型定义是有关系的。

3. 什么是向量数据库
向量数据库是一种专门为存储和查询等高维度向量数据而优化的数据库系统,类似于图数据库、时空数据库这种 specialized 数据库,针对特别的数据举行特别的管理和优化。

4. 为什么必要向量数据库
在当前的大模型浪潮之前,向量数据库已经被很广泛地应用于推荐系统、风控、安防等系统中。现在仍然是一个重要的使用场景。
大模型浪潮以后,给数据库带来了机遇,向量数据库作为 RAG 中一个存储的记忆体可以帮助用户构建范畴内相关的知识库,当向大模型提问时,可在向量数据库中找出相似的提问,来增强提示词,从而得到一个更加为用户量身定制的答案,增强告终果的相关性。
5. 什么是好的向量数据库
一个向量数据库优劣,主要从性能、扩展性、易用性、功能、可观测可运维、生态集成、故障恢复以及安全等方面举行衡量。
02
Milvus 整体架构计划
1. 云原生的分布式向量数据库
Milvus 有四个关键角色,以数据的流入作为参考,起首会颠末 proxy 即接入层,主要负责请求查抄和路由的功能;当插入请求颠末 proxy 时进入到消息队列,被 data node 消耗,把流式数据转化为持久化数据,放到对象存储上;批次的数据累积了一段时间以后交给 index node 支持索引的构建。
查询链路走向如下:颠末 proxy 的路由后,交给 query node 做实际数据的检索,然后把 index node 构建好的索引加载上来,同时消耗流里的数据来支持实时检索。

四个角色的计划可以带来很好的隔离性,起首建索引的过程非常吃 CPU 和内存资源,我们不希望该过程影响到查询的资源,因此要做读写分离。其次,基于这样的计划可以具备很好的扩展能力,好比扩展 query node,有效地去提拔查询的性能,当 index 构建可能跟不上时间也可以去扩容 index。最后,可以做更机动的流式数据处理惩罚,同时具备了流批数据的写入和查询的能力。
2. 实时性和性能的 trade off
Segment 是 Milvus 查询的一个最小单位,growing segment 保证数据的实时可见,但性能相对差;sealed segment 负责持久化数据的查询,性能较好。在背景通过 indexNode 构建索引更换 queryNode 上的数据,渐渐把 growing segment 更换成 sealed segment,从而到达实时性和性能比较好的 trade off。

3. 异步 compaction
我们会把小的 segment 合成大 segment 来加速查询。因为向量索引大小和性能不是完全呈线性变化的,好比数据是原来的四倍但性能没有任何变化,假如用 4 个小 segment 去查,对性能有比较大陵犯,所以会通过 compaction 操作把一些小的数据归并成大的,然后更换掉 query node 上一些小 segment 的数据。Compaction 同时归并 delete 数据做物理删除,这样对向量检索会更加友好。

4. 批量写入
用户对于数据的实时性要求不黑白常高,或者更新删除不是很频繁的情况下,更加推荐采用批量写入,这样可以跳过消息队列的限制直接把数据插入到对象存储当中。我们还支持 Spark connector,外部数据源可以通过 Spark ETL 导入到 Milvus。
5. 全局索引
在查询的过程中默认会访问所有的 segment,然后把结果做 reduce,得到终极的结果。假如预先知道了数据的分布,就能够淘汰 segment 的访问,对于性能提拔会有很大的帮助。常见的数据分布方式包括:
(1)根据差别的租户划分数据,租户 1 ~ 10 的数据落在这一部分上,租户 11 ~ 20 落在别的一部分上,查询时可跳过一些数据的查询。
(2)根据标量过滤条件划分数据,即定义标亮的 key,它的 ID 遵从某种分布,可以对分布做数据重组,当知道标量落在的范围时,可以做有效的剪枝。
(3)根据向量空间分布划分数据,把相似向量放在同一个 segment 上,从而有效地淘汰 segment 的访问。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业陈诉、LLM大模型学习视频、LLM大模型学习门路、开源大模型学习教程等,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

徐锦洪

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表