Milvus 常见问题
常见问题
Milvus Lite 能直接当生产库用吗?不适合。它是单进程嵌入式形态,为本地开发与测试设计,没有高可用、没有独立扩缩容,也没有完整的分布式能力。原型阶段可以用它快速验证方案,上生产要迁到 Standalone 或 Distributed。
collection 建好了才发现维度写错怎么办?向量维度不可修改。可行路径是新建一个维度正确的 collection,把数据用外部流程重新 embedding 后导入,再把流量切过去。所以上线前一定要把 embedding 模型与维度固化进配置并做校验。
为什么数据插进去了却搜不到?按可能性从高到低排查:索引还没构建完成、一致性级别是 Eventually 导致读到旧视图、filter 表达式把数据过滤掉了、以及 metric type 与建索引时不一致导致结果排序错乱。逐项确认一遍基本能定位。
检索结果不稳定、时好时坏?ANN 检索本身是近似的,同一个查询在不同时刻可能返回顺序略有差异,这是正常现象。如果差异大到影响业务,通常是 ef 或 nprobe 太小,把查询期参数调大可以显著缓解。另外要确认数据是否在持续写入导致 segment 不断变化。
该用 HNSW 还是 IVF 系列?简单判断:内存够、要求低延迟高召回,选 HNSW;内存紧张、数据量大、可以接受略高的延迟,选 IVF 系列并通过 nprobe 调优;数据量超出内存容量,考虑 DiskANN。最稳妥的办法是在自己的数据集上各建一份,用同一组查询对比召回与延迟曲线。
Attu 和内置 WebUI 有什么区别?两者都能看 collection、索引与数据,Attu 是独立部署的图形客户端,功能更偏向日常运维操作;内置 WebUI 随 Milvus 一起提供在 9091 端口,优点是零额外部署。具体功能随版本演进较快,以使用版本的文档为准。

