Appearance
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 起不来 → 只讲架构与配置,不现场启动 |