• milvus集合管理


    一、创建集合

    集合由一个或多个分区组成。在创建新集合时,Milvus会创建一个默认分区_default
    1.准备模式
    需要创建的集合必须包含一个主键字段和一个向量字段。INT64和String是主键字段支持的数据类型

    首先,准备必要的参数,包括字段模式、集合模式和集合名称。

    from pymilvus import CollectionSchema, FieldSchema, DataType
    book_id = FieldSchema(
      name="book_id",
      dtype=DataType.INT64,
      is_primary=True,
    )
    book_name = FieldSchema(
      name="book_name",
      dtype=DataType.VARCHAR,
      max_length=200,
      # The default value will be used if this field is left empty during data inserts or upserts.
      # The data type of `default_value` must be the same as that specified in `dtype`.
      default_value="Unknown"
    )
    word_count = FieldSchema(
      name="word_count",
      dtype=DataType.INT64,
      # The default value will be used if this field is left empty during data inserts or upserts.
      # The data type of `default_value` must be the same as that specified in `dtype`.
      default_value=9999
    )
    book_intro = FieldSchema(
      name="book_intro",
      dtype=DataType.FLOAT_VECTOR,
      dim=2
    )
    # 集合的定义
    schema = CollectionSchema(
      fields=[book_id, book_name, word_count, book_intro],
      description="Test book search",
      enable_dynamic_field=True
    )
    collection_name = "book"
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    也可以使用预定义的模式新建集合:

    from pymilvus import Collection
    collection = Collection(
        name=collection_name,
        schema=schema,
        using='default',
        shards_num=2
        )
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    二、重命名集合

    使用rename_collection方法

    from pymilvus import Collection, FieldSchema, CollectionSchema, DataType, connections, utility
    connections.connect(alias="default")
    schema = CollectionSchema(fields=[
    ...     FieldSchema("int64", DataType.INT64, description="int64", is_primary=True),
    ...     FieldSchema("float_vector", DataType.FLOAT_VECTOR, is_primary=False, dim=128),
    ... ])
    collection = Collection(name="old_collection", schema=schema)
    utility.rename_collection("old_collection", "new_collection") # Output: True
    utility.drop_collection("new_collection")
    utility.has_collection("new_collection") # Output: False
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    三、修改集合

    主要还是修改生存时间

    collection.set_properties(properties={"collection.ttl.seconds": 1800})
    
    • 1

    四、检查集合信息

    1.检查集合是否存在

    from pymilvus import utility
    utility.has_collection("book")
    
    • 1
    • 2

    2.检查集合的细节信息

    from pymilvus import Collection
    collection = Collection("book")  # Get an existing collection.
    
    collection.schema                # Return the schema.CollectionSchema of the collection.
    collection.description           # Return the description of the collection.
    collection.name                  # Return the name of the collection.
    collection.is_empty              # Return the boolean value that indicates if the collection is empty.
    collection.num_entities          # Return the number of entities in the collection.
    collection.primary_field         # Return the schema.FieldSchema of the primary key field.
    collection.partitions            # Return the list[Partition] object.
    collection.indexes               # Return the list[Index] object.
    collection.properties		# Return the expiration time of data in the collection.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    3.列出索引的集合

    from pymilvus import utility
    utility.list_collections()
    
    • 1
    • 2

    五、删除集合

    from pymilvus import utility
    utility.drop_collection("book")
    
    
    • 1
    • 2
    • 3

    六、集合的别名

    1.创建集合的别名
    在创建集合时可以,也可以如下:

    from pymilvus import utility
    utility.create_alias(
      collection_name = "book",
      alias = "publication"
    )
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.删除别名

    from pymilvus import utility
    utility.drop_alias(alias = "publication")
    
    
    • 1
    • 2
    • 3

    3.修改别名

    from pymilvus import utility
    utility.alter_alias(
      collection_name = "book",
      alias = "publication"
    )
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    七、加载集合

    1.Milvus 中的所有搜索和查询操作都在内存中执行。
    在当前版本中,所有在线查询节点都将根据用户指定的副本数分为多个副本组。所有副本组都应具有最小的内存资源来加载所提供的集合的一个副本。

    from pymilvus import Collection, utility
     
    # Get an existing collection.
    collection = Collection("book")      
    collection.load(replica_number=2)
     
    # Check the loading progress and loading status
    utility.load_state("book")
    # Output: 
     
    utility.loading_progress("book")
    # Output: {'loading_progress': 100%}
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2.获取副本信息

    from pymilvus import Collection
    collection = Collection("book")      # Get an existing collection.
    collection.load(replica_number=2)    # Load collection as 2 replicas
    result = collection.get_replicas()
    print(result)
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    八、释放集合
    在搜索或查询后释放集合以减少内存使用

    from pymilvus import Collection
    collection = Collection("book")      # Get an existing collection.
    collection.release()
    
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    阿里云服务器e系列是共享型?什么意思?
    const 总结
    upload-labs通关
    Ubuntu 设置只允许国内的 IP 访问
    牛客刷SQL
    INC公司和LLC公司的区别
    基于SSM的在线音乐管理系统
    [MySQL]学习笔记目录(尚硅谷宋红康MySQL数据库教程)
    C#实现线性查找算法
    学历不高,为何我还要转行编程?这个行业的秘密你知道吗?
  • 原文地址:https://blog.csdn.net/qq_43814415/article/details/134446263