Repolode
nmslib

nmslib/hnswlib

基于 HNSW 图算法的近似最近邻搜索库,提供 C++ 头文件实现和 Python 绑定。

Star
5,364
Fork
862
未关闭 Issue
311
最近提交
2个月前

这是什么?

Hnswlib 是一个纯头文件的 C++ 库,实现了用于近似最近邻搜索的分层可导航小世界图(HNSW)算法。它把高维向量组织成图结构,使查找与查询向量最接近的结果比暴力比对快得多,代价是返回的结果是近似最近邻而非精确结果。

该库提供基于 NumPy 数组的 Python 绑定,支持 L2、内积和余弦距离。索引可以增量构建,通过相同标签重新插入来更新向量,也可以标记删除元素,并保存到磁盘或从磁盘加载。Python 索引还支持 pickle 序列化。C++ 端可以自定义距离函数。

C++ 核心除 C++11 外没有其他依赖。较新的版本增加了基于流的保存与加载接口,以及可在 -fno-exceptions 编译下使用的无异常 API。

核心功能

  • 01纯头文件 C++ 实现,除 C++11 外无其他依赖。
  • 02提供 NumPy 数组的 Python 绑定,支持 L2、内积和余弦距离。
  • 03支持增量插入、按标签更新向量以及标记删除。
  • 04索引可保存到磁盘或从磁盘加载,Python 端支持 pickle。
  • 05支持带过滤条件的搜索,C++ 端可自定义距离函数。

适用场景

  • 为embedding向量构建语义搜索或推荐后端。
  • 依据特征向量查找相似图片或商品。
  • 在 C++ 应用中加入快速最近邻索引,且无需引入大型依赖。
  • 维护需要频繁增删改的向量索引。

使用前须知

  • README 描述的是 0.10.0rc2 版本,这是候选发布版,不应视为稳定版本。
  • 在 Python 中使用过滤搜索时受 GIL 限制,多线程模式下运行较慢。

收录于专题

标签

常见问题

hnswlib 是什么?
基于 HNSW 图算法的近似最近邻搜索库,提供 C++ 头文件实现和 Python 绑定。 Hnswlib 是一个纯头文件的 C++ 库,实现了用于近似最近邻搜索的分层可导航小世界图(HNSW)算法。它把高维向量组织成图结构,使查找与查询向量最接近的结果比暴力比对快得多,代价是返回的结果是近似最近邻而非精确结果。
hnswlib 可以免费使用吗?用的什么许可证?
hnswlib 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
hnswlib 还在维护吗?
半年内有更新。hnswlib 最近一次提交是在 2026年9月15日。
hnswlib 适合用来做什么?
为embedding向量构建语义搜索或推荐后端。 依据特征向量查找相似图片或商品。 在 C++ 应用中加入快速最近邻索引,且无需引入大型依赖。 维护需要频繁增删改的向量索引。
在哪里获取 hnswlib?
源代码和安装说明在 GitHub 上:https://github.com/nmslib/hnswlib

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目