向量索引重建期间,需要双倍内存空间进行伸缩。原80G向量索引需要160G内存空间才能重建。如何优化

【 使用环境 】生产环境
【 OB or 其他组件 】ob
【 使用版本 】4.4.2.1
【问题描述】
向量表,更新数据超过20%,就会触发自动重建向量索引。
期间会用原向量索引辅助查询。新建向量索引会耗费同样的内存。直到重建完毕,删除旧的索引。
如何优化这期间需要消耗的内存。

表大小1900w。

CREATE TABLE image_search_siglip (
id int(11) NOT NULL AUTO_INCREMENT,
product_id int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘业务关联id’,
image_id int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘图片表id:image_info表id’,
original int(11) NOT NULL DEFAULT ‘0’ COMMENT ‘图片业务来源代码:’,
int_attr1 int(11) DEFAULT ‘0’ COMMENT ‘检索字段 - int类型1’,
int_attr2 int(11) DEFAULT ‘0’ COMMENT ‘检索字段 - int类型2’,
int_attr3 int(11) DEFAULT ‘0’ COMMENT ‘检索字段 - int类型3’,
str_attr1 varchar(20) DEFAULT ‘’ COMMENT ‘检索字段- str类型1’,
str_attr2 varchar(20) DEFAULT ‘’ COMMENT ‘检索字段- str类型2’,
str_attr3 varchar(20) DEFAULT ‘’ COMMENT ‘检索字段- str类型3’,
embedding VECTOR(768) DEFAULT NULL,
create_time timestamp(3) NULL DEFAULT CURRENT_TIMESTAMP(3),
modify_time timestamp(3) NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE KEY uniq_product_id_image_id_original (product_id, image_id, original) BLOCK_SIZE 16384 LOCAL,
VECTOR KEY img_embedding_idx (embedding) WITH (DISTANCE=L2, TYPE=HNSW, M=64, EF_CONSTRUCTION=200, EF_SEARCH=64, LIB=VSAG) BLOCK_SIZE 16384,
VECTOR KEY idx_1788839097117867 (embedding) WITH (DISTANCE=L2, TYPE=HNSW, M=64, EF_CONSTRUCTION=200, EF_SEARCH=64, LIB=VSAG) BLOCK_SIZE 16384
) ORGANIZATION INDEX AUTO_INCREMENT = 19633432 AUTO_INCREMENT_MODE = ‘ORDER’ DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = ‘zstd_1.3.8’ REPLICA_NUM = 3 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE ENABLE_MACRO_BLOCK_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0

可以考虑改成 HNSW_SQ(千万级最划算)具体的可以参考官方文档 也可以看看这个
https://mp.weixin.qq.com/s/PjHthk6bcCn79B6yHxcL9g