faiss用于大数据量的向量检索
背景:10亿(Billion级别)的数据应该是一个很大的数据了,尤其是维度在768+级别(还有1024,1536等),这个数据量我做了一个实验,shape为(1kw,768)的array(numpy)占内存为30G(float32格式),如果能降低为float16更好不过,但似乎faiss没有这种方法或者精度有所损失。
那么对于5亿级别的数据(vectors),占内存则为1500G,我相信目前似乎没有这么大的机器,我只见过500G,700G,甚至900G的机器,而且是8卡GPU的服务器才有的内存。这已经超出了一般的数据量了。
当然也可采用ES集群部署,但是感觉有点费资源。维护也是需要的,可能会宕机。
愿我们终有重逢之时,而你还记得我们曾经讨论的话题。
Q group 868373192
Q second group 277356808
下面是代码分享:
import faiss # make faiss available
index = faiss.IndexFlatL2(d) # build the index, d=size of vec