当前位置: 首页 > news >正文

Milvus(5):Collections 查看、修改、加载和释放、删除

1 查看 Collections

        可以获取当前连接的数据库中所有 Collections 的名称列表,并查看特定 Collections 的详细信息。

1.1 列出 Collections

        下面的示例演示了如何获取当前连接的数据库中所有集合的名称列表。

from pymilvus import MilvusClient, DataTypeclient = MilvusClient(uri="http://localhost:19530",token="root:Milvus"
)res = client.list_collections()print(res)

        如果您已经创建了一个名为quick_setup 的 Collection,则上述示例的结果应类似于下面的内容。

["quick_setup"]

1.2 描述 Collection

        还可以获取特定 Collection 的详细信息。下面的示例假定您已经创建了名为 quick_setup 的 Collection。

res = client.describe_collection(collection_name="quick_setup"
)print(res)

        上述示例的结果应类似于下面的内容。

{'collection_name': 'quick_setup', 'auto_id': False, 'num_shards': 1, 'description': '', 'fields': [{'field_id': 100, 'name': 'id', 'description': '', 'type': <DataType.INT64: 5>, 'params': {}, 'is_primary': True}, {'field_id': 101, 'name': 'vector', 'description': '', 'type': <DataType.FLOAT_VECTOR: 101>, 'params': {'dim': 768}}], 'functions': [], 'aliases': [], 'collection_id': 456909630285026300, 'consistency_level': 2, 'properties': {}, 'num_partitions': 1, 'enable_dynamic_field': True
}

2 修改 Collections

        可以重命名一个 Collection 或更改其设置。

2.1 重新命名 Collections

        可以按以下方式重命名一个 Collection。

from pymilvus import MilvusClientclient = MilvusClient(uri="http://localhost:19530",token="root:Milvus"
)client.rename_collection(old_name="my_collection",new_name="my_new_collection"
)

2.2 设置集合属性

        以下代码片段演示了如何设置 Collection TTL(存活时间)。在数据库中,"有效时间"(TTL)通常用于数据插入或修改后只能保持有效或可访问一段时间的情况。然后,数据会被自动删除。

        例如,如果你每天采集数据,但只需要保留 14 天的记录,你可以通过将 Collections 的 TTL 设置为14 × 24 × 3600 = 1209600秒,配置 Milvus 自动移除任何比这更早的数据。这样就能确保 Collection 中只保留最近 14 天的数据。

        Milvus Collections 中的 TTL 属性指定为以秒为单位的整数。一旦设置,任何超过 TTL 的数据都将自动从 Collections 中删除。由于删除过程是异步的,因此一旦指定的 TTL 超过,数据可能不会准确地从搜索结果中删除。相反,可能会有延迟,因为删除取决于垃圾 Collections (GC) 和压缩过程,而这两个过程会以非确定的时间间隔发生。

from pymilvus import MilvusClientclient.alter_collection_properties(collection_name="my_collection",properties={"collection.ttl.seconds": 60}
)

        适用的 Collections 属性如下:

属性

何时使用

collection.ttl.seconds

如果需要在特定时间后删除某个 Collection 的数据,可考虑设置其有效时间(TTL),单位为秒。一旦 TTL 超时,Milvus 就会删除 Collection 中的所有实体。 删除是异步的,这表明在删除完成之前,搜索和查询仍然可以进行。

mmap.enabled

内存映射(Mmap)可实现对磁盘上大型文件的直接内存访问,允许 Milvus 在内存和硬盘中同时存储索引和数据。这种方法有助于根据访问频率优化数据放置策略,在不影响搜索性能的情况下扩大 Collections 的存储容量。

partitionkey.isolation

启用分区密钥隔离后,Milvus 会根据分区密钥值对实体进行分组,并为每个分组创建单独的索引。收到搜索请求后,Milvus 会根据过滤条件中指定的 Partition Key 值定位索引,并将搜索范围限制在索引包含的实体内,从而避免在搜索过程中扫描不相关的实体,大大提高搜索性能。

2.3 删除 Collection 属性

        还可以通过删除 Collection 属性来重置该属性,具体方法如下。

client.drop_collection_properties(collection_name="my_collection",property_keys=["collection.ttl.seconds"]
)

3 加载和释放

        加载集合是在集合中进行相似性搜索和查询的前提。

3.1 加载 Collections

        加载 Collections 时,Milvus 会将索引文件和所有字段的原始数据加载到内存中,以便快速响应搜索和查询。在载入 Collections 后插入的实体会自动编入索引并载入。以下代码片段演示了如何加载 Collections。

