Skip to content

L02-06 向量库选型:PGVector 够用就别上 Milvus ​

全局中心内容:百万级以内,PGVector 的正确性收益远大于专用向量库的性能收益。 全局讲解主线:规模分档 → 四个候选对比 → 索引参数 → 混合检索支持 → 上线清单。


P1 · 产出页 ​

中心内容:一套可切换的向量库配置 + 索引参数调优记录。

  • 讲解技巧
    • 开场给一个反直觉结论:90% 的项目不需要专用向量数据库。这句话要写在黑板第一行。
  • 时长:20s

P2 · 规模分档 ​

中心内容:先问有多少片段,再谈选型。

  • 页面内容:<10 万 / 10~100 万 / 100 万~1000 万 / >1000 万 四档推荐

  • 讲解技巧

    • 强调绝大多数企业知识库在 10 万片段以内(一本 300 页的书约 1500 片段,10 万片段≈ 70 本书)。
    • 让学员先算自己有多少片段,再往下听。
  • 时长:4min


P3 · 四个候选对比 ​

中心内容:PGVector / Elasticsearch / Milvus / 云向量库。

  • 页面内容:部署成本 / 运维 / 混合检索 / 过滤能力 / 适用规模 五维对比表

  • 讲解技巧

    • PGVector 的最大优势不是性能,是「你已经会运维它了」:备份、监控、主从都现成。
    • Elasticsearch 的真实卖点是自带 BM25,混合检索不用自己拼。
    • Milvus 讲清楚代价:组件多(etcd/minio/querynode),运维成本高,不到千万级别上。
  • 时长:6min


P4 · HNSW 索引参数 ​

中心内容:m 和 ef_construction 决定索引质量,ef_search 决定召回率与延迟的平衡。

  • 页面内容:m=16 / ef_construction=64 / ef_search=40 的推荐值与影响

  • 讲解技巧

    • 把三个参数的影响讲成一句话:m 是图的稠密度(越大越准越占内存),ef_construction 是建图时看多远(越大建得越慢越准),ef_search 是查时看多远(越大越准越慢)。
    • 强调ef_search 是唯一可以运行时调的,前两个改了要重建索引。
  • 时长:6min


P5 · 索引不生效排查 ​

中心内容:数据量小的时候,数据库会选择全表扫描,索引看起来「没建」。

  • 页面内容:EXPLAIN 命令与结果判读

  • 讲解技巧

    • 这是非常高频的现场问题:「我建了索引怎么还是慢」。直接教 EXPLAIN ANALYZE,看有没有 Index Scan。
    • 补一句:少于几千行时全表扫描反而更快,这是正常现象,别慌。
  • 时长:4min


P6 · 过滤与混合检索能力 ​

中心内容:向量库必须支持「先过滤再检索」,否则多租户做不了。

  • 页面内容:filterExpression 写法;PGVector 的 JSONB 元数据过滤

  • 讲解技巧

    • 讲清过滤下推和「先召回再过滤」的区别:后者在租户数据量大时会把别的租户的内容召回来,既是安全问题也是准确率问题。
    • 现场演示:不加过滤条件,检索结果里出现了隔壁租户的文档。
  • 时长:6min


P7 · 编码:可切换配置 ​

中心内容:Spring AI 的 VectorStore 抽象让换库只改依赖和配置。

  • 页面内容:PGVector / Milvus 两套配置;@ConditionalOnProperty 切换

  • 讲解技巧

    • 现场演示换库:改一行配置重启,检索结果不变。这个演示非常有说服力。
    • 提醒:换库后维度、距离函数要重新确认,比如有的库默认余弦、有的默认内积。
  • 时长:7min


P8 · 上线检查清单 ​

中心内容:备份策略、容量规划、监控指标三件事。

  • 页面内容:向量表备份 / 索引大小监控 / 慢查询阈值

  • 讲解技巧

    • 特别提醒:PGVector 的表也要走数据库备份,很多团队只备份业务表,丢了向量表要全量重灌。
  • 时长:4min


P9 · 避坑与小结 ​

中心内容:别为了「将来可能上量」提前上 Milvus。

  • 讲解技巧
    • 用一个反问收尾:「你现在 8 万片段,三年后到 50 万,PGVector 完全扛得住——那你提前付出的运维成本换来了什么?」
    • 引出下一节:能过滤什么取决于你存了什么——02-07 元数据设计。
  • 时长:2min

讲师备忘 ​

项内容
课前必做准备好 PGVector 与 Milvus 两套可运行配置;准备 EXPLAIN 输出样例
最容易超时处P3 对比表,学员容易逐个追问——用「先记结论,课后答疑」控场
学员最常问「QPS 能到多少?」答:百万内 PGVector 单实例几百 QPS 没问题,瓶颈在 Embedding 调用
现场备用Milvus 起不来 → 只讲架构与配置,不现场启动