通过实现部分标量过滤功能,支持在上实现部分标量过滤功能,向量计算与标量过滤同处一个,充分利用并行计算能力(标量过滤本身是一个无状态操作,天然支持并行处理,并发能力受限于核数,但可以支持上千个线程的并发,所以在性能上体现出明显优势)资源管理优化,支持句柄机制,资源预先分配,一部分私有资源,包含保存向量检索中间计算结果的可读写内存、显存,以及单独的执行流;共享一份全局只读公有资源
在初始化阶段,创建 牙买加 WhatsApp 号码列表 句柄对象池,可以通过控制句柄数量,来调整服务端并发能力,避免服务被打爆在检索阶段,每次向量检索需从句柄对象池中申请一个空闲的句柄,然后进行后续的计算流程,并在执行完后释放响应的句柄,达到资源回收和重复利用的目的在单上性能优化后的检索性能与召回率如下(测试数据集同后置过滤):多并行检索除了以上优化方案,还可以考虑将数据分片,通过多并行检索,减少单卡计算量来提升检索性能;同时,多卡架构也能支持更大规模的向量数据检索
相比多机多卡的分架构,单机多卡可以有效减少网络传输开销,并且具有较低的索引加载复杂度,因此我们最终选择了单机多卡的数据分片方案,单台服务器部署多张,检索时并行从本地多张中检索数据,在内存中进行数据合并F6精度支持为了支持更大规模的向量数据检索,我们还在检索引擎上支持了半精度计算,使用F6替换原来的F进行计算,可以节省一半的显存占用,经验证F召回率由%下降到994%,依然满足需求
|