Faiss
Faiss 是由 Facebook 人工智能研究中心开发的一个高效的最近邻搜索和密集载体聚类库。它包含搜索任何大小的向量集的算法。它还包含用于计算和参数调优的支持代码。Faiss 是用 C + + 编写的,带Python/numpy 的完整包装器。一些最有用的算法是在 GPU 上实现的。
西笑生
西笑生
展开
-
Faiss的第三个示例 -IVFPQ
Faiss的第三个示例 -IVFPQflyfishimport mklmkl.get_max_threads()import numpy as npd = 64 # dimensionnb = 100000 # database sizenq = 10000 # nb of queriesnp.random.seed(1234)原创 2020-08-11 19:47:20 · 1446 阅读 · 0 评论 -
Faiss的第一个示例 Flat
Faiss的第一个示例 Flatflyfish代码分析将数据的维度变小,代码量变小以便分析import mklmkl.get_max_threads()import numpy as npd = 3# # dimensionnb = 10# # database sizenq = 2# # nb of queriesnp.random.seed(1234)原创 2020-08-10 18:10:10 · 489 阅读 · 0 评论 -
Faiss的第二个示例 IVFFlat
Faiss的第二个示例 IVFFlatimport mklmkl.get_max_threads()import numpy as npd = 64 # dimensionnb = 100000 # database sizenq = 10000 # nb of queriesnp.random.seed(1234) # make r原创 2020-08-11 19:47:04 · 1489 阅读 · 0 评论 -
Faiss 如何选择索引
Faiss 如何选择索引flyfish问题一:是否需要精确结果?如果是,那么应该使用 “Flat”能保证精确结果的只有 IndexFlatL2 或 IndexFlatIP(Inner Product). 它们作为其他索引的基线结果.问题二:是否关心内存?请记住,所有Faiss索引都存储在RAM中。 以下内容认为,如果不需要精确的结果,则RAM是限制因素,并且在内存限制内,我们优化了精度与速度之间的权衡。如果不在乎内存,那么应该使用 “HNSWx”如果你的内存很大,或数据集很小,那么 HNSW原创 2020-08-11 19:50:53 · 1141 阅读 · 0 评论 -
Faiss 相似度搜索使用余弦相似性
Faiss 相似度搜索使用余弦相似性flyfishFaiss提供了faiss.METRIC_INNER_PRODUCT 和faiss.METRIC_L2只需要我们代码加上normalize_L2IndexIVFFlat在参数选择时,使用faiss.METRIC_INNER_PRODUCT为了验证正确性,我们先使用其他方法实现1 使用numpy实现def cosine_similarity_custom1(x, y): x_y = np.dot(x, y.transpose())原创 2020-08-14 19:22:02 · 7356 阅读 · 0 评论 -
Faiss介绍和环境搭建
Faiss介绍和环境搭建flyfishFaiss是用于高效相似性搜索和密集向量聚类的库。 它包含的算法可搜索任意大小的向量集,最多可搜索到不适合RAM的向量。 它还包含用于评估和参数调整的支持代码。 Faiss用C ++编写,带有完整的Python包装(版本2和3)。 一些最有用的算法是在GPU上实现的。 它是由Facebook AI Research开发的。说明Faiss包含几种相似性搜索方法。假定实例表示为向量,并由整数标识,并且可以将向量与L2(欧几里得)距离或点积进行比较。 与查询向量相似原创 2020-08-10 18:09:10 · 1489 阅读 · 0 评论