跳到主要内容

向量索引概述

本文档介绍 seekdb 支持的向量索引类型及其特点。

索引类型

seekdb支持以下类型的向量索引:

  • 稠密索引
  • 稀疏索引

稠密索引

seekdb 支持稠密向量索引,包含 HNSW 系列和 IVF 系列。为方便阅读下文简称为稠密索引。

索引类型描述
HNSW索引列最大维度为 4096。HNSW 索引是内存索引,需要完整载入内存。
HNSW_SQHNSW_SQ 索引提供了和 HNSW 索引相近的构建速度,搜索性能,召回率,但总的内存使用降低到原本的 1/2~1/3。
HNSW_BQHNSW_BQ 索引的召回率略低于 HNSW 索引,但显著减少了内存占用。BQ 量化压缩算法(Rabitq)能将向量压缩至原大小的 1/32,随着向量维度增加,HNSW_BQ 索引的内存优化效果更明显。
IVF基于数据库表实现的 IVF 索引,可不占用常驻内存。
IVF_PQ基于数据库表实现的 IVF_PQ 索引,可不占用常驻内存。在 IVF 基础上应用了 PQ 量化技术,索引的召回率略低于 IVF 索引,性能高于 IVF 索引,同时 PQ 量化压缩算法普遍场景下能将向量压缩至原大小的 1/16 ~ 1/32。

稀疏索引

seekdb 当前版本支持基于内存的稀疏向量索引,为方便阅读简称为内存稀疏索引。内存稀疏索引是 seekdb 针对稀疏向量数据(大部分元素为零的向量)提供的高效索引类型,需要将索引完整的载入内存,支持 DML 和实时搜索。

提示

内存稀疏索引在当前版本为实验特性,不建议在生产环境使用。

说明与限制

  • 距离算法:稠密向量索引支持 L2、内积(IP)、余弦距离作为索引距离算法。
  • 距离函数:向量索引搜索支持调用部分距离函数,具体请参见 使用 SQL 函数
  • 过滤条件:支持带有过滤条件的向量搜索。过滤条件可以是标量类型的条件,可以是空间关系,如 ST_Intersects 等。暂不支持多值索引/全文索引/全局索引作为预过滤器。
  • Offline DDL:向量索引对 Offline DDL 的支持情况请见 Offline DDL
  • 列存索引:当前版本暂不支持创建列存向量索引。

相关文档