更新时间:2026-07-20 GMT+08:00
分享

向量索引

实现了部分向量索引访问方法,比如创建、维护、检索等。创建索引格式请参见《参考》中“SQL参考 > SQL语法 > C > CREATE INDEX”章节。向量索引不支持UNIQUE。

  • 重建索引请参见《参考》中“SQL参考 > SQL语法 > R > REINDEX”章节。
  • 删除索引请参见《参考》中“SQL参考 > SQL语法 > D > DROP INDEX”章节。
  • GLOBAL

    分区表GLOBAL索引不支持。

  • DESC

    不支持。

  • UNIQUE

    不支持。

  • COLLATE collation

    不支持。

  • DEDUPLICATION

    不支持复合索引。

  • USING method

    指定创建索引的方法。

    新增以下索引类型:

    gsivfflat:gsivfflat索引,针对向量数据的倒排索引。

    gsdiskann:gsdiskann索引,针对向量数据的图索引。

  • WITH ( {storage_parameter = value} [, ... ] )

    指定索引方法的存储参数。

    取值范围:如表1表2所示。

GsIVFFLAT

表1 向量索引类型GsIVFFLAT

向量索引类型

函数名

描述

GsIVFFLAT

ivfflatbeginscan

读取索引根节点信息到内存,对于ivfflat读取元信息和各个聚簇中心点信息。

ivfflatbuild

创建基于数据聚类的倒排索引。

ivfflatbuildempty

反馈空索引。

ivfflatbulkdelete

将所有索引中的死元组进行删除,并且更新每个聚簇的插入位置为第一个有空闲的页。

ivfflatcostestimate

针对IVFFLAT扫描过程进行代价评估。

ivfflatendscan

清空索引扫描结构体上的变量并释放。

ivfflatgettuple

此函数提供执行器获得一条索引数据,在其中实现IVFFLAT核心检索步骤。

ivfflatinsert

将新的元组插入到现有索引中,维护IVF索引。

ivfflatoptions

为索引解析并验证reloptions数组。

ivfflatrescan

重置索引扫描结构体上的变量。

ivfflatvacuumcleanup

更新IVFFLAT索引统计信息。

GsDiskANN

表2 向量索引类型GsDiskANN

向量索引类型

函数名

描述

GsDiskANN

diskannbuild

创建基于Vamana图的向量索引。

diskannbuildempty

反馈空索引。

diskannoptions

为索引解析并验证reloptions数组。

diskanninsert

将新的元组插入到现有索引中,维护diskann索引。

diskannbeginscan

读取索引根节点信息到内存,加载PQ表中心点信息,指定的距离函数,关键结构创建。

diskanngettuple

此函数提供执行器获得一条索引数据,在其中实现GSDISKANN核心检索步骤。

diskannrescan

重置索引扫描结构体上的变量。

diskannendscan

清空索引扫描结构体上的变量并释放。

diskannbulkdelete

将所有索引中的死元组进行重置并且放入FSM中。

diskannvacuumcleanup

更新GSDISKANN索引统计信息。

diskanncostestimate

针对GSDISKANN扫描过程进行代价评估。

diskannarrayconsistent

判断数组类型的查询条件是否与索引中的数据一致,用于决定是否需要重新检查,仅支持TRUE或者FALSE判断。

diskannarrayextract

将数组类型的查询条件提取为多个元素,并设置“nkeys”和“null_flags”参数,用于后续的索引扫描。

diskannqueryarrayextract

处理数组类型的查询条件,并根据数值比较策略设置搜索模式。

diskannarraytriconsistent

判断数组类型查询条件与索引数据是否一致的函数。在diskannarrayconsistent基础上加入了对不确定的情况做“可能匹配”的判断,除TRUE或者FALSE,还支持MAYBE判断。

  • 创建索引时的内存需求超过限制会报错,内存需求的计算是统计当前数据量的大小,并根据统计数据量估算需要的内存大小,此提示值为统计值,大小可能会波动,建议根据实际情况在提示值基础上适当增大,将GUC参数maintenance_work_mem设置为合适大小。
  • GsIVFFLAT索引支持的向量类型为floatvector和boolvector,而GsDiskANN索引仅支持向量类型为floatvector。

相关文档