创建、删除索引

本页提供创建或删除索引的 Python 示例代码。

创建索引

目前,一个集合的每个字段只支持一种索引类型,切换索引类型会自动删除旧的索引文件。在创建其它索引前,FLAT 作为集合的默认索引类型。

create_index() 会指定该集合的索引类型,并同步为之前插入的数据建立索引,后续插入的数据在大小达到 segment_row_limit 时,索引会在后台自动建立。在实际生产环境中,如果是流式数据,建议在插入向量之前先创建索引,以便后续系统自动建立;如果是静态数据,建议导入所有数据后再一次性创建索引。更多索引用法请参考 索引示例程序

  1. 准备创建索引所需参数(以向量字段创建索引 IVF_FLAT 为例)。索引参数是一个 JSON 字符串,在 Python SDK 中以字典来表示。

    1. # Prepare index param.
    2. >>> ivf_param = {"index_type": "IVF_FLAT", "metric_type": "L2", "params": {"nlist": 4096}}

    对于不同的索引类型,创建索引所需参数也有区别。所有的索引参数都必须赋值。详细信息请参考 Milvus 索引类型

  2. 为指定集合创建索引:

    1. # Create an index.
    2. >>> client.create_index('test01', "Vec", ivf_param)

删除索引

删除索引后,向量字段再次使用默认索引类型 FLAT。

  1. >>> client.drop_index('test01')

常见问题

建索引参数 nlist 的大小该如何选择? 该值需要根据具体的使用情况去设置。详见 性能调优 > 索引如何设置 Milvus 参数。 Milvus 可以在同一个集合中的不同分区上建立不同索引吗? 不可以。同一个集合在某一刻只能有一种索引。 Milvus 中支持新增向量后再建索引吗? 支持。Milvus 中数据是分文件存储的,后续新增向量会存在新的数据文件中。该文件达到一定量后会自动触发建立索引,生成一个新的索引文件,不会影响之前已经建立过的索引。