简介A

概述

数据以向量形式存储,处理高维度、高相似度、高并发的数据
1提供标准的SQL或专用查询语言接口
2除了向量外,还要支持向量相关的数据存储和管理
AI这10年的高速发展,催生了专门对向量进行管理和检索的数据库。

主要操作

包括:相似度搜索、聚类、降维等
1检索:找出相似向量,例如用于相似图片搜索
2降维:对高维向量进行降维(为什么要使用向量数据库,而不是降维后存储进去?毕竟降维的方法有很多)
3向量计算:配合特定的算法和模型,对向量进行计算

特点

1高维: 数据维度高,现在深度学习的向量一般在100~1024之间比较多
2稀疏:很多值等于0或者接近于0;AI中向量的特点是值比较小,而且一般到小数量点后6位甚至更多;好的存储方案应该可以大大提升空间利用效率
3异构:向量数据中元素可能有不同类型或含义(什么意思?向量代表的含义如果是通过学习出来的,可解释性不好,但是不代表是异构?)
4动态:向量数据可能随着时间或环境变化而变化(什么?这和数据库有什么关系,如果新的模型对于内容的表示有变化,那应该要靠模型来更新数据库?)

关键技术

场景
难点
方法
向量索引:找出与查询向量近似的向量
向量维度高、向量数量特别大而且相似度的种类比较多(cosine、欧式距离、内积等等)
k-dimensional tree, 乘积量化、HNSW(可导航小世界网络)等
分布式
向量数据量特别多(千亿以上),存储和运算量非常大
1现在其实很多应用的设计一开始就是分布式云原生的2向量的计算是可以依赖GPU、FPGA这种专门设计的硬件加速

使用场景

场景
描述
检索:人脸搜索、人体搜索、车辆搜索、图片搜索、人脸支付
向量检索,找出相似向量从大规模的数据中找出相似度最高的内容
平安城市:人脸撞库
让公安可以查询哪些人同时在两个案发现场出现
QA
直接使用问题向量来搜索答案

主要产品

Milvus是最成熟的开源解决方案
Pinecone的方案价格便宜,提供SaaS服务,使用方便
产品
公司
描述
Zilliz(美国)融资1亿美金以上
Zilliz是全球向量数据库领域的开拓者,专注于在非结构化数据的分析中挖掘价值;在1分钟内搭建大规模相似性搜索服务,同时支持多语言基础产品完全开源,Zilliz投入商业化产品开发,提供付费的商业化版本 Zilliz Cloud
cVector向量计算一体机
云创大数据(南京)北交所上市
公司经营每况愈下,甚至2022毛利都是负的cVector高性能人脸特征向量告诉对比计算一体机,支持亿级大规模人脸1:N对比场景;主要提供给公安行业人脸识别软硬件一体进行销售
云原生向量数据库
Pinecone(美国)
专注于通过AI生成的内容表示(representation),AI生成的其实都是向量,进行存储和搜索提供SaaS服务
SeMI Technologies
开源向量数据库,SeMI Technologies微软Weavivate提供服务托管等商业服务
RedisSearch
Redis的组件,支持向量的搜索
向量相似度检索数据库基于Rust,性能好
轻量级方案,底层使用已有的clickhouse、duckdb等存储引擎基于Python
云厂商

LLM和向量数据库

CVP 技术栈(CVP Stack, ChatGPT + Vector Database, Prompt):向量数据库 + LLM

LLM应用已经成为向量数据库的杀手级应用场景
1私有数据知识库:私有数据转换成向量,让模型操作,无需暴露数据给大模型,保护隐私和知识产权
2为大模型提供实时数据更新:为大模型注入最新数据,减少大模型胡说八道;不需要重新训练模型,比fine-tune的成本低很多
3大模型的个性化和增强:添加个性化数据和用户专有数据,实现更个性化功能
4智能体记忆:记忆虚拟人的历史信息,形成虚拟人的专属记忆
5缓存大模型处理结果:对处理结果的向量进行缓存,避免重复计算
6构建更复杂的AI系统:将多个大模型进行串联,通过向量数据库保存中间预算结果

VectorDB解决处理文本处理长度限制

LLM支持的tokens是有限的,ChatGPT支持4096,后来的GPT-4是32K,Claude号称100K;随着tokens增加,使用费用在增加(运算量也显著提升),相应时间增加
如果有文档(txt/Word/PDF/Excel/PPT...)或者很长的历史对话,通过embedding找出有关的内容,再和新问题使用模板组成新的问题去和大模型对话,能够得到更好的回答

观点

是传统数据转向向量数据库还是向量数据库来支持传统数据库比较好?
这个要看传统数据库能够支持到什么程度,这里面有几个难点传统数据库要能够克服
1数据量大:向量的规模可能会极大,千亿以上的数据量,维度高每条数据占用空间都大
2计算量大:向量计算是计算密集型的,特别在数据量大的场景下,需要分布式计算或者GPU加速
3高并发、定时延:相比一些QPS较低的大数据分析数据库,向量数据的业务会直接面向终端用户,QPS会比较大
是个好的商业化产品吗?
功能上没有特别复杂,不像传统的SQL数据库,功能和场景比较复杂;所以大家可能很难做出功能上的差异。
云厂商: 阿里云、华为云、腾讯云这种,如果我用相应的云,如果他们的产品够用,可能优先选择对应的云方案
开源:开源生态在中国表现不好,在中国做开源基本不挣钱,在美国大家会很愿意为商业版本或服务付费,在这里Zilliz走的最快
Zilliz也会支持国内云厂商,而且价格相比于国外要便宜很多
在这种竞争格局下,国内其他做向量数据库的机会很小,很难有很好的机会。

Milvus - Zilliz

分为接入层(Access Layer)、 协调服务层(Coordinator Service)、执行节点层(Worker nodes)、存储服务层(Storage);从设计上开始就考虑的是分布式和云原生,将存储和计算分开,进行并行计算

参考资料

Loading...
目录
文章列表
王小扬博客
产品
Think
Git
软件开发
计算机网络
CI
DB
设计
缓存
Docker
Node
操作系统
Java
大前端
Nestjs
其他
PHP