ES vs Milvus vs PG vector :LLM时代的向量数据库选型指南

互联网时代,关系型数据库为王。相应的,我们的检索方式也是精确匹配查询为主——查找特定的用户ID、商品编号或订单状态。

但AI时代,语义检索成为常态,向量数据库成为搜索推荐系统,大模型RAG落地,自动驾驶数据筛选等场景的关键基础设施。

但一个问题是,不同场景,对向量数据库的需求不同:

RAG(检索增强生成):需要在海量文档中找到与用户问题语义相关的内容。对召回质量要求高,可灵活添加元信息,支持多租户,存储成本低。

推荐系统:基于用户行为向量找到相似用户或商品。要求高 QPS、低延迟、高可用性,支持数据离线导入和弹性扩缩容。

图像搜索:通过图像特征向量实现以图搜图。要求低延迟,高可扩展性,以应对数据急速增长。

代码搜索:基于代码语义而非关键字匹配。要求高召回,高 QPS,低延迟,数据规模相对可控。

但是从Elasticsearch 到Milvus 到PG vector,再到Qdrant ,甚至就在昨天,AWS也推出了自己的S3 Vctor。

那么,面对市场上多的让人眼花缭乱的向量数据库产品,如何选择最适合自己业务场景的那一个?

本文将从功能、性能、生态三个核心维度,给出系统的决策框架和最佳实践建议(不涉及任何带货与倾向性引导):

0如何做业务与VDB的功能匹配

在选择向量数据库时,功能是最基础和关键的考虑因素。以下是评估功能时需要重点关注的几个方面:

  • 完善的向量数据类型

  • 丰富的向量索引算法

  • 全面的向量检索能力

  • 企业级的可扩展架构

1.1 完善的向量数据类型

为什么要把完善的向量数据类型放在最开始?

原因很简单,文本、图像、音频分别对应不同向量类型;一个业务也往往对应多个向量字段,没有完善的向量数据类型支持,功能构建就无从谈起。

以电商平台的商品搜索为例,一个搜索动作,通常会涉及至少三种向量类型:

  • 商品图片经过图像模型处理后生成的稠密向量,可以用于以图搜图和视觉相似性匹配。

  • 商品描述文本经过分词后生成的稀疏向量,可以用于关键词匹配和全文检索。

  • 商品的用户行为特征(如点击、收藏、购买等)会编码为二值向量,用于快速用户兴趣匹配。

1.2 丰富的向量索引算法与精细化参数设置

不同场景对向量检索的要求,通常可以概括为三方面:高召回率、高性能和低成本,但这三个目标之间往往又会构成一个不可能三角。

但通常来说,三者取其二,就能满足99%以上的需求。那么究竟选哪两者,需要不同的高效索引算法来支持。以下是不同索引算法,对应的不同场景总结:

  • 基于内存索引算法:

    • Flat索引适合追求极致召回率的场景

    • IVF索引适合大规模数据的快速检索

    • HNSW索引则在召回率和性能之间取得良好平衡

  • 基于磁盘的索引方案,可以突破内存容量限制,实现PB级大规模数据的经济存储和高效检索

  • 基于GPU等硬件加速的GPU 索引,满足对延迟极其敏感的在线推理场景

  • 提供细粒度的参数调优能力,支持用户根据业务特点精确控制索引行为

而基于多样化的索引选择,向量数据库还应具备精细的参数配置,让用户在有限的资源投入下实现最优的性能产出。

1.3 全面的向量检索能力

Top-K相似性检索是最常见的向量检索需求,但除此之外过滤检索、阈值检索、分组检索和混合检索,也是一个企业级向量数据库的必备功能。

还是以电商平台的智能商品推荐为例,场景设置为用户要买一条裙子。那么一个推荐动作,其实可以被拆解为以下几个服务的结合:

  • Top-K相似性检索

基于当前商品的图片和文本描述向量,检索视觉和语义相似的商品

  • 智能过滤

通过价格区间筛选(标量过滤)、库存状态过滤(布尔过滤)和相似度阈值控制(设定最低相似度分数为0.8)进行智能筛选

  • 多样性优化

按商品品类分组(连衣裙、半身裙、套装等)并对每个品类精选Top-3展示(分组检索)

  • 个性化推荐

通过融合用户画像向量、结合历史购买行为,实现多模态混合检索(商品文本稀疏向量 + 图片稠密向量)

