接口定义
RebuildIndex()
接口用于重建指定 Collection 的所有索引,清除无用的索引数据,修复损坏的索引数据,优化索引结构,改善性能。RebuildIndex(ctx context.Context, params ...*tcvectordb.RebuildIndexParams) (result *tcvectordb.RebuildIndexResult, err error)
使用示例
注意:
索引重建过程中 Colletion 禁止写入、读取。
重建索引需要新的内存来构建索引。
var (ctx = context.Background()database = "go-sdk-test-db"embeddingCollection = "go-sdk-test-emcoll")col := client.Database(database).Collection(embeddingCollection)col.RebuildIndex(ctx, &tcvectordb.RebuildIndexParams{DropBeforeRebuild: true,Throttle: 1,})
入参描述
参数 | 是否必选 | 参数含义 | 配置方法及要求 |
DropBeforeRebuild | 否 | 标识在重建索引时,是否需先删除旧索引再重建新索引。 说明: 重建索引需要占用额外的内存空间,数据量越大,消耗的内存空间越大。在重建索引之前,您需根据实际资源情况选择是否需先删除旧索引再重建,避免引起内存占满而阻塞业务正常运行。 | 取值如下所示: true:重建之前,先删除旧索引在重建索引。 说明: 内存资源不足时,可先删除旧索引,在新索引还没有创建完成之前,该表无法正常读写。 false:重建之前,不删除旧索引,创建新索引完成之后再删除旧索引。默认为 false。 说明: 内存资源足够的情况下,可不删除旧索引。在新索引还没有创建完成之前,该表可读数据,禁止写入数据。 |
Throttle | 否 | 标识是否限制构建索引的单节点 CPU 核数。 说明: 重建索引会消耗 CPU 资源,为防止资源打满影响写入或者检索等操作,请根据业务实际配置重建索引的 CPU 核数。默认为限制CPU 核数为 1。 | 取值如下所示: 0:不限制 CPU 核数。在模型训练期间,会消耗大量的 CPU 资源。重建索引任务将会尽快执行,但可能会对其他集合的读写操作产生影响。 1:CPU 核数为1,即仅使用 CPU 1 核进行模型训练,可避免构建索引期间对其他集合产生影响,但任务执行较慢。 |
出参描述
说明:
RebuildIndex() 执行之后,如果抛出异常,说明重建索引失败。具体异常原因,可根据提示信息进行分析。无任何提示信息说明执行成功,可使用 query() 确认删除的 Document 已经不存在。
相关说明
使用 describeCollection() 接口查看 Collection 的索引状态,返回参数 indexStatus 中的 status 标识当前 Collection 重建索引的状态,startTime 显示重建索引开始的时间。
ready:表示当前 Collection 准备就绪,可正常使用。
training:表示当前 Collection 正在进行数据训练,即训练模型已生成向量数据。
building:表示当前 Collection 正在重建索引,即将生成的向量数据存储到新的索引中。
failed:重建索引失败,可能会影响集合读写操作。
注意:
training data 与 building index 状态期间不可写入数据。若重建索引之前先删除旧索引,则集合不可进行相似性查询,只能进行精确查询。