为何Milvus集合覆盖实体时num_entities数值持续增长?
Milvus中num_entities的统计逻辑说明
你遇到的这个情况是Milvus的设计特性导致的:
num_entities统计的是所有写入操作的累计行数,包括被upsert覆盖、或被标记删除的历史条目,并非当前集合中实际存活的实体数量。- 重复执行
insert时,即使主键重复,Milvus会直接新增条目(除非创建集合时明确设置主键唯一性约束),num_entities会持续累加;换成upsert时,旧实体会被新版本覆盖,但旧条目不会被物理删除,只是被标记为失效,num_entities依然会统计这次upsert的写入行数,导致数值增长。 - 如果要获取当前实际存在的实体数量,不要依赖
num_entities,可以执行不带过滤条件的query或search统计返回结果数量;也可以用SDK中的相关方法,比如Python SDK里的collection.query(expr="", limit=0).count()来得到准确的存活实体数。
内容的提问来源于stack exchange,提问作者user1245262
相关产品推荐
相关产品推荐