看似简单的相关商品推荐背后,实际需要向量数据库提供一整套完备的检索能力。

1.4 企业级的可扩展架构

相比传统结构化数据,非结构化数据最大的特点就是数据量足够大。IDC数据显示,到2027年,全球非结构化数据将占到数据总量的86.8%,达到246.9ZB。

这些数据通过各类AI模型处理后会产生海量的向量数据。

相应的,一个好的的向量数据库必须采用高度灵活和可扩展的云原生架构,以应对这种指数级的数据增长。同时,系统需要具备完善的高可用机制,包括多副本容灾、自动故障切换等特性,确保服务的连续性。

0如何做VDB的性能评估

建立在完整的功能需求之上,性能是我们最关注的特性。

通常来说,性能评估,可以从以下几个维度系统性进行考察:

  • 查询延迟:包括P50、P95、P99等分位点,反映大部分和极端情况下的响应速度。

  • 吞吐量QPS:单位时间内可处理的查询数量,体现系统并发能力。

  • 准确率(Recall@K):近似检索场景下,结果的准确性同样重要。

  • 数据规模适应性:在百万、千万、亿级数据量下的性能表现,是否能平滑扩展。

  • 过滤查询性能:在不同过滤比例(如1%、10%、50%、90%、99%)下的向量检索性能表现,体现系统处理复杂查询的能力。

  • 流式处理性能:在持续写入和实时查询的场景下,系统的写入延迟、查询延迟波动情况,以及数据一致性保证。

  • 资源消耗:CPU、内存、磁盘IO等资源占用,决定了系统的性价比和可持续性。

知道需要评估的指标以后,选择一个好的评测工具也很重要。在算法层面,ANN-Benchmark是一个广受认可的近似最近邻算法评测平台,但它主要面向底层算法库的性能对比,忽略了动态场景、数据集维度也有些过时、用例相对简单,不适用生产环境。

而关于生产环境的向量数据库评测,我们更推荐同样开源的VDBBench。其特性可以参考我们的历史文章:

https://mp.weixin.qq.com/s/LK2aC2AkPeBGRn41Bd6l-A

使用 VDBBench 的典型测试流程:

  1. 确定使用场景:选择合适的数据集(如SIFT1M、GIST1M等)和业务场景(如TopK检索、过滤检索、边写入边检索等)。

  2. 配置数据库和VDBBench参数:保证测试环境公平、可复现。

  3. 在Web界面上配置并启动测试,自动收集各项性能指标,对其进行对比后,做综合选型决策。

0不要忽略VDB的生态

生态系统的完善程度会直接决定VDB的可用性、可推广性和长期生命力。

我们的考量维度可以从以下几个方面来展开

大模型生态的适配

一个优秀的向量数据库应当能够无缝对接主流大模型(如OpenAI、Claude、Qwen等)和Embedding服务,支持多种主流向量生成方式。同时,还可以和LangChain、LlamaIndex、Dify等AI开发框架深度集成,方便开发者快速构建RAG、智能问答、推荐系统等应用。

工具体系的适配

一个高效简洁的交互与监测系统,会直接决定用户的数据库使用体验,常见的配套工具体系主要有以下几个:

  • 可视化管理工具:支持数据管理、性能监控、权限配置等一站式操作

  • 备份与恢复工具:支持全量/增量备份、数据恢复,保障数据安全

  • 容量规划工具:帮助用户科学评估资源需求,合理规划集群规模

  • 诊断与调优工具:支持日志分析、性能瓶颈定位、故障排查等

  • 监控与告警体系:如Prometheus/Grafana集成,便于实时监控系统健康状态

是否开源与中立

向量数据库是个尚在进化中的进行时产品,开源意味着可以听到更多用户声音,率先完成进化。同时,借助活跃的开源社区,也能够降低用户的使用与认知门槛。

但只有开源是不够的,大型开源项目的迭代维护是需要很高的人力投入,单靠个人开发者几乎无法支撑,业界知名的数据服务相关的开源项目,比如Spark、MongoDB、Kafka,背后都是有成熟的商业化公司在运营。

在此基础上,VDB的商业化方案,则应该保持云中立,在保证弹性、低运维投入的基础上,能满足不同业务、不同地区产品,以及不同阶段企业的多样化需求。

是否有足够的成功落地案例

一个成功的落地案例抵得上一万句解释与论证。在选型一款向量数据库之前,不妨先看看这个产品的官网和公众号上是否有涵盖各种行业(互联网、金融、制造、医疗、法律等),各种应用场景(搜索、推荐、风控、智能客服、质量检测等)的落地案例。

