先这样答
我不会先回答选 Milvus 还是 Elasticsearch。我会先看数据规模、QPS、检索方式、团队运维能力和一致性要求。当前是百万级数据时,pgvector 已经够用。它能减少额外的运维成本,所以我会优先选择 pgvector。
如果业务需要混合检索,我会把向量检索和 BM25 组合起来。ES 强在关键词检索,Milvus 强在大规模向量检索。两者都不是所有场景的默认答案。我要先确认业务更看重哪类检索,以及当前规模是否真的需要单独的向量数据库。
我的演进方案是先用 pgvector 加 BM25 满足当前需求。这个方案能覆盖当前规模,也方便团队维护。数据量和访问压力继续上升后,再评估迁移到 Milvus。面试时我会说明迁移触发条件,并补充一致性要求和团队能力。这样回答重点在判断过程,不在背产品名。
面试官会怎么追问
-
「什么情况下你会直接选择 Milvus?」
当数据规模和 QPS 上升,当前方案无法继续满足需求时,我会评估 Milvus。它更适合大规模向量检索。最终仍要结合团队的运维能力和一致性要求判断。 -
「为什么不直接用 Elasticsearch 做向量检索?」
我会先看检索类型。ES 强在关键词检索,如果业务需要混合检索,它可以参与 BM25 部分。若核心需求是大规模向量检索,我会重点评估 Milvus。 -
「你说的迁移条件具体该怎么判断?」
我会观察数据规模和 QPS 是否已经超出当前方案的承受范围。还要确认团队是否具备维护新组件的能力。迁移前也要检查一致性要求是否允许这次调整。
回答的坑
- 不要把 Milvus、ES 或 pgvector 说成固定答案,要先说明数据规模、QPS 和检索方式。
- 不要只谈性能和产品名,还要交代运维能力、一致性要求以及从当前方案演进的判断。
同系列的题
这家公司的面经实录
—— 本题完 ——