Repolode
NGT-labs

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. 1

    在 macOS 上通过 Homebrew 安装

    brew install ngt
  2. 2

    从 Releases 页面下载源码压缩包

  3. 3

    在 Linux 上配置构建(不含 QG 和 QBG)

    cmake -DNGT_QBG_DISABLED=ON ..

使用前须知

  • 不支持原生 Microsoft Visual C++ (MSVC) 构建;Windows 目前需要 MinGW-w64 并禁用 QBG。
  • QG 和 QBG 需要 BLAS 和 LAPACK 库,且仅支持 Linux 和 macOS。

收录于专题

标签

#approximate-nearest-neighbor-search#vector-search#knn#high-dimensional-data#c-plus-plus#indexing#k-nearest-neighbors#knn-search#nearest-neighbor-search#nearest-neighbors

常见问题

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 数据每日更新。

相关项目