跳到主要内容

创建 Vector Index

本教程将介绍如何为 Collection 中的向量字段创建向量索引(Vector Index)并管理索引。

概述

通过索引文件中存储的元数据, 能够以一种特殊的结构组织您的数据,从而加速数据搜索和查询的过程。

我们建议您为向量字段和常用于过滤的标量字段创建索引。

如果您的 collection 包含了多个向量字段,您可以为各向量字段分别创建索引。有关更多信息,请参阅使用多向量字段

准备工作

管理 Collection (SDK)中已经说明了 会在以下几种情况下,随 Collection 自动创建索引并加载到内存中:

  • 在创建 Collection 命令中设置了向量字段维度和相似度类型

  • 在创建 Collection 命令中设置了 Schema 和索引参数

以下示例代码基于现有代码重新连接至 并创建 Collection。Collection 创建过程中并未设置索引参数,因此该 Collection 中未创建索引且未自动加载。

from pymilvus import MilvusClient, DataType

CLUSTER_ENDPOINT = "YOUR_CLUSTER_ENDPOINT"
TOKEN = "YOUR_CLUSTER_TOKEN"

# 1. Set up a Milvus client
client = MilvusClient(
uri=CLUSTER_ENDPOINT,
token=TOKEN
)

# 2. Create schema
# 2.1. Create schema
schema = MilvusClient.create_schema(
auto_id=False,
enable_dynamic_field=True,
)

# 2.2. Add fields to schema
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. Create collection
client.create_collection(
collection_name="customized_setup",
schema=schema,
)

创建索引

如需为 Collection 创建索引,请调用 create_index() 命令并设置索引参数。

# 4. Set up index
# 4.1. Set up the index parameters
index_params = MilvusClient.prepare_index_params()

# 4.2. Add an index on the vector field.
index_params.add_index(
field_name="vector",
metric_type="COSINE",
index_type="AUTOINDEX",
index_name="vector_index"
)

# 4.4. Create an index file
client.create_index(
collection_name="customized_setup",
index_params=index_params
)

# 5. Describe index
res = client.list_indexes(
collection_name="customized_setup"
)
📘说明

目前,每个字段上仅可创建 1 个索引文件。

查看索引详情

索引创建成功后,您可以查看索引详情。

# 5. Describe index
res = client.list_indexes(
collection_name="customized_setup"
)

print(res)

# Output
#
# [
# "vector_index"
# ]

res = client.describe_index(
collection_name="customized_setup",
index_name="vector_index"
)

print(res)

# Output
#
# {
# "index_type": "AUTOINDEX",
# "metric_type": "COSINE",
# "field_name": "vector",
# "index_name": "vector_index"
# }

您可以通过查看某一特定字段上的索引文件了解已创建索引的数据行数。

删除索引

您可以删除不再使用的 Vector index 索引。

# 6. Drop index
client.drop_index(
collection_name="customized_setup",
index_name="vector_index"
)