
1. 为什么 2026 年向量数据库成了硬通货最近几个月我陆续被身边不少朋友问到同一个问题“AI 时代都讲究大模型为什么你们做 RAG、做 Agent 的人天天在折腾向量数据库”或者说得更直接一点“ai 智能体的企业知识库是存放在向量数据库中的吗”答案是不完全是但大概率是。企业做知识库原始文档通常会放在对象存储或者企业内部网盘里文档处理管线会把它们切成一段一段的 chunk再交给 embedding 模型转成向量最终这些“向量 原文 chunk 元数据”的组合才真正落进向量数据库。也就是说向量数据库更像是知识库的“检索层中枢”负责在你问出问题时在毫秒级时间里从几十万甚至几亿条文本片段中找出最相关的那一批。为什么 2026 年这件事格外重要因为 Agent 开始大面积落地了。2025 年大家还在聊“能不能做一个 ChatBot”到了 2026 年更多人已经在做带工具调用、带多轮记忆、带私有知识约束的 Agent。Agent 的短期记忆可以做在会话里长期记忆呢企业专属知识呢几乎都会落到向量检索上。所以向量数据库从“大模型周边组件”变成了“AI 应用基础设施”这不是概念炒作而是实实在在的工程需求。这篇文章我就基于自己的使用经验把 2026 年最值得学习的 10 个向量数据库系统性地盘一遍。不会只列官网宣传语而是会讲清楚每一个适合什么场景、有什么坑、怎么选型。想入行 AI 工程的同学或者已经在做 RAG/Agent 的开发者都能直接对照自己的项目找答案。2. 选型前先补课看懂 5 个决定性维度2.1 索引算法不搞懂 HNSW 就是瞎选所有向量数据库的核心差异一半藏在索引算法里。你要理解一个朴素事实向量检索不是“精确查找”而是“近似查找”英文叫 ANNApproximate Nearest Neighbor意思是找一个“足够接近”的集合而不是全表扫描出数学上的最优点。目前工业界最主流的算法是 HNSWHierarchical Navigable Small World通俗点说它通过多层图结构来加速搜索上层图连接稀疏用于快速跳到目标区域底层图连接密集用于精细找邻居。绝大多数向量数据库默认索引都是 HNSW 或它的变体比如 Milvus 里的 Knowhere 索引库、Qdrant 的 HNSW、Chroma 的 HNSW 实现底层思路殊途同归。除了 HNSW你还会看到 IVF倒排文件、DiskANN、PQ 量化等概念。IVF 的思想类似图书馆先按大类分架再在架子上细找训练速度快但召回率调参比较麻烦DiskANN 适合内存放不下的超大场景主打一个“用磁盘换容量”延迟会比纯内存高一个数量级但成本低很多。学习建议先死磕 HNSW 的 M 和 efConstruction 两个参数。M 相当于每个节点最多连几个邻居M 越大图越精细、内存越高efConstruction 是构建时的搜索宽度越大索引质量越好但构建越慢。这两个参数直接决定“内存、召回率、速度”三角怎么平衡。2.2 部署形态云托管、开源自建、嵌入式怎么取舍向量数据库的部署方式可以粗略分成三派云托管 SaaS、自建开源服务、嵌入式/插件。云托管 Saa S 的代表是 Pinecone、Zilliz Cloud 这类服务最大的优点是省心网络、备份、扩容全是平台的事缺点是你只能使用平台提供的 API 和配置项对底层控制力弱长期成本也不便宜。自建开源服务的代表是 Milvus、Qdrant、Weaviate 这类你需要自己部署容器、管理分布式组件、监控资源水位。优点是完全可控、数据不出内网适合企业对数据主权有要求、或者数据量大到云服务费用吓人的场景。嵌入式/插件的代表是 Chroma、LanceDB、pgvector 这类它们直接嵌在你的应用进程里或者以数据库扩展的形式存在不用额外起一个服务。最典型的场景是开发环境、小规模生产、以及“我不想再维护一套中间件”的项目。我的个人判断是如果你的团队连 Docker 都用不熟先别折腾自建如果只是做 MVP 验证就用嵌入式如果已经有明确量级和数据隐私要求再上开源服务或云托管。选型顺序一定是“场景 - 部署能力 - 功能”不要反着来。2.3 过滤、元数据与混合检索能力很多新手只盯着“向量检索有多快”却忽略了一个事实真实业务里的检索永远是“条件过滤 向量召回”一起做。举例一个电商知识库用户问“今年新上架的红色夹克有哪些”你的系统得先限定分类夹克、上架时间今年、颜色红色再做向量匹配。如果向量数据库不支持高效的标量过滤你就只能先把整库向量拉出来再一个个判断一旦数据量上来延迟直接爆炸。所以选型时要关注几个能力点filter 语法是否灵活支持 and/or/范围/嵌套、过滤与向量检索是否走同一个索引post-filter 还是 pre-filter、有没有混合检索能力向量 BM25/全文检索的融合。这里 Qdrant、Elasticsearch、Weaviate 都做得比较成熟Chroma 的过滤能力弱一些Pinecone 的过滤也有限制数据量大时建议提前压测。2.4 集成生态LangChain / LlamaIndex / Spring AI 都要认2026 年做 AI 应用几乎没有人会裸写一个检索链路大家都在用框架。LangChain、LlamaIndex、或者 Java 技术栈里的 Spring AI都对各种向量数据库封装了统一的 VectorStore 接口。这种封装带来一个好处你的业务代码可以做到“换库不换业务逻辑”。举个例子你在 Spring AI 里配置一个 ChromaVectorStore后面数据量上来了要切到 Milvus只需要改依赖和配置类DAO 层的代码基本不用动。但也别因此忽略数据库本身的差异因为框架封装的是 80% 的通用功能剩下 20% 的过滤、索引、分区配置往往是性能瓶颈所在。另一个容易被忽视的生态项是 Embedding 模型的配合。很多向量数据库都有内置的 embedding 函数比如 Qdrant 的 FastEmbed、Weaviate 的 modules可以直接把文本变成向量。这种“库内嵌模型”的模式在原型阶段非常爽但生产环境我更建议把 embedding 单独做成服务因为模型的升级、回滚、缓存都要独立管理。2.5 成本、规模与可观测性最后但也很重要的一环是成本和规模。成本分两层内存成本和运维成本。HNSW 索引对内存的消耗不小一个 768 维的 float 向量单条大概 3 KB1000 万条就有 30 GB 左右这只是向量本身还没算上索引的额外开销。所以做容量评估时别只看样本集跑得多快要按 1000 万、1 亿条量级去算内存。运维成本看的是排查问题是否方便。有没有提供查询耗时、命中率、内存使用率的监控面板能不能直接把大查询的日志拉出来分布式模式下有没有清晰的分区机制这些在 demo 里感受不出来生产环境一出问题没有可观测性的数据库能让你排查到崩溃。我在生产环境选型时有一个“土办法”把团队的真实数据集灌进去分别测三个阶段——全量导入、并发查询、故障恢复。尤其是故障恢复很多数据库在查询时表现很好一断电、一重启要么重建索引要半小时要么主从数据不一致。这个测试千万不能省。3. 第一梯队大规模专用型选手3.1 Milvus开源社区里最能打的那个Milvus 几乎是“开源向量数据库”这个品类的代名词。它脱胎于知源后来捐给了 Linux Foundation2024 年发布的 2.4/2.5 版本在性能和易用性上有了很大提升到了 2026 年Milvus 已经成为大部分中大型企业自建向量检索基建的第一选项。Milvus 的特征是“重但是完整”。它的架构把数据分为四个部分接入层Proxy、协调服务Coordinator、工作节点Worker Node、存储层对象存储/元数据存储。查询请求先到 ProxyProxy 再调度到对应的 query node最后从对象存储里拿数据。这看起来复杂但换来的是极强的扩容能力数据量大了就加 query node内存不够就横向扩展。另外一个很多人没注意的点是 Milvus 使用 Knowhere 作为内部索引库Knowhere 把 Faiss、HNSWLib、DiskANN 等索引算法包装了一层你不需要关心底层具体实现只需要在创建 collection 时指定 index type 和 metric type。正常情况下用默认参数就能跑得不错但如果你想调到最优还是得手动设置nlist、nprobe这些 IVF 系参数或者 M、efConstruction 这些 HNSW 参数。Milvus 的缺点也很明显运维成本高。如果你用 Docker Compose 起一个 standalone其实还好一旦上了分布式模式etcd、MinIO、Pulsar或 Kafka这些依赖组件都得自己维护。所以我的建议是有专门的平台/运维团队或者数据量已经大到单机扛不住再上 Milvus。如果只是几十万条数据用它反而是杀鸡用牛刀。过去两年里我见过很多团队把 Milvus 用得极其痛苦不是 Milvus 不行而是他们的数据量根本到不了需要分布式的级别。Milvus 的收益曲线是这样数据量小于 100 万条时它的复杂度会让你非常难受到了几千万甚至上亿条时它才是真正的王者。3.2 QdrantRust 派的全能战士Qdrant 是我个人近两年最偏爱的向量数据库没有之一。它用 Rust 写的单机性能非常强安装又是一个 Docker 镜像搞定很适合作为“从原型到生产”的平滑过渡方案。Qdrant 设计上最大的优势是 Payload 体系。它允许你在每一条向量上挂 JSON 形式的元数据并且支持复杂的过滤查询比如field 2024 AND color IN [red, blue]。最让我满意的是它的过滤执行策略Qdrant 能根据过滤条件可选择性决定先过滤还是后过滤这在真实业务里非常关键。另外一个亮点是 Qdrant 提供的混合检索能力。它在 1.10 版本左右加入了稀疏向量支持可以把 BM25 式的关键词权重表示成一个稀疏向量和稠密向量一起检索最后用 RRFReciprocal Rank Fusion融合结果。这一个功能就让很多团队不需要再单独维护一套 Elasticsearch 来做关键词兜底。Qdrant 也有自己的小坑。比如向量维度和距离函数Cosine、Dot、L2在创建 collection 时就固定了后面不能改另一个是它的索引参数更新虽然 API 层面支持但生产环境随意改索引参数会触发全量重建这个耗时在没有预演的情况下会让你抓狂。在 2026 年如果你所在团队没有那么大的数据量、又不想被云厂商绑定我非常推荐把 Qdrant 作为默认选项。它没有 Milvus 那么重功能却覆盖了绝大多数 AI 应用的需求是典型的“平衡型选手”。下面把这两个第一梯队选手做个快速对比维度MilvusQdrant开发语言Go/JavaRust部署复杂度高分布式依赖多低单容器即可最大擅长场景亿级分布式大规模千万级内单机高性能过滤/元数据能力支持语法灵活很强payload 支持极好混合检索支持多路召回原生稀疏向量支持运维压力较高较低适合团队有平台/运维能力的中大型团队中小团队、追求快速落地总之还是那句话没有最好的数据库只有最适合你场景的数据库。数据量大到 Milvus 的复杂度值得承担就选 Milvus数据量在百万到千万级、又想快手上线Qdrant 几乎不会让你失望。4. 第二梯队RAG 开发者的日常选择4.1 Chroma轻量入门的首选别忽略它的表结构每次有人问我“第一次做 RAG向量数据库选什么”我的答案几乎都是 Chroma。它不是性能最强的但它是学习曲线最平滑的。Chroma 的定位是嵌入式向量数据库API 设计非常贴合 Python 开发者的直觉。装一个chromadb包加几行代码就能把文档切块、embedding、检索整条链路跑通。它还内置了默认的 embedding 模型你甚至可以连 OpenAI 的 API 都不配直接本地跑起来。但很多开发者在用完 Chroma 之后会遇到一个疑问添加一个集合后数据目录里产生了 sqlite 数据库和一堆表这些表到底是干嘛的我拿 v0.5.x 的默认配置举过例子最常见的表包括这些表名大致作用collections集合主表记录集合 id、名称、配置等信息collection_metadata集合的元数据存 embedding 模型、向量维度等附加信息embeddings核心向量表存每个文本片段的 id、向量内容所属的 segmentembedding_metadata向量对应的元数据比如原文 chunk、来源文档、时间戳segments索引分段表相当于把一个集合分成多个数据分片管理max_sequence_id内部自增序列用于保证 ID 生成不冲突embedding_fulltext_search全文检索的 FTS 表Chroma 用 SQLite 自带的 FTS5 做了关键词检索这些表的关联关系可以这样理解collections.id指向多个segments也就是一个集合在物理上分成若干段每个segment里有若干embeddings每一条embedding在embedding_metadata里存配套元数据当你做全文检索时embedding_fulltext_search会帮你快速命中候选 id然后再回到embeddings里取向量。了解这个结构后你排查“为什么我删了集合但磁盘空间没变小”“为什么查询特别慢”这类问题会更有方向。Chroma 的局限也是明显的单机、数据量大了会吃力过滤查询能力比较弱也没有内置的高可用方案。所以我的建议是拿它做原型、做学习 demo、做个人知识库完全没问题但企业级生产环境尤其是并发和多租户场景建议尽早切换到 Qdrant 或 Milvus。4.2 WeaviateGraphQL 与原生模块化Weaviate 的名字可能没有 Milvus 那么响但它的设计理念很特别。它更像是一个“AI 原生的数据库服务”内置了向量化模块、生成式搜索模块甚至可以直接在库里调用大模型做 RAG。Weaviate 使用 GraphQL 作为查询语言这是它的特色也是学习门槛。刚上手时你会觉得多此一举但用久了会发现 GraphQL 的表达力很强可以在一次请求里完成过滤、向量召回、NearText 语义查询、以及返回结果的字段裁剪。它的另一个卖点是模块化。你想用 OpenAI 的 embedding配置一个模块想用 Hugging Face 的模型再配置一个模块。而且 Weaviate 还支持多租户自带对象存储和 HNSW 索引部署形态允许单机模式也支持 Kubernetes 集群模式。再加上它和 LangChain、LlamaIndex 的集成比较成熟很多做知识库产品的中型团队会选择它。Weaviate 的缺点在于如果你习惯了 SQL 或普通 NoSQL 的表达范式GraphQL 的调试过程会比较别扭另外它的写路径比读路径重高频写入场景比如日志型数据不是它的强项。换句话说Weaviate 更适合“数据量稳定、查询语义丰富、需要把 AI 能力和检索深度耦合”的产品。4.3 pgvectorPostgreSQL 用户的“最小成本”升级不懂工程的人可能会觉得向量数据库多高深但对 PostgreSQL 用户来说它就是一个扩展插件而已。pgvector这个扩展直接让 PostgreSQL 支持了 vector 类型和 ANN 索引。如果你的团队已经在用 PostgreSQL业务数据天然就在库里这时候遇到向量检索需求最省事的方式不是再引入一个新数据库而是装一个 pgvector。你可以让业务字段和向量字段存在同一张表里用 SQL 语法完成检索和过滤事务、权限、备份体系全部复用原有能力。这种“最小成本升级”对很多传统企业项目来说是政治上和技术上都最稳妥的方案。pgvector 目前支持 HNSW 索引和 IVFFlat 索引。IVFFlat 适合数据量不大、构建速度优先的场景HNSW 延迟更稳定、召回率更好但建索引时占用内存更高。查询语句看起来是这样的SELECT id, content, embedding $1 AS distance FROM documents WHERE category note ORDER BY embedding $1 LIMIT 10;这里表示余弦距离也可以用-表示 L2 距离。注意 pgvector 默认不支持“过滤后再向量检索”的原生优化它是先算出距离再过滤或者先粗筛再算数据量到几百万后性能可能明显下降。所以 pgvector 的定位很清晰适合几百万量级以内、不想引入额外组件、团队本来就熟悉 PostgreSQL 的项目。一旦你的向量数达到千万级或者查询并发很高就不要再硬撑了。4.4 Elasticsearch老检索玩家的新路线很多企业早就有 Elasticsearch当年是拿来做日志检索、商品搜索的。随着 AI 项目启动大家发现 Elasticsearch 在 8.x 之后已经原生支持稠密向量检索如果你原本就在用 ES完全可以直接在这个老伙计身上开启向量检索功能。ES 的向量检索核心有两个dense_vector字段类型和 HNSW 索引。你可以建一个 mapping 时声明type: dense_vector指定维度然后利用knn查询选项完成召回。最舒服的是你可以在同一个查询 DSL 里做“关键词 向量”的混合检索再用rank_feature或者 RRF 把两种结果合并。这意味着你不需要在 ES 和向量数据库之间同步两份数据。代价是什么性能。ES 的向量检索和 Milvus/Qdrant 这种专业选手比同样量级下延迟通常更高内存占用也更夸张。另外ES 的元数据过滤和 BM25 都很强但它的强项不是高并发低延迟的向量召回而是“把向量能力塞进原有搜索架构”的便利性。对于已经重度依赖 ES 的团队我特别不建议动不动就“上一套新数据库”。先用 ES 自带的向量能力跑一版等真到了瓶颈再迁移也不迟。这比一开始就建一个分布式 Milvus 集群要务实得多。5. 第三梯队托管服务、文档库与缓存派5.1 Pinecone不想运维就直接选它Pinecone 是云托管向量数据库里知名度最高的一家。它最大的价值不是性能参数多好看而是帮你把“维护分布式系统”这件事完全抹掉了。你注册账号、建 index、拿 API key然后把向量传上去剩下的扩缩容、故障恢复、索引优化全都不用管。对于初创公司或大厂里的创新业务团队Pinecone 的按量付费模式很有吸引力几十万条向量时成本很低业务量起来后再升级到更大的 pod。它的 API 设计也很简洁Python 版的客户端非常易用和 LangChain/Spring AI 的集成都不用动脑子。不过 Pinecone 有两个“暗面”。第一它是完全托管数据离开自己的 VPC很多对数据安全敏感的企业过不了合规这一关第二它的高级功能比如自定义索引参数调优、对底层物理资源的掌控几乎没有遇到性能问题只能提工单。2026 年的趋势很明显企业一旦数据量稳定会从 Pinecone 迁回开源自建。我身边已经有好几个朋友从 Pinecone 迁到了 Qdrant 和 Milvus。5.2 MongoDB Atlas Vector Search顺手而为的文档向量化MongoDB 在 2022 年就推出了 Atlas Vector Search到了 2024/2025 之后这个能力已经被整合为 Atlas 平台的默认组件之一。如果你的业务数据本来就在 MongoDB向量的引入会让你产生一种“知识库和业务数据终于合体了”的爽感。Atlas Vector Search 支持在同一个文档里既存业务字段又存向量字段并且提供$vectorSearch聚合管道操作符。你可以先用业务字段做 pre-filter再进行 HNSW 检索返回结果时还能顺便做聚合统计这是很多独立向量数据库做不到的。但 Atlas 本身是一个付费云服务自建 MongoDB 并不包含 Vector Search自建版虽然有一些实验特性但不建议生产使用。所以这个选项基本是“人在 MongoDB Atlas顺便做向量检索”的场景不太适合为了向量检索特意迁到 MongoDB 的用户。5.3 Redis Stack查询很快但别太当真Redis 在 2022 年发布了 Redis Stack内置了RediSearch模块支持向量检索。它的优势是极快的响应速度和极简的运维模型很多已经用 Redis 做缓存的团队顺手就把向量也存进去了。我用 Redis Stack 做过一次 POC最直观的感受是导入快、查询快、代码少。如果数据量在百万条以内它的延迟和 Qdrant 不相上下。但真正到了生产级规模Redis 的短板就暴露了内存成本非常高昂它本来就是纯内存数据库持久化和恢复机制比专业向量库弱向量检索的过滤能力也比较基础。所以我的定位是Redis Stack 适合在线推荐、会话记忆、实时去重这类“低延迟、可容忍偶发丢失、数据量可控”的场景不适合当作企业知识库的核心存储。5.4 LanceDB嵌入式向量库的轻量担当LanceDB 是这两年崛起的一个嵌入式向量数据库底层基于 Lance 列式格式。它的理念是“向量检索不是一个数据库问题而是一个数据文件问题”把数据集当作文件来管理不需要服务器进程。好处很明显轻、快、易嵌入。你在 Python 脚本里pip install lancedb然后指定一个本地目录一个数据库就“活”了。它还支持多模态数据因为 Lance 格式本身就是为大规模非结构化数据设计的图像、视频、文本都能以统一格式存储。LanceDB 目前的局限是生态不如 Milvus/Qdrant 成熟分布式和高可用方案需要自己搞过滤查询的表达式能力也偏简单。它特别适合本地数据分析、边缘计算场景以及单机数据科学工作流。如果你的项目是给客户做私有化部署LanceDB 这种“不需要额外起服务”的优势会非常明显。6. 新人学习路线与调优避坑6.1 我的建议学习顺序很多刚入门的朋友问我这 10 个数据库是不是都要学一遍当然不是。我建议按这条路线走先选一个最轻的我推荐 Chroma用一周时间把“文档切块 - embedding - 入库 - 检索 - 过滤”全流程跑通重点理解集合、文档、向量、元数据这些概念。然后切换到 pgvector 或者 Qdrant把同一个流程再实现一遍对比它们在索引、过滤、参数配置上的差异。这时候你对“向量数据库”的认知就已经超过大多数只会调 LangChain API 的人了。接着补 HNSW 和 IVF 的原理不用写源码但要能说出 M、efConstruction、nlist、nprobe 这几个参数分别影响什么。然后选一个数据集比如 100 万条文本向量分别灌进 Milvus 和 Qdrant用真实数据测 recall 和延迟。到这里你已经具备在生产环境选型和调优的基本能力。至于 Spring AI、LangChain 这些框架放在最后学。因为框架是在帮你封装细节如果你连底层数据模型都没建立起来遇到 bug 时根本不知道是框架的问题还是数据库的问题。6.2 HNSW 参数怎么调HNSW 的参数调优是向量数据库工程里最常被问到的内容。我直接给一套可复用的经验值M默认通常是 16推荐范围 8-64。M 越大索引图越稠密召回率越高但构建时间和内存都会上升。对于千万级数据我一般从 16 起步先测试 32再对比召回率提升是否值得额外内存。efConstruction默认一般是 200 左右。它影响建索引时的搜索宽度越大索引质量越好但构建越慢。我的习惯是固定 M 后efConstruction 从 100 开始翻倍观察召回率增长曲线通常到 200-300 之后收益会明显递减。查询时的efSearch很多库叫ef这个不是建索引时的参数而是每次查询时传的搜索宽度。efSearch 越大查询越慢、召回越好。生产环境我会先给一个设置界面让 QA 在延迟和召回率之间找到一个可接受的平衡点。一个常见误区是为了追求高召回率无脑把 efSearch 调到很大。实际上如果你的召回率低是因为 chunk 切得不好、embedding 模型不适合领域那么再怎么调 efSearch 都是白费。我见过太多团队花一周疯狂调参数最后发现问题是文档切块时把一句话切成两半了。先排查数据质量再调参顺序不要搞反。6.3 几个容易踩的坑第一个坑是距离函数选错。很多教程默认用余弦距离但有些 embedding 模型在训练时使用的是点积或欧氏距离混用时召回会非常差。选距离函数前先翻一下你 embedding 模型的说明文档。如果实在不确定把同一批向量分别用余弦和点积跑一遍看结果差距大不大。第二个坑是“只存向量不存原文”。有同学为了省空间只在库里放向量和 id原文存在别的系统里。结果每次检索都要回源查一次原文延迟直接翻倍。我建议检索链路里就把原文 chunk 放进元数据字段这样一次查询就能返回全部内容代价只是多占一点存储空间。第三个坑是高维向量性能暴跌。很多新项目一上来就用 3072 维的 embedding 模型比如 OpenAI 新模型数据量一大内存和延迟都下不来。针对这种情况要么降维比如用 PCA 从 3072 降到 1024要么直接用支持量化压缩的数据库。1056 维和 3072 维的差别在千万级数据量上就是“能跑”和“跑不动”的区别。第四个坑是忽略了 embedding 升级带来的“脏数据”。只要换了 embedding 模型旧向量和新向量算出来的距离就没有可比性了。但很多团队直接在原集合里灌新向量结果新旧数据混合检索质量严重下降。正确做法是给向量数据打上 model_version 标签并在检索时强制过滤为当前版本或者干脆在升级时全量重建索引。最后分享一个实际体会这几年帮团队做过不少次向量数据库选型我最深的体会是不要迷信排行榜也不要迷信“用了某种数据库就显得高级”。真正决定 RAG 和 Agent 上限的永远是你的数据处理流程、chunk 策略、embedding 模型质量和检索后的重排逻辑。向量数据库只是“承重墙”但它不需要比别的墙更漂亮只需要足够稳、足够适合你家的结构。如果让我给 2026 年想入场的人一句建议先用 Chroma 跑通全流程再用 Qdrant 做一版接近生产的系统最后按数据增长情况决定要不要上 Milvus。这条路径我已经带好几批人走过了踩坑最少成长最快。