Build an Index
Milvus Docs 需要你的帮助
本文档暂时没有中文版本,欢迎你成为社区贡献者,协助中文技术文档的翻译。你可以通过页面右边的 编辑 按钮直接贡献你的翻译。更多详情,参考 贡献指南。如需帮助,你可以 提交 GitHub Issue。
This topic describes how to build an index for vectors in Milvus.
Vector indexes are an organizational unit of metadata used to accelerate vector similarity search. Without index built on vectors, Milvus will perform a brute-force search by default.
See Vector Index for more information about mechanism and varieties of vector indexes.
- Current release of Milvus only supports index on vector field. Future releases will support index on scalar field.
- By default, Milvus does not index a segment with less than 1,024 rows. To change this parameter, configure
rootCoord.minSegmentSizeToEnableIndex
inmilvus.yaml
.
The following example builds a 1024-cluster IVF_FLAT index with Euclidean distance (L2) as the similarity metrics. You can choose the index and metrics that suit your scenario. See Similarity Metrics for more information.
Prepare index parameter
Prepare the index parameters.
index_params = {
"metric_type":"L2",
"index_type":"IVF_FLAT",
"params":{"nlist":1024}
}
const index_params = {
metric_type: "L2",
index_type: "IVF_FLAT",
params: JSON.stringify({ nlist: 1024 }),
};
idx, err := entity.NewIndexIvfFlat( // NewIndex func
entity.L2, // metricType
1024, // ConstructParams
)
if err != nil {
log.Fatal("fail to create ivf flat index parameter:", err.Error())
}
final IndexType INDEX_TYPE = IndexType.IVF_FLAT; // IndexType
final String INDEX_PARAM = "{\"nlist\":1024}"; // ExtraParam
create index
Collection name (book): book
The name of the field to create an index for (book_intro): book_intro
Index type (FLAT, IVF_FLAT, IVF_SQ8, IVF_PQ, RNSG, HNSW, ANNOY): IVF_FLAT
Index metric type (L2, IP, HAMMING, TANIMOTO): L2
Index params nlist: 1024
Timeout []:
Parameter | Description | Options |
---|---|---|
metric_type |
Type of metrics used to measure similarity of vectors. | For floating point vectors:
|
index_type |
Type of index used to accelerate the vector search. | For floating point vectors:
|
params |
Building parameter(s) specific to the index. | See Vector Index for more information. |
Parameter | Description | Option |
---|---|---|
metric_type |
Type of metrics used to measure similarity of vectors. | For floating point vectors:
|
index_type |
Type of index used to accelerate the vector search. | For floating point vectors:
|
params |
Building parameter(s) specific to the index. | See Vector Index for more information. |
Parameter | Description | Options |
---|---|---|
NewIndex func |
Function to create entity.Index according to different index types. | For floating point vectors:
|
metricType |
Type of metrics used to measure similarity of vectors. | For floating point vectors:
|
ConstructParams |
Building parameter(s) specific to the index. | See Vector Index for more information. |
Parameter | Description | Options |
---|---|---|
IndexType |
Type of index used to accelerate the vector search. | For floating point vectors:
|
ExtraParam |
Building parameter(s) specific to the index. | See Vector Index for more information. |
Option | Description |
---|---|
--help | Displays help for using the command. |
Build index
Build the index by specifying the vector field name and index parameters.
from pymilvus import Collection
collection = Collection("book") # Get an existing collection.
collection.create_index(
field_name="book_intro",
index_params=index_params
)
Status(code=0, message='')
await milvusClient.indexManager.createIndex({
collection_name: "book",
field_name: "book_intro",
extra_params: index_params,
});
err = milvusClient.CreateIndex(
context.Background(), // ctx
"book", // CollectionName
"book_intro", // fieldName
idx, // entity.Index
false, // async
)
if err != nil {
log.Fatal("fail to create index:", err.Error())
}
milvusClient.createIndex(
CreateIndexParam.newBuilder()
.withCollectionName("book")
.withFieldName("book_intro")
.withIndexType(INDEX_TYPE)
.withMetricType(MetricType.L2)
.withExtraParam(INDEX_PARAM)
.withSyncMode(Boolean.FALSE)
.build());
# Follow the previous step.
Parameter | Description |
---|---|
field_name |
Name of the vector field to build index on. |
index_params |
Parameters of the index to build. |
Parameter | Description |
---|---|
collection_name |
Name of the collection to build index in. |
field_name |
Name of the vector field to build index on. |
extra_params |
Parameters of the index to build. |
Parameter | Description |
---|---|
ctx |
Context to control API invocation process. |
CollectionName |
Name of the collection to build index on. |
fieldName |
Name of the vector field to build index on. |
entity.Index |
Parameters of the index to build. |
async |
Switch to control sync/async behavior. The deadline of context is not applied in sync building process. |
What's next
-
Learn more basic operations of Milvus:
-
Explore API references for Milvus SDKs: