向量索引概述
本文档介绍 seekdb 支持的向量索引类型及其特点。
索引类型
seekdb支持以下类型的向量索引:
- 稠密索引
- 稀疏索引
稠密索引
seekdb 支持稠密向量索引,包含 HNSW 系列和 IVF 系列。为方便阅读下文简称为稠密索引。
| 索引类型 | 描述 |
|---|---|
| HNSW | 索引列最大维度为 4096。HNSW 索引是内存索引,需要完整载入内存。 |
| HNSW_SQ | HNSW_SQ 索引提供了和 HNSW 索引相近的构建速度,搜索性能,召回率,但总的内存使用降低到原本的 1/2~1/3。 |
| HNSW_BQ | HNSW_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。
- 列存索引:当前版本暂不支持创建列存向量索引。