faiss 实时建库(索引)

常用有2种实现方式:

方式1:merge方式     

  • 采用多分片的方式,在内存中建一个小分片,当内存使用达到一定量时,把索引刷到磁盘上
  • 根据索引的大小,针对量级差异较小的做数据merge  , merge函数

    https://github.com/liqima/faiss_note/blob/master/4.Faiss%20indexes%20%E8%BF%9B%E9%98%B6%E6%93%8D%E4%BD%9C.ipynb

  • 需要注意的点: 
    • 预先训练模型,在内存中和刷磁盘上的模型一致。
    • 实时训练模型,内存中使用flat模式,在刷磁盘和归并时,训练模型,这种不同的块中的模型不同,不具有可对比性,需要上层在重新计算距离。

方式2:

  • 预先训练模型
  • 针对倒排采用预分配空间的方式实现。
  • 优点: 建库和搜索更实时,而且没有归并开销,没有训练开销。
  • 缺点:对faiss索引修改较大,有一定的内存开销。
  • 为了实现数据持久化,可以考虑放到共享内存中,达到一定大小再落到磁盘上。
  • 预分空间的实现方式,在原有倒排中保存的是偏移信息,指向实际数据,实际内存的分片采用大块分配,方便管理避免小块内存影响性能(考虑性能和内存浪费情况)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值