插入、删除向量

你可以在集合或集合的分区中进行向量操作,本页提供以下内容:

在集合中插入向量

  1. 随机生成 1000 个 Entity:

    1. >>> import random
    2. # Generate 10000 entities.
    3. >>> list_of_int = [random.randint(0, 255) for _ in range(10000)]
    4. >>> vectors = [[random.random() for _ in range(128)] for _ in range(10000)]
  2. 插入向量列表。在创建集合时指定 auto_idTrue, Milvus 自动为 Entity 分配 ID。

    1. # Insert embeddings.
    2. >>> hybrid_entities = [
    3. {"name": "A", "values": list_of_int, "type": DataType.INT32},
    4. {"name": "B", "values": list_of_int, "type": DataType.INT32},
    5. {"name": "C", "values": list_of_int, "type": DataType.INT64},
    6. {"name": "Vec", "values": vectors, "type":DataType.FLOAT_VECTOR}
    7. ]
    8. >>> client.insert('test01', hybrid_entities)

    如果在创建集合时指定auto_idFalse, 你也可以自己定义 Entity ID:

    1. >>> entity_ids = [id for id in range(10000)]
    2. >>> client.insert('test01', hybrid_entities, ids=entity_ids)

在分区中插入向量

  1. >>> client.insert('test01', hybrid_entities, partition_tag="tag01")

通过 ID 删除向量

假设你的集合中存在以下向量 ID:

  1. >>> ids = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

你可以通过以下命令删除向量:

  1. >>> client.delete_entity_by_id('test01', ids)

在调用 delete 接口后,用户可以选择再调用 flush,保证新增的数据可见,被删除的数据不会再被搜到。

常见问题

Milvus 中自定义 ID 有没有长度限制? ID 类型是非负的 64 位整型。 Milvus 可以插入重复 ID 的向量吗? 可以,这样在 Milvus 中会存在相同 ID 的多条向量。 Milvus 是否支持 “边插入边查询” ? 支持。 Milvus 中单次插入数据有上限吗? 单次插入数据不能超过 256 MB。