找回密码
 立即注册
首页 业界区 安全 AI开发-python-milvus向量数据库(2-10 -milvus-数据删 ...

AI开发-python-milvus向量数据库(2-10 -milvus-数据删除)

丘娅楠 5 天前
Milvus 向量数据库实战:高效删除数据的两种核心方式

 Milvus 作为主流的开源向量数据库,在处理海量向量数据时,数据的增删改查是核心操作。本文聚焦 Milvus 中数据删除的两种常用方式(按主键删除、按条件批量删除),结合可直接运行的代码示例,带你掌握 Milvus 数据删除的实操技巧。 方式 1:按主键(ID)精准删除

 适用于已知要删除数据的主键 ID 场景,可一次性删除单个或多个主键对应的数据,精准度高: 方式 2:按条件批量删除

 适用于需要删除「符合特定业务条件」的批量数据场景,通过 filter 参数指定过滤规则,灵活度高: 关键注意事项

 

  • 软删除特性:Milvus 的删除操作默认是「软删除」,数据不会立即从磁盘删除,而是标记为删除状态;如需彻底清理,可执行 client.compact(collection_name) 压缩数据。
  • 一致性保障:删除操作是异步生效的,建议添加 time.sleep() 确保查询到最新数据。
  • 过滤条件语法:filter 参数支持丰富的表达式(如 in/>/ 10 and color like 'red_%')。
 
代码如下:
  1. # 过滤 pymilvus 依赖的 pkg_resources 废弃警告(setuptools≥81 版本触发)
  2. # 目的是消除版本兼容带来的无关警告,让控制台输出更整洁
  3. import warnings
  4. warnings.filterwarnings("ignore", message=".*pkg_resources is deprecated as an API.*")
  5. from pymilvus import MilvusClient
  6. import time
  7. client = MilvusClient(
  8.     uri="http://192.168.211.128:19530",
  9.     token="root:Milvus"
  10. )
  11. #集合名称
  12. collection_name = "insert_collection"
  13. # 验证加载状态
  14. load_state = client.get_load_state(collection_name=collection_name)
  15. print("----查看加载状态----")
  16. print(load_state)
  17. # 查询数据
  18. all_data = client.query(
  19.     collection_name=collection_name,
  20.     filter="id >= 0",
  21.     output_fields=["id", "vector", "color"],
  22.     limit=10  # 使用实际数据量作为limit
  23. )
  24. #  打印查询结果
  25. print(f"\n集合 {collection_name} 中共有 {len(all_data)} 条数据:")
  26. for idx, data in enumerate(all_data):
  27.     print(f"\n第{idx+1}条:")
  28.     print(f"ID: {data['id']}")
  29.     print(f"向量: {data['vector']}")
  30.     print(f"颜色: {data['color']}")
  31. #通过主键删除
  32. res = client.delete(
  33.     collection_name=collection_name,
  34.     # highlight-next-line
  35.     ids=[0, 1]
  36. )
  37. print(res)
  38. #批量删除了所有颜色字段设置为红色和绿色的实体
  39. res = client.delete(
  40.     collection_name=collection_name,
  41.     filter="color in ['white_9381', 'purple_4976']"
  42. )
  43. print(res)
  44. time.sleep(1)  # 增加延迟,确保删除生效
  45. # 查询数据
  46. all_data = client.query(
  47.     collection_name=collection_name,
  48.     filter="id >= 0",
  49.     output_fields=["id", "vector", "color"],
  50.     limit=10  # 使用实际数据量作为limit
  51. )
  52. #  打印查询结果
  53. print(f"\n集合 {collection_name} 中共有 {len(all_data)} 条数据:")
  54. for idx, data in enumerate(all_data):
  55.     print(f"\n第{idx+1}条:")
  56.     print(f"ID: {data['id']}")
  57.     print(f"向量: {data['vector']}")
  58.     print(f"颜色: {data['color']}")
复制代码
 结果输出:
----查看加载状态----
{'state': }

集合 insert_collection 中共有 10 条数据:

第1条:
ID: 0
向量: [-0.6199544, 0.4479437, -0.17493895, -0.42480302, -0.8648453]
颜色: black_2

第2条:
ID: 1
向量: [0.19886813, 0.060235605, 0.6976963, 0.26144746, 0.8387295]
颜色: red_7025

第3条:
ID: 2
向量: [0.43742132, -0.55975026, 0.6457888, 0.7894059, 0.20785794]
颜色: orange_6781

第4条:
ID: 3
向量: [0.3172005, 0.97190446, -0.36981148, -0.48608947, 0.9579189]
颜色: pink_9298

第5条:
ID: 4
向量: [0.44523495, -0.8757027, 0.82207793, 0.4640629, 0.3033748]
颜色: red_4794

第6条:
ID: 5
向量: [0.9858251, -0.81446517, 0.6299267, 0.12069069, -0.14462778]
颜色: yellow_4222

第7条:
ID: 6
向量: [0.8371978, -0.015764369, -0.31062937, -0.56266695, -0.8984948]
颜色: red_9392

第8条:
ID: 7
向量: [-0.33445147, -0.2567135, 0.898754, 0.9402996, 0.5378065]
颜色: grey_8510

第9条:
ID: 8
向量: [0.3952472, 0.40002573, -0.5890507, -0.86505026, -0.6140361]
颜色: white_9381

第10条:
ID: 9
向量: [0.57182807, 0.24070318, -0.37379134, -0.067269325, -0.6980532]
颜色: purple_4976
{'delete_count': 2}
{'delete_count': 2}

集合 insert_collection 中共有 8 条数据:

第1条:
ID: 2
向量: [0.43742132, -0.55975026, 0.6457888, 0.7894059, 0.20785794]
颜色: orange_6781

第2条:
ID: 3
向量: [0.3172005, 0.97190446, -0.36981148, -0.48608947, 0.9579189]
颜色: pink_9298

第3条:
ID: 4
向量: [0.44523495, -0.8757027, 0.82207793, 0.4640629, 0.3033748]
颜色: red_4794

第4条:
ID: 5
向量: [0.9858251, -0.81446517, 0.6299267, 0.12069069, -0.14462778]
颜色: yellow_4222

第5条:
ID: 6
向量: [0.8371978, -0.015764369, -0.31062937, -0.56266695, -0.8984948]
颜色: red_9392

第6条:
ID: 7
向量: [-0.33445147, -0.2567135, 0.898754, 0.9402996, 0.5378065]
颜色: grey_8510

第7条:
ID: 8
向量: [0.3952472, 0.40002573, -0.5890507, -0.86505026, -0.6140361]
颜色: white_9381

第8条:
ID: 9
向量: [0.57182807, 0.24070318, -0.37379134, -0.067269325, -0.6980532]
颜色: purple_4976
更多学习资料尽在老虎网盘资源:http://resources.kittytiger.cn/  老虎网盘资源
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

前天 21:00

举报

您需要登录后才可以回帖 登录 | 立即注册