from pymilvus import MilvusClientclient = MilvusClient(uri="http://localhost:19530",token="root:Milvus"
)# 7. 加载集合
client.load_collection(collection_name="my_collection"
)res = client.get_load_state(collection_name="my_collection"
)print(res)# Output
#
# {
#     "state": "<LoadState: Loaded>"
# }

3.2 加载特定字段

        Milvus 可以只加载搜索和查询所涉及的字段,从而减少内存使用并提高搜索性能。以下代码片段假定您创建了名为my_collection 的 Collection,且 Collection 中有名为my_idmy_vector 的两个字段。

client.load_collection(collection_name="my_collection",# highlight-next-lineload_fields=["my_id", "my_vector"] # 只加载指定的字段skip_load_dynamic_field=True # 跳过加载动态字段
)res = client.get_load_state(collection_name="my_collection"
)print(res)# Output
#
# {
#     "state": "<LoadState: Loaded>"
# }

        如果选择加载特定字段,值得注意的是,只有load_fields 中包含的字段才能用作搜索和查询中的过滤器和输出字段。应始终在load_fields 中包含主字段和至少一个向量字段的名称。

        还可以使用skip_load_dynamic_field 来确定是否加载动态字段。动态字段是一个保留的 JSON 字段,名为$meta,以键值对的形式保存所有非 Schema 定义的字段及其值。加载动态字段时,字段中的所有键都会被加载,并可用于过滤和输出。如果动态字段中的所有键都不参与元数据过滤和输出,请将skip_load_dynamic_field 设置为True 。

        要在 Collections 加载后加载更多字段,需要先释放 Collections,以避免因索引更改而提示可能的错误。

3.3 释放 Collections

        搜索和查询是内存密集型操作。为节约成本,建议释放当前不使用的 Collection。下面的代码片段演示了如何释放一个 Collection。

# 8. 释放集合
client.release_collection(collection_name="my_collection"
)res = client.get_load_state(collection_name="my_collection"
)print(res)# Output
#
# {
#     "state": "<LoadState: NotLoad>"
# }

4 删除 Collections

        如果不再需要某个 Collection,可以删除该 Collection。以下代码片段假定您有一个名为my_collection 的 Collection。

from pymilvus import MilvusClientclient = MilvusClient(uri="http://localhost:19530",token="root:Milvus"
)client.drop_collection(collection_name="my_collection"
)

相关文章:

  • vue3 实现将html内容导出为图片、pdf和word
  • python的mtcnn检测图片中的人脸并标框
  • Android移动应用开发入门示例:Activity跳转界面
  • 数据仓库建设全解析!
  • Whisper微调及制作方言数据集
  • 动态哈希映射深度指南:从基础到高阶实现与优化
  • Vue开发网站会有“#”原因是前端路由使用了 Hash 模式
  • Qt使用 SQLite 数据库的基本方法
  • 代码随想录算法训练营第二十六天
  • Python爬虫第19节-动态渲染页面抓取之Splash使用下篇
  • React-组件和props
  • 【Python爬虫实战篇】--Selenium爬取Mysteel数据
  • Cephalon端脑云:神经形态计算+边缘AI·重定义云端算力
  • 网页版 deepseek 对话问答内容导出为 PDF 文件和 Word 文件的浏览器插件下载安装和使用说明
  • spark-streaming(二)
  • NeRF:原理 + 实现 + 实践全流程配置+数据集测试【Ubuntu20.04 】【2025最新版】
  • 【1区SCI】Fusion entropy融合熵,多尺度,复合多尺度、时移多尺度、层次 + 故障识别、诊断-matlab代码
  • CE第一次作业
  • 协作开发攻略:Git全面使用指南 — 第一部分 Git基础
  • 3台CentOS虚拟机部署 StarRocks 1 FE+ 3 BE集群
  • 我国首次发布铁线礁、牛轭礁珊瑚礁“体检”报告,菲炮制言论毫无科学和事实依据
  • 讲座预告|大国博弈与创新破局:如何激励中国企业创新
  • 电厂 | 京东、美团为什么抢着为你送外卖?
  • 民生访谈|马拉松中签率低何解?预付费监管落实得如何?市体育局回应
  • 继加州后,美国又有11州起诉特朗普政府滥用关税政策“违法”
  • 何以中国|福建武夷山:千年茶道的文旅“破圈”与新生