Ragent为什么从Milvus换成Pgvector
为什么从 Milvus 换成了 Pgvector
不少同学跟着 RAG 系列一路学下来,前面讲向量数据库的时候,花了挺大篇幅讲 Milvus——从 Docker Compose 启动、HNSW 索引参数到标量过滤,demo 代码一行一行跑完。结果翻开 Ragent 的源码,却发现项目里主力用的是 PostgreSQL 的 pgvector 扩展。
有同学在群里问我:“教程里用的 Milvus,怎么后面反而不用了?”
这个问题我必须得单独拎出来聊一聊,不然容易被误解 Milvus 不如 pgvector。
先把话说清楚:Milvus 没有被否定
在回答为什么换之前,先把一件事摆正:Ragent 从 Milvus 换到 pgvector,不是因为 Milvus 不好。
RAG 系列里写过的那些 Milvus 优势,放在现在依然成立:
- 专为向量检索而生,从存储布局到查询引擎都是围绕向量设计的
- HNSW、IVF_FLAT、IVF_SQ8、DISKANN……索引类型几乎一网打尽,不同数据规模都能找到合适的算法
- Java SDK 成熟,v2 API 设计清晰
- 数据规模覆盖广,Standalone 单机模式可以撑百万级,集群模式能扛到十亿级
- 支持标量字段过滤、Partition 分区、BM25 原生全文检索、混合检索 RRF 融合
所以在 RAG 教学里我依然推荐大家先用 Milvus 跑通一遍——它是一个功能最全的专业向量库,原理讲清楚了之后,换任何一个向量库都是变成另一个 API 的事。
但“最全”不等于“最合适”。Ragent 是一个真实要部署、要运维、要让读者能跑起来、要长期迭代的项目,选型的优先级和教学 demo 完全不一样。
一句话概括:教学上我推荐 Milvus,是因为它能把向量检索的原理和能力完整地展示出来;工程上 Ragent 选 pgvector,是因为在它要解决的问题上,pgvector 的综合成本更低。
Milvus 在真实项目里的代价
Milvus 的能力是实打实的,但这些能力不是免费的。把它丢进一个真实项目里,有几个代价你绕不过去。