FAISS 是 Meta/Facebook AI Research 开源的向量相似度搜索库,用 C++ 编写并提供 Python 绑定,面向百万到十亿级向量的快速相似检索。
用途:当需要对大规模向量数据集做快速相似搜索、需要 GPU 加速、只需纯向量相似(无需元数据过滤)、对高吞吐低延迟有要求,或做嵌入的离线/批处理时,适合使用 FAISS。若需要元数据过滤可选 Chroma/Pinecone,需要完整数据库功能可选 Weaviate,想要更简单少功能可选 Annoy。
主要能力:提供多种索引类型。Flat 为精确搜索,含 L2 距离的 IndexFlatL2 与内积的 IndexFlatIP(向量归一化后可作余弦相似度),最慢但最准。IVF 倒排文件为快速近似搜索,需先 train 再 add,通过 nprobe 控制搜索簇数。HNSW 分层 NSW 质量与速度较均衡,无需训练。PQ 乘积量化可把内存降低约 16–32 倍,需训练。索引可用 faiss.write_index 保存、faiss.read_index 加载。GPU 方面可用 StandardGpuResources 与 index_cpu_to_gpu 做单卡加速,或用 index_cpu_to_all_gpus 做多卡,资料称比 CPU 快 10–100 倍。
使用方式:CPU 安装 pip install faiss-cpu,GPU 安装 pip install faiss-gpu。基本流程为创建索引、add 添加向量、search 查询返回距离与近邻下标。也可与 LangChain 集成(FAISS.from_documents、save_local、load_local,加载时需 allow_dangerous_deserialization=True)或与 LlamaIndex 集成(FaissVectorStore)。
适用场景与限制:适合纯向量检索、批处理与 GPU 加速场景。资料给出的性能参考为 Flat 构建快、搜索慢、内存高、准确率 100%;IVF 中等构建、快搜索、中等内存、95–99%;HNSW 构建慢、搜索最快、内存高、99%;PQ 中等构建、快搜索、低内存、90–95%。最佳实践包括按规模选索引(小于 1 万用 Flat,1 万至 100 万用 IVF,重质量用 HNSW)、余弦相似用归一化向量配 IndexFlatIP、大数据用 GPU、保存已训练索引、调 nprobe/ef_search 平衡速度与精度、大数据用 PQ 控内存、批量查询提升 GPU 利用率。项目采用 MIT 许可证。其他细节暂未提供。