一个 C++ 大规模近似最近邻向量检索库,提供索引构建、搜索和分布式在线服务工具。
NGT-labs/NGT
基于图与树索引的 C++ 高维向量近似最近邻搜索库及命令行工具。
- Star
- 1,376
- Fork
- 134
- 未关闭 Issue
- 29
- 最近提交
- 22小时前
这是什么?
NGT 提供命令行工具和库,用于在大规模高维向量数据中进行近似最近邻搜索,常见维度从几十到几千不等。它通过构建邻域图和树结构索引,无需将查询与所有数据逐一比较即可找到相似对象。
项目包含多种方法:基于图与树的 NGT 索引、量化图方法 QG,以及面向超大规模数据的量化 Blob 图方法 QBG。支持的距离函数包括 L1、L2、余弦、角度、Hamming、Jaccard、内积以及双曲空间的 Poincare 和 Lorentz 距离。向量可以以 4 字节或 2 字节浮点数,或 1 字节无符号整数存储,索引还可放入内存映射的共享内存中。
除 CLI 和 C++ API 外,NGT 还提供 Python、Rust、Go、Ruby、PHP 和 JavaScript 等语言的绑定。索引构建后仍可增删对象。支持 Linux、macOS 以及通过 MinGW-w64/MSYS2 构建的 Windows 版本,其中 QG 和 QBG 依赖 BLAS 与 LAPACK。
核心功能
- 01基于图与树索引的近似最近邻搜索
- 02支持 L1、L2、余弦、角度、Hamming、Jaccard、内积及双曲距离
- 03索引构建后仍可增加和删除对象
- 04支持 float32、float16 和 uint8 数据类型,图索引支持乘积量化与标量量化
- 05可将索引放入内存映射的共享内存,处理超出内存容量的数据
- 06提供 Python、Rust、Go、Ruby、PHP、JavaScript 等语言绑定
适用场景
- 在自定义搜索服务中,基于向量相似度查找相似图片、文档或嵌入表示
- 多个进程共享同一内存索引,提供最近邻查询服务
- 使用 QBG 方法对数十亿级向量进行相似性搜索
- 在选定更大型系统前,通过命令行或 Python 验证向量检索方案
快速上手
- 1
在 macOS 上通过 Homebrew 安装
brew install ngt - 2
从 Releases 页面下载源码压缩包
- 3
在 Linux 上配置构建(不含 QG 和 QBG)
cmake -DNGT_QBG_DISABLED=ON ..
使用前须知
- 不支持原生 Microsoft Visual C++ (MSVC) 构建;Windows 目前需要 MinGW-w64 并禁用 QBG。
- QG 和 QBG 需要 BLAS 和 LAPACK 库,且仅支持 Linux 和 macOS。
收录于专题
标签
常见问题
- NGT 是什么?
- 基于图与树索引的 C++ 高维向量近似最近邻搜索库及命令行工具。 NGT 提供命令行工具和库,用于在大规模高维向量数据中进行近似最近邻搜索,常见维度从几十到几千不等。它通过构建邻域图和树结构索引,无需将查询与所有数据逐一比较即可找到相似对象。
- NGT 可以免费使用吗?用的什么许可证?
- NGT 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- NGT 还在维护吗?
- 活跃维护中。NGT 最近一次提交是在 2026年11月6日。
- NGT 适合用来做什么?
- 在自定义搜索服务中,基于向量相似度查找相似图片、文档或嵌入表示 多个进程共享同一内存索引,提供最近邻查询服务 使用 QBG 方法对数十亿级向量进行相似性搜索 在选定更大型系统前,通过命令行或 Python 验证向量检索方案
- NGT 怎么安装和运行?
- 在 macOS 上通过 Homebrew 安装: brew install ngt 从 Releases 页面下载源码压缩包 在 Linux 上配置构建(不含 QG 和 QBG): cmake -DNGT_QBG_DISABLED=ON ..
- 在哪里获取 NGT?
- 源代码和安装说明在 GitHub 上:https://github.com/NGT-labs/NGT
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
为 Postgres 提供向量相似度搜索的开源扩展,可与关系型数据存放在一起。
面向多模态 AI 的嵌入式检索库与数据库,支持向量、全文和 SQL 查询,数据基于 Lance 列式格式存储。
面向大模型应用的 AI 原生数据库,支持稠密向量、稀疏向量、张量与全文的混合检索。
基于 Nearest Neighbor Descent 的纯 Python 近似最近邻搜索库,支持多种距离度量。
面向 NVIDIA GPU 的 CUDA 加速可复用基础算法与原语库,涵盖机器学习、线性代数和信息检索。