Repolode
lmcinnes

lmcinnes/pynndescent

基于 Nearest Neighbor Descent 的纯 Python 近似最近邻搜索库,支持多种距离度量。

Star
975
Fork
116
未关闭 Issue
90
最近提交
22小时前

这是什么?

PyNNDescent 构建 k 近邻图,并基于该图进行近似最近邻查询。它实现了 Nearest Neighbor Descent 算法,使用随机投影树进行初始化,并通过剪除图中三角形的最长边来优化结果,目标是较高的召回精度,大约在 80% 到 100% 之间。

接口很简洁:用 NNDescent(data) 构建索引,再调用 index.query(query_data, k=15) 进行查询。索引可以序列化后保存到磁盘。库内置了欧氏距离、曼哈顿距离、余弦距离、Hamming、Jaccard、Wasserstein 等多种度量,也支持自定义距离函数。

项目可通过 pip 或 conda 安装,并可与 scikit-learn 集成,其中的 KNeighborTransformer 可替代其他近邻计算组件。

核心功能

  • 01基于 Nearest Neighbor Descent 构建 k 近邻图,并使用随机投影树初始化。
  • 02内置多种距离度量,包括二值数据和概率类度量。
  • 03支持用户自定义距离函数。
  • 04接口简单,包含索引构建和 k 近邻查询两个核心操作。
  • 05可与 scikit-learn 集成,作为 KNeighborTransformer 使用。

适用场景

  • 在高维嵌入向量中查找相似条目,用于搜索或推荐。
  • 在 scikit-learn 流程中执行最近邻计算。
  • 为聚类或流形学习等下游任务构建 k 近邻图。
  • 使用余弦、Jaccard、Wasserstein 等非欧氏距离进行检索。

快速上手

  1. 1

    使用 pip 安装该包

    pip install pynndescent
  2. 2

    在数据上构建搜索索引,并查询 15 个最近邻

使用前须知

  • README 称该项目仍处于早期阶段,文档仍在完善中。
  • 它面向高精度的近似搜索(准确率 80%-100%),而非精确搜索。

标签

常见问题

pynndescent 是什么?
基于 Nearest Neighbor Descent 的纯 Python 近似最近邻搜索库,支持多种距离度量。 PyNNDescent 构建 k 近邻图,并基于该图进行近似最近邻查询。它实现了 Nearest Neighbor Descent 算法,使用随机投影树进行初始化,并通过剪除图中三角形的最长边来优化结果,目标是较高的召回精度,大约在 80% 到 100% 之间。
pynndescent 可以免费使用吗?用的什么许可证?
pynndescent 以 BSD-2-Clause 许可证开源。用于商业产品前,请先确认许可证条款。
pynndescent 还在维护吗?
活跃维护中。pynndescent 最近一次提交是在 2026年11月6日。
pynndescent 适合用来做什么?
在高维嵌入向量中查找相似条目,用于搜索或推荐。 在 scikit-learn 流程中执行最近邻计算。 为聚类或流形学习等下游任务构建 k 近邻图。 使用余弦、Jaccard、Wasserstein 等非欧氏距离进行检索。
pynndescent 怎么安装和运行?
使用 pip 安装该包: pip install pynndescent 在数据上构建搜索索引,并查询 15 个最近邻
在哪里获取 pynndescent?
源代码和安装说明在 GitHub 上:https://github.com/lmcinnes/pynndescent

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

相关项目