一个产品能服务好同行,自然能更好的服务自己。

如果还有担心,那么实践是检验真理的唯一标准,先做个POC测试验证一下肯定没错。

尾声

写这篇文章的起因,是最近很多朋友问到我关于向量数据库选型的问题。

但数据库选型是一个复杂的决策过程,选完之后可能会用三五年甚至更久,甚至决定一批开发者的职业生涯,给出建议必须慎之又慎。

所以我将自己的一些经验写成文章系统的分享出来,如果大家关于VDB选型或者应用、发展趋势的更多问题,欢迎扫描文末二维码,随时和我们交流!

作者介绍

图片

李成龙

Zilliz 资深开源布道师

推荐阅读

开源|VDBBench 1.0正式官宣,完全复刻业务场景,支持用户自定义数据集

实战|TRAE+Milvus MCP,现在用自然语言就能搞定向量数据库部署了!

Milvus Week |  Kafka 很好, Pulsar也不错,但WoodPecker才是未来

Milvus Week | 1bit极度量化+高召回,RaBitQ才是最好的向量量化算法

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

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

相关文章

磁盘阵列技术的功能与分类

磁盘阵列技术 磁盘阵列是由多台磁盘存储器组成的一个快速、大容量、高可靠的外存子系统。现在常见的磁盘阵列称为廉价冗余磁盘阵列(Redundant Array of Independent Disk,RAID)。目前,常见的 RAID 如下所示。 廉价冗余磁盘阵列 RAID级别 RAID-0是一种不具…

SpringMVC核心注解:@RequestMapping详解

概述RequestMapping是SpringMVC中最核心的注解之一,用于将HTTP请求映射到MVC和REST控制器的处理方法上。基本功能RequestMapping主要用于:映射URL到控制器类或方法定义请求方法类型(GET、POST等)定义请求参数、请求头等条件使用位…

【杂谈】硬件工程师怎么用好AI工具做失效分析

最近被派到国外出差了,工作任务比较重,所以更新的频率比较低。但在出差工作的过程中,我发现在失效分析时,有相当多的时间做的是比较重复的工作。比如失效分析肯定要一些证据如图片、视频。当我们做多台设备的失效分析时&#xff0…

MyBatis详解以及在IDEA中的开发

MyBatis概述 MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的过程。 核心特点 优势: SQL语句与Java代码分离,便于维护支持动态SQL,灵活性…

LangGraph教程6:LangGraph工作流人机交互

文章目录 Human-in-the-loop(人机交互) interrupt Warning Human-in-the-loop(人机交互) 人机交互(或称“在循环中”)工作流将人类输入整合到自动化过程中,在关键阶段允许决策、验证或修正。这在基于 LLM 的应用中尤其有用,因为基础模型可能会产生偶尔的不准确性。在合规、…

Linux部署Milvus数据库及Attu UI工具完全指南

一、准备工作1.1 环境要求操作系统:Ubuntu 20.04/Debian 11/CentOS 7硬件配置:至少8GB内存,4核CPU,50GB磁盘空间网络要求:可访问互联网(用于拉取Docker镜像)1.2 安装Docker和Docker Compose1.2.…

开疆智能Profinet转ModbusTCP网关连接康耐视InSight相机案例

相机配置:硬件连接部分可以查询我的博客:点击 这里不做说明。在电子表格视图下,点击菜单 “传感器–网络设置”:选择工业协议,如图。保存作业,并按照提示重启相机。3. 相机的控制/状态字:上图中…

BERT技术架构

### **一、整体定位:纯编码器架构**#### **核心设计思想**> **预训练微调**:> 1. **预训练**:在海量无标签文本上学习通用语言规律> 2. **微调**:用少量标注数据适配具体任务(如分类/问答)> **…

Python+ArcGIS+AI蒸散发与GPP估算|Penman-Monteith模型|FLUXNET数据处理|多源产品融合|专业科研绘图与可视化等

结合Python编程与ArcGIS工具,通过AI辅助方法实现蒸散发与植被总初级生产力估算。学习国际流行的Penman-Monteith模型,掌握数据获取、处理、分析和可视化全流程,培养生态水文与双碳领域的实践应用能力。通过DeepSeek、豆包等AI工具辅助代码编写…

elasticsearch+logstash+kibana+filebeat实现niginx日志收集(未过滤日志内容)

