用户手册 (User Guide)
管理索引(Manage-indexes)
索引向量字段(Index-vector-fields)
            # 索引向量字段

            本指南将指导你创建和管理集合中向量字段索引的基本操作。

            ## 概述

            借助存储在索引文件中的元数据,Milvus 会将你的数据组织成一种专门的结构,从而在搜索或查询过程中快速检索所请求的信息。

            Milvus 提供了 [几种索引类型](/reference/index.md),用于对字段值进行排序,以进行高效的相似性搜索。它还提供了三种 [度量类型](https://milvus.io/docs/metric.md#Similarity-Metrics):__余弦相似度__(COSINE)、__欧氏距离__(L2)和 __内积__(IP),用于测量向量嵌入之间的距离。

            建议为经常访问的向量字段和标量字段都创建索引。

            <div class="alert note">

            本页上的代码段使用新的 <a href="https://milvus.io/api-reference/pymilvus/v2.4.x/About.md"> MilvusClient </a>(Python)与 Milvus 进行交互。其他语言的新 MilvusClient SDK 将在以后的更新中发布。

            </div>

            ## 准备工作

            如 [管理集合](/userGuide/manage-collections.md) 中所述,如果在创建集合时指定了以下任一条件,则 Milvus 会自动生成索引并将其加载到内存中:

            - 向量字段的维数和度量类型,或
            - 模式和索引参数。

            下面的代码片段重用了现有代码,用于建立与 Milvus 实例的连接并创建一个不指定索引参数的集合。在这种情况下,集合缺少索引并且未加载。

            ```python
            from pymilvus import MilvusClient, DataType

            # 1. 设置Milvus客户端
            client = MilvusClient(
                uri="http://localhost:19530"
            )

            # 2. 创建模式
            # 2.1. 创建模式
            schema = MilvusClient.create_schema(
                auto_id=False,
                enable_dynamic_field=True,
            )

            # 2.2. 向模式中添加字段
            schema.add_field(field_name="id", datatype=DataType.INT64, is_primary=True)
            schema.add_field(field_name="vector", datatype=DataType.FLOAT_VECTOR, dim=5)

            # 3. 创建集合
            client.create_collection(
                collection_name="customized_setup", 
                schema=schema, 
            )
            ```

            ## 为集合创建索引

            要为集合创建索引或为集合创建索引,你需要设置索引参数并调用 `create_index()`。

            ```python
            # 4.1. 设置索引参数
            index_params = MilvusClient.prepare_index_params()

            # 4.2. 在向量字段上添加索引。
            index_params.add_index(
                field_name="vector",
                metric_type="COSINE",
                index_type=,
                index_name="vector_index"
            )

            # 4.3. 创建索引文件
            client.create_index(
                collection_name="customized_setup",
                index_params=index_params
            )
            ```

            <div class="admonition note">

            <p> <b> 注意 </b> </p>

            <p> 目前,你只能为集合中的每个字段创建一个索引文件。</p>

            </div>

            ## 检查索引详情
             

创建索引后,你可以检查其详细信息。

# 5. 描述索引
res = client.list_indexes(
    collection_name="customized_setup"
)
 
print(res)
 
# 输出
#
# [
#     "vector_index",
# ]
 
res = client.describe_index(
    collection_name="customized_setup",
    index_name="vector_index"
)
 
print(res)
 
# 输出
#
# {
#     "index_type": ,
#     "metric_type": "COSINE",
#     "field_name": "vector",
#     "index_name": "vector_index"
# }

你可以检查在特定字段上创建的索引文件,并收集使用此索引文件索引的行数的统计信息。

删除索引

你可以在不再需要索引时直接删除它。

# 6. 删除索引
client.drop_index(
    collection_name="customized_setup",
    index_name="vector_index"
)