个人随想-向量数据库,你到底应该选择谁?

news2024/11/15 16:42:41

image.png

随着大模型的新起,vectorstore这1、2年也非常的火。从以前只能用chroma到现在几十种向量数据库,选都选不过来。

以我接触过的很多公司来说,他们去选择向量数据库的时候,很多都和迷茫,不知道应该选择哪个向量数据库,甚至也不知道市面上有哪些向量数据库,甚至很多公司就随便选了一个差不多的,先用起来再说。

今天,我就抛砖引玉,以我对向量数据库的理解,来为向量数据库选型做一个对比和介绍,大家也可以聊聊你们现在用的是哪款向量数据库。

这里先不看云厂商的vectorstore,因为很多公司由于应用都在阿里云、腾讯云或者其他的云厂商,为了所谓的兼容或者减少运维成本,就直接选了dashvector或者其他的云向量数据库,我们仅来谈谈非云厂商的向量数据库。

同时我们再排除非专业做向量数据库的,比如redis,neo4j,cassandra,solr,clickhouse,elasticsearch,mongodb atlas。毕竟这些存储,不是用来专业做vectorstore的。

那么剩下来,在国内能耳熟能详的,我觉得有以下几个。

  1. pinecone
  2. pgvector
  3. qdrant
  4. milvus
  5. weaviate
  6. chroma

以上排名,不分先后,文章最后,我们根据我的项目经验,给大家稍微介绍一下优劣。

vectorstore选好了,接下来,就要看看从哪些维度来对比:

我们就从以下角度来吧:

1、base

1.1 oss : 是否开源,用户是否可以私有化部署

1.2 License: 采用什么license

1.3 DevLang:开发语言用的什么

1.4 VSS Lanuch: 第一个relase版本的发布时间

2、Search

2.1 Filters:过滤的意思是,在查询的时候,是否可以根据metadata进行过滤。比如大家都会的,在我们的rag高级实战课中介绍过的self-query,就是当用户的问题过来后,我们可以先通过filters过滤掉无用的document,从而达到很好的效果。特别是范围查询的时候,比如一个电影推荐的vectorstore,比如,用户如果问,香港的动作电影。这个时候,filters可以直接按照metadata按照地区和电影类型进行过滤。所以这个filters,一般的vectore,都应该支持。

2.2 Hybrid Search: hybrid search的意思是,我可以通过关键词keyword+向量搜索vector search一起进行搜索,这个在高级的rag中也经常使用,特别是使用RRF获取更多rag的相关结果。比如在电商中,可以先搜索关键词,搜索出来的结果后,再通过品牌,价格区间,评分进行细分,与lucene类似,如果大家以前对搜索有一定研究的话,就可以知道,这个相当于搜索结果再分组,类似与lucene、solr等搜索引擎。

2.3 facets: 与前面说的filters类似,facets也是用来过滤结果的。只是,filters是在查询前过滤,减少搜索范围。而facets用于查询结果出来以后,进一步细分或者分组。

2.4 Geo search :就是地理位置坐标的支持,从而可以快速的计算出多个位置之间的距离和联系。

2.5 Multi-vector:为了实现多视角查询、多模态查询、分层查询、混合语义查询,vectorstore需要支持multi-vector功能。

2.6 sparse: 有的时候,用户已经有特定需求或者已经有了现成的稀疏向量,而不需要依赖vectorstore或系统内置的算法来生成vector。.

2.7 BM25: 是否内置bm25

2.8 full-text : 是否内置全文检索,类似lucene、solr等

3、Models

3.1 Text Model: 是否内置或者插件支持类似sentence-transformers或者 huggingface等文本embedding模型。

3.2 Image Model: 是否支持图像embedding,比如CLIP.

3.3 Struct Model:是否支持struct model,比如user click,graph等。

4、Apis

4.1 langchain :是否支持langchain

4.3 llamaindex: 是否支持llamaindex

4.4 rag: 是否支持rag的全部高级功能

4.5 Recsys: 是否内置推荐系统等功能

5、ops

5.1 Managed: 是否提供云端管理

5.2 Pricing: 是否提供收费服务

5.3 in-process:应用程序级别的

5.4 Multi renant:是否支持多租户

5.5 disk index:是否支持硬盘存储index

5.6 ephemeral index: 在没有部署的情况下, 是否可用,比如Memory的支持。

5.7 sharding:是否支持sharding 负载均衡

5.8 document维度大小:最大支持的vector dims

5.9 int8 quantization:是否支持int8量化

5.10 binary quantization: 是否支持binary量化

5.11 index type: index的类型,比如:flat,flat-bq,hns,freshdiskann等。

接下来,我们2个2个比较一下:

image.png

image.png

image.png

image.png

image.png

image.png

大家可以根据上面的截图,和我上面的指标介绍,按照自己的业务系统对vectorstore的功能和部署方式,来选择您觉得最适合你们的vectorstore。

大家在选择向量数据库的时候,还是需要按照自己的需求来。看看你们的业务是否需要vectorstor的一些高级功能,比如:filter,hybrid search,facets,multi-vector,sparse,bm25等等。

另外,也是特别关键的一点,就是你的数据是否有严格的合规和安全需求,是否允许存储在云上。虽然存储在云上的好处很多,但是如果你们团队对数据资产十分的看中,您也可以选择类似qdrant的vectorstore,自有存储,自有维护。

还是那句话,大家在做向量数据库选型的时候,一定要多对比几个产品,同时一定要清楚公司的业务,到底需要vector提供什么样的能力,在来进行对比。

整个所有向量数据库的对比表格,如果您需要的话,私聊我,我把地址发给您。

关注我,每天带你开发一个AI应用,每周二四六直播,欢迎多多交流。

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2138965.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQl篇(数据类型)(持续更新迭代)

目录 常见类型一:数值类型 常见类型二:字符串类型 一、文本字符串类型 1. char & varchar 1.1. CHAR(M)类型 1.2. VARCHAR(M)类型 1.3. 两者应用 2. enum & set 二、二进制字符串类型 1. BINARY & VARBINARY类型 2. 二进制字符串和…

C++ IO框架

文章目录 I/O 复用概述I/O 模型一个输入操作的两个阶段 select 函数概述详细解析函数内容详解select总结 poll 函数概述详细解析函数内容详解 epoll 函数概述基础API注意事项总结一下select, poll, epoll的区别 Reactor 和 Proactor概述概念服务器连接多个客户端的业务场景解决…

【DVWA】——File Upload(文件上传)

📖 前言:文件上传漏洞是由于对上传文件未作过滤或过滤机制不严(文件后缀或类型),导致恶意用户可以上传脚本文件,通过上传文件可达到控制网站权限的目的。 目录 🕒 1. Low🕒 2. Mediu…

Window10安装多智能体强化学习平台(SMAC)

基本步骤可以参照博客:window10安装多智能体强化学习平台(SMAC)_conda如何安装smac库-CSDN博客 注意1:上面所涉及的python第三方库版本不一定要安装博客指定版本。 注意2:星际争霸需要安装国际服(国服不支持)&#x…

Redisson实现分布式锁(看门狗机制)

目录 可重入锁: 锁重试和看门狗机制: 主从一致性: 首先引入依赖,配置好信息 3.使用Redisson的分布式锁 可重入锁: 可重入锁实现是通过redsi中的hash实现的,key依旧是业务名称加id,然后第一个…

正式发售!《黑神话:悟空》背后的技术力量——UE5与实时云渲染

千呼万唤始出来,《黑神话:悟空》终于在今年8月发售了,相信大家都已经玩起来了! 作为国产游戏的画质巅峰之作,《黑神话:悟空》凭借其令人叹为观止的画面质量和游戏体验,赢得了广泛的好评。这一切…

实时监控分析广告数据跳转统计平台源码

广告跳转实时分析页面统计系统,可选择生成html页面样式,可自定义设置页面域名后缀,可指定跳转指定网址, 可记录单个页面的访问记录,可对生成的单个链接进行备注,自定义等待时间进行跳转。 源码下载&#…

内网渗透- 内网渗透的基本知识

攻击流程讲解 内网介绍 内网也指局域网,是指在某一区域内由多台计算机互联而成的计算机组,组网范围通常在数千米以内。在局域网中,可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等。内网是封闭的…

Python 课程11-Web 开发

前言 Web 开发已经成为现代软件开发的核心领域之一,许多应用程序和服务都通过 Web 来与用户和其他系统交互。Python 作为一门广泛使用的编程语言,提供了多种 Web 开发框架,其中最流行的两个框架是 Flask 和 Django。 Flask 是一个轻量级的 W…

Dubbo SPI源码

文章目录 Dubbo SPI使用方式AOP功能源码剖析SPI注解1.获取加载器2.获取拓展实例对象3.创建拓展类的实例对象 Dubbo SPI Dubbo 的 SPI(Service Provider Interface)机制是一种强大的扩展机制,它允许开发者在运行时动态地替换或增加框架的功能。…

2-95 基于matlab的模板定位

基于matlab的模板定位。利用①相关匹配(Correlation Matching)、②基于Hausdorff距离匹配方法 及③考虑对场景图象距离变换(Distance Transform)的Hausdorff距离匹配方法,实现模板目标在场景图象中的定位。程序已调通,…

XShell快速连接虚拟机(Ubuntu系统)

目录 前言 一 (XShell)(虚拟机 )(Ubuntu)下载 二 虚拟机的ip查找 三 虚拟机中安装连接环境 四 开启ssh-server服务 五 验证是Ubuntu是否开启ssh-server服务 六 连接XShell软件 前言 对于刚开始探索 Linux 世界的新手来说,拥有一台自己的服务器可能并不现实。幸运的…

linux服务器配置及服务器资源命令使用查看

在做i性能压测之前,所了解的服务器配置:CPU、内存、硬盘、网络 一、查看cpu信息 常用命令:cat /proc/cpuinfo或者lscpu、pidstat等 需要关注的: Architecture: x86_64 # 架构信息,表示系统的CPU架构为x86_64&#…

业务资源管理模式语言14

第三节:在前面讨论的Resource Transcations(资源事务)中有许多共同的行为。其中一个行为可以包含多个项目,每个项目对应一个不同的资源(ItemizeTheResourceTransaction(11)。事务可以产生一些报…

GitLab权限及设置

之前很少关注这些,项目的权限,一般由专门的管理人员设置。 但自己创建的项目自己可以设置权限。下面是一些笔记。 GitLab中用户权限_gitlab 权限-CSDN博客 开发中遇到要将自己这块的代码上传到Git,由其他组的同事拉取后继续开发。上传代码后…

【JVM】概述

前言 Java的技术体系主要由支撑Java程序运行的虚拟机、提供各开发领域接口支持的Java类库、Java编程语言及许许多多的第三方Java框架(如Spring、MyBatis等)构成。在国内,有关Java类库API、Java语言语法及第三方框架的技术资料和书籍非常丰富&…

Oracle从入门到放弃

Oracle从入门到放弃 左连接和右连接Where子查询单行子查询多行子查询 from子句的子查询select子句的子查询oracle分页序列序列的应用 索引PL/SQL变量声明与赋值select into 赋值变量属性类型 异常循环游标存储函数存储过程不带传出参数的存储过程带传出参数的存储过程 左连接和…

【爬虫软件】批量采集抖音主页已发布作品

一、背景介绍 以下xx代表你猜中的部分。 1.1 爬取目标 用python开发的xx爬虫采集软件,可自动按博主抓取其已发布视频。 为什么有了源码还开发界面软件呢?方便不懂编程代码的小白用户使用,无需安装python,无需改代码,…

瞳孔检测系统源码分享

瞳孔检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

CS61C 2020计算机组成原理Lecture01-数字表示,溢出

1. 原码 原码就是符号化的数值,其编码规则简单直观:正数符号位用0表示,负数符号位用1表示,数值位保持不变。 x0.1101,则[x]原0.1101;x1101,则[x]原01101x -0.1111,则[x]原1.1111&…