单点部署 环境准备 基于Rocky9虚拟机,内存大小为4G yum -y install lrzsz useradd elkf passwd elkf#密码随意su - elk rz 导入包,笔者导使用版本为7.17.8下载地址:https://www.elastic.co/downloads/past-releases/ tar -xf elasticsearch-7…

hadoop 集群问题处理

1.1.JournalNode 的作用在 HDFS HA 配置中,为了实现两个 NameNode 之间的状态同步和故障自动切换,Hadoop 使用了一组 JournalNode 来管理共享的编辑日志。具体来说,JournalNode 的主要职责包括:共享编辑日志:JournalNo…

LeetCode--46.全排列

解题思路&#xff1a;1.获取信息&#xff1a;给定一个不含重复数字的数组&#xff0c;返回所有可能的全排列&#xff0c;可以按任意顺序返回提示信息&#xff1a;1 < nums.length < 6-10 < nums[i] < 102.分析题目&#xff1a;要获取到所有可能的全排列我们每次会从…

云徙科技----一面(全栈开发)

一、公司是做什么业务的&#xff1f;二、介绍一下自己会用的&#xff0c;熟悉的技术栈&#xff1f;三、“在 Spring 应用中&#xff0c;当你发起一个 RESTful API 请求时&#xff08;例如 GET /api/users/1&#xff09;&#xff0c;计算机系统是如何知道这个请求的&#xff1f;…

我是怎么设计一个订单号生成策略的(库存系统)

我是怎么设计一个订单号生成策略的&#xff08;库存系统&#xff09;一、背景 最近我在做一套自研的库存管理系统&#xff0c;其中有一个看似简单、实则很关键的功能&#xff1a;订单号生成策略。 订单号不仅要全局唯一&#xff0c;还要有一定的可读性和业务含义&#xff0c;比…

问津集 #1:Rethinking The Compaction Policies in LSM-trees

文章目录引言正文结束语引言 陪女朋友出门&#xff0c;我大概有两个小时左右的空闲时间&#xff0c;遂带上电脑&#xff0c;翻了下论文列表&#xff0c;选择了这篇文章做一个简读。 因为这一年负责时序系统的存储引擎和计算引擎演进&#xff0c;而Compaction又是串联读写的核心…

数据产品结构:从数据接入到可视化的完整架构指南

在数据驱动决策的时代&#xff0c;一套高效的数据产品结构是企业挖掘数据价值的基础。无论是巨头企业自建的完整体系&#xff0c;还是中小企业依赖的第三方工具&#xff0c;其核心逻辑都是实现 “数据从产生到呈现” 的全链路管理。本文将拆解数据产品的五层架构&#xff0c;对…

python学智能算法(二十三)|SVM-几何距离

引言 前序学习文章中&#xff0c;已经探究了电荷超平面的距离计算方法&#xff0c;相关文章为点与超平面的距离。 在这片文章中&#xff0c;我们了解到计算距离的公式&#xff1a; Fmin⁡i1...myi(w⋅xib)F\min_{i1...m}y_{i}(w\cdot x_{i}b)Fi1...mmin​yi​(w⋅xi​b) 计算…

[每日随题11] 贪心 - 数学 - 区间DP

整体概述 难度&#xff1a;1000 →\rightarrow→ 1400 →\rightarrow→ 1600 P3918 [国家集训队] 特技飞行 标签&#xff1a;贪心 前置知识&#xff1a;无 难度&#xff1a;橙 1000 题目描述&#xff1a; 输入格式&#xff1a; 输出格式&#xff1a; 样例输入&#xff1a;…

Elasticsearch 9.x 搜索执行流程(源码解读)

1. 搜索执行流程概述 Elasticsearch的搜索执行是一个分布式过程,涉及协调节点和数据节点之间的多阶段交互 #mermaid-svg-QGh2GjrUKcs5jzQp {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QGh2GjrUKcs5jzQp .error…

暑期训练8

E. G-C-D, Unlucky!题目要求判断是否存在一个长度为 n 的数组 a&#xff0c;使得p[i] 是 a[0..i] 的前缀 GCDs[i] 是 a[i..n-1] 的后缀 GCD思路前缀 GCD 非递增后缀 GCD 非递减首尾 GCD 一致桥梁条件成立对于每个位置 i&#xff0c;gcd(p[i], s[i1]) 必须等于整个数组的 GCD&am…