向量索引
实现了部分向量索引访问方法,比如创建、维护、检索等。创建索引格式请参见《参考》中“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} [, ... ] )
指定索引方法的存储参数。
GsIVFFLAT
| 向量索引类型 | 函数名 | 描述 |
|---|---|---|
| GsIVFFLAT | ivfflatbeginscan | 读取索引根节点信息到内存,对于ivfflat读取元信息和各个聚簇中心点信息。 |
| ivfflatbuild | 创建基于数据聚类的倒排索引。 | |
| ivfflatbuildempty | 反馈空索引。 | |
| ivfflatbulkdelete | 将所有索引中的死元组进行删除,并且更新每个聚簇的插入位置为第一个有空闲的页。 | |
| ivfflatcostestimate | 针对IVFFLAT扫描过程进行代价评估。 | |
| ivfflatendscan | 清空索引扫描结构体上的变量并释放。 | |
| ivfflatgettuple | 此函数提供执行器获得一条索引数据,在其中实现IVFFLAT核心检索步骤。 | |
| ivfflatinsert | 将新的元组插入到现有索引中,维护IVF索引。 | |
| ivfflatoptions | 为索引解析并验证reloptions数组。 | |
| ivfflatrescan | 重置索引扫描结构体上的变量。 | |
| ivfflatvacuumcleanup | 更新IVFFLAT索引统计信息。 |
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。