Isearch 向量检索
参考手册 V1.1.0
目录
一、 引言 ........................................................................................................................................3
二、 索引命名规则 ........................................................................................................................3
(一) 前缀 ............................................................................................................................4
(二) 向量转换规则.............................................................................................................4
(三) 非穷举检索类型规则.................................................................................................4
(四) 向量编码规则.............................................................................................................5
(五) 后缀 ............................................................................................................................6
三、 选型策略 ................................................................................................................................6
四、 Isearch 可用索引....................................................................................................................7
五、 Isearch 向量服务及工具介绍 ................................................................................................8
六、 参考文档 ..............................................................................................................................10
一、引言
向量检索是指用一组数字(向量)来量化一个事物,用大量向量来表示事物集合,用
向量计算的方式寻找相似事物的一种检索方式。
向量检索主要处理非结构化数据(如图片、视频、语音、文本等)的分析与检索(商品
图片检索,推荐,声纹匹配,人脸识别等)。
目前主流的框架有 Facebook AI 的 Faiss、Google 的 ScaNN、Microsoft AI lab 的 SPTAG
等。
FAISS 支持开发人员对检索速度、内存使用和检索精度等的优化设置。但它仅仅是
一个算法库,并且对开发人员有较高的使用要求。
SPTAG 的优点是搜索速度快,毫秒内智能搜索数十亿条向量,并且在查询精确度
和内存占用上表现佳。但缺点也很明显,其建图时间长,而且每此添加新向量进数据库,
必须重新建图。
现有的实现也都还只是算法库,而并非一个系统。随着 AI 应用的大规模落地,提
供一个面向海量特征向量检索的数据库系统,已经是市场对于数据库厂商提出的新需求。
目前 Isearch 检索系统只支持标量数据的检索,本项目在 Isearch 已有功能的基础上
新增对向量检索数据的支持。
二、索引命名规则
向量检索服务配置文件 app_field_define.json 字段”indexType”缩写规则,严格遵守
Faiss 的索引命名规则。保证索引类型选型一致性,可减少学习成本,代码易维护,可
读性强,拓展性强。
索引命名规则,包括 5 处顺序部分,依次为:(1)前缀(2)向量转换规则(3)
非穷举检索类型规则(4)向量编码规则(5)后缀。各部分以逗号(“,”)作为分隔符。
有效命名,需包含(3)中非粗量化器 或(3)中粗量化器 +(4)任意缩写,其他
规则部分,视性能要求适度选择。index_model_trainer 服务,提供训练索引模型文件功
能的同时,也可检查索引命名规则有效性,见第五章。
文档中涉及到的特殊符合说明,如下:
*:代表任意大小的整数,正则由([0-9]+)表示
*1:占位作用,占第一个数字位,依此类推
(...):符合索引命名规则的缩写全称
示例说明,有效索引 A 命名规则如下:
”IDMap,OPQ16_64,IVF512(PQ32x4fs,RFlat),PQ16x4fsr,Refine(OPQ56_112,PQ56)”
IDMap,:A 的前缀,代表适配 add_with_ids()函数;
OPQ16_64:A 的向量转换规则为“OPQ*1_*2”,详情见下表二;
IVF512(PQ32x4fs,RFlat):A 的非穷举检索类型规则为“IVF*1(...)”,详情见下表三;
PQ16x4fsr:A 的向量编码规则为“PQ*1x4fsr”,详情见下表四;
Refine(OPQ56_112,PQ56):A 的后缀为“Refine(...)”,详情见下表五;
(一)前缀
(1)前缀