CreateIndex 用于为指定的数据集 Collection 创建索引 Index。
创建索引可以加速向量的相似度搜索,它根据指定的索引算法和数据结构将向量库中的原始数据进行分组排序,提高相似度搜索的效率和准确性,是驱动向量数据库在短时间内筛选出候选的核心所在。
参数 | 子参数 | 子参数 | 类型 | 是否必选 | 默认值 | 参数说明 |
---|---|---|---|---|---|---|
collectionName | string | 是 | 指定创建索引所属的 Collection 名称。
| |||
indexName | string | 是 | 指定创建的索引 Index 名称。
| |||
indexOptions 说明 *IndexOptions 结构体。 | vectorIndex 说明 *VectorIndexParams结构体。 | IndexType | string | 是 | HNSW | 向量索引类型。取值如下:
|
Distance | string | 否 | DistanceType.IP | 距离类型,衡量向量之间距离的算法。取值如下:
| ||
Quant | string | 否 | Int8 | 量化方式。量化方式是索引中对向量的压缩方式,可以降低向量间相似性计算的复杂度。基于向量的高维度和大规模特点,采用向量量化可以有效减少向量的存储和计算成本。取值如下:
| ||
HnswM | 数值 | 否 | 20 | hnsw 索引参数,表示邻居节点个数。
| ||
HnswCef | 数值 | 否 | 400 | hnsw 索引参数,表示构建图时搜索邻居节点的广度。
| ||
HnswSef | 数值 | 否 | 800 | hnsw 索引参数,表示线上检索的搜索广度。
| ||
cpuQuota | int | 否 | 2 | 索引检索消耗的 CPU 配额,格式为正整数。
| ||
description | string | 否 | ”“ | 索引的自定义描述。 | ||
partitionBy | string | 否 | “” | partitionBy 用于划分子索引 partition 。根据某个标量字段可以将数据集划分成不同的子数据集,不同的子数据集构建为不同的子索引,实现混合检索时在子索引内检索并减少过滤,从而提升检索性能。
| ||
scalarIndex | array | 否 | None | 标量字段列表。
| ||
shardCount | int | 否 | 1 | 分片数。索引分片是指在大规模数据量场景下,可以把索引数据切分成多个小的索引块,分发到同一个集群不同节点进行管理,每个节点负责存储和处理一部分数据,可以将查询负载分散到不同的节点上,并发的进行处理。当一个节点发生故障时,系统可以自动将其上的分片数据迁移到其他的正常节点上,保证稳定性,以实现数据的水平扩展和高性能的读写操作。
|
vectorIndex := &vikingdb.VectorIndexParams{ Distance: vikingdb.COSINE, IndexType: vikingdb.HNSW_HYBRID, } indexOptions := vikingdb.NewIndexOptions().SetVectorIndex(vectorIndex).SetCpuQuota(2).SetDescription("this is an index").SetPartitionBy("").SetScalarIndex([]string{"price", "like"}) index, err := service.CreateIndex("go", "goIndex", indexOptions) if err != nil { fmt.Println(err) } fmt.Println(index)
Go 调用执行上面的任务,返回 Index 结构体地址 (*Index)。Index 结构体包含的属性如下表所示。
属性 | 类型 | 说明 |
---|---|---|
CollectionName | string | 显示索引所属的 Collection 名称。 |
IndexName | string | 显示索引 Index 名称。 |
Description | string | 显示索引的描述。 |
CpuQuota | int | 显示索引线上检索消耗的 CPU 配额。如果检索消耗的 CPU 超过配额,该索引会被限流。 |
PartitionBy | string | PartitionBy 用于划分子索引 partition,对应字段名称 FieldName。根据某个标量字段可以将数据集划分成不同的子数据集,不同的子数据集构建为不同的子索引,实现混合检索时在子索引内检索并减少过滤,从而提升检索性能。 |
VectorIndex | VectorIndexParams | 向量索引参数。 |
ScalarIndex | list<string> | 标量索引字段列表。 |
Status | String | 索引状态。取值如下:
|
ShardCount | int | 分片数。 |
CreateTime | string | 索引创建时间。 |
UpdateTime | string | 索引更新时间。 |
UpdatePerson | string | 索引更新人。 |
IndexCost | map |
|