深度学习-84-RAG技术之Facebook AI Similarity Search工具Faiss基础应用示例
文章目录
- 1 faiss介绍
-
- 1.1 Faiss基础依赖
- 1.2 Faiss工作原理
- 1.3 Train流程
- 1.4 Search流程
-
- 1.4.1 IndexFlatL2或IndexFlatIP
- 1.4.2 IndexIVFFlat
- 1.4.3 IndexIVFPQ
- 2 代码示例
-
- 2.1 基本参数设置
- 2.2 准备向量库向量
- 2.3 准备查询向量
- 2.4 构建向量库索引
- 2.5 相似向量查询
- 2.6 增删索引向量
- 2.7 保存加载索引
- 3 参考附录
1 faiss介绍
Faiss全称Facebook AI Similarity Search,是FaceBook的AI团队针对大规模向量进行TopK相似向量检索的一个工具,使用C++编写,有python接口,对10亿量级的索引可以做到毫秒级检索的性能。
使用faiss搭配合适的model和embedding函数,可以帮助我们构建人脸识别,相似图片检索,LLM知识库问答,推荐系统召回模块等应用。
faiss的主要原理是构建base vectors向量数据的index索引,然后利用索引对search vectors实现TopK相似向量检索。
faiss支持许多不同的构建索引的方式,以下是一些较推荐使用的类型。
(1)Flat:暴力精确检索,全局最优,适合数十万级。
(2)IVF100,Flat:倒排暴力检索(100聚类后暴力检索),非全局最优但召回高,适合数百万级。
(3)HNSW64: 图网络检索,Hierarchical NSW(Navigable Small World),每个节点64条边,检索复杂度log(logn),适合千万上亿规模以及更大规模的图索引,缺点是构建索引过程较慢,占用很大的存储。
一般来说cpu足够快了
pip ins