Repolode
lmcinnes

lmcinnes/pynndescent

Библиотека на чистом Python для приближённого поиска ближайших соседей на основе Nearest Neighbor Descent с поддержкой множества метрик расстояния.

Звёзды
975
Форки
116
Открытые issues
90
Последний коммит
18 часов назад

Что это?

PyNNDescent строит граф k ближайших соседей и выполняет по нему приближённый поиск. Библиотека реализует Nearest Neighbor Descent: для начальной инициализации используются деревья случайных проекций, а длинные рёбра треугольников в графе отсекаются, чтобы улучшить результат. Она предназначена для задач, где нужна высокая точность — примерно от 80% до 100% полноты.

Интерфейс лаконичный: создайте индекс с помощью NNDescent(data), затем вызовите index.query(query_data, k=15). Индексы можно сохранять на диск с помощью pickle. Библиотека поддерживает широкий набор метрик «из коробки», включая евклидово расстояние, расстояние Манхэттена, косинусное расстояние, расстояние Хэмминга, Жаккара и Вассерштейна, а также пользовательские функции расстояния.

Библиотеку можно установить через pip или conda. Она интегрируется со scikit-learn, в том числе предоставляет KNeighborTransformer, который может заменить другие компоненты для поиска ближайших соседей.

Ключевые возможности

  • 01Строит графы k ближайших соседей с помощью Nearest Neighbor Descent и начальной инициализации деревьями случайных проекций.
  • 02Поддерживает множество встроенных метрик расстояния, в том числе для бинарных данных и вероятностей.
  • 03Принимает пользовательские функции расстояния.
  • 04Предлагает минималистичный API для построения индексов и поиска k ближайших соседей.
  • 05Интегрируется со scikit-learn в виде KNeighborTransformer.

Сценарии использования

  • Поиск похожих объектов по высокоразмерным векторам эмбеддингов для поиска или рекомендаций.
  • Выполнение вычислений ближайших соседей в конвейерах scikit-learn.
  • Построение графов k ближайших соседей для последующих задач, например кластеризации или обучения многообразий.
  • Поиск с использованием неевклидовых метрик, например косинусного расстояния, расстояния Жаккара или Вассерштейна.

Быстрый старт

  1. 1

    Установите пакет с помощью pip

    pip install pynndescent
  2. 2

    Создайте поисковый индекс по своим данным и выполните запрос для поиска 15 ближайших соседей

Что важно знать

  • В README говорится, что проект ещё молодой, а документация продолжает развиваться.
  • Проект предназначен для высокоточного приближённого поиска (точность 80–100%), а не для точного поиска.

Темы

#approximate-nearest-neighbor#nearest-neighbor-search#knn-graph#similarity-search#scikit-learn#numba#approximate-nearest-neighbor-search#knn-graphs

Частые вопросы

Что такое pynndescent?
Библиотека на чистом Python для приближённого поиска ближайших соседей на основе Nearest Neighbor Descent с поддержкой множества метрик расстояния. PyNNDescent строит граф k ближайших соседей и выполняет по нему приближённый поиск. Библиотека реализует Nearest Neighbor Descent: для начальной инициализации используются деревья случайных проекций, а длинные рёбра треугольников в графе отсекаются, чтобы улучшить результат. Она предназначена для задач, где нужна высокая точность — примерно от 80% до 100% полноты.
pynndescent можно использовать бесплатно? Какая у него лицензия?
pynndescent распространяется с открытым исходным кодом под лицензией BSD-2-Clause. Перед использованием в коммерческих продуктах проверьте условия лицензии.
pynndescent всё ещё поддерживается?
Активно поддерживается. Последний коммит в pynndescent — 6 нояб. 2026 г..
Для чего можно использовать pynndescent?
Поиск похожих объектов по высокоразмерным векторам эмбеддингов для поиска или рекомендаций. Выполнение вычислений ближайших соседей в конвейерах scikit-learn. Построение графов k ближайших соседей для последующих задач, например кластеризации или обучения многообразий. Поиск с использованием неевклидовых метрик, например косинусного расстояния, расстояния Жаккара или Вассерштейна.
Как установить pynndescent?
Установите пакет с помощью pip: pip install pynndescent Создайте поисковый индекс по своим данным и выполните запрос для поиска 15 ближайших соседей
Где скачать pynndescent?
Исходный код и инструкции по установке — на GitHub: https://github.com/lmcinnes/pynndescent

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Расширение с открытым исходным кодом для поиска векторов по сходству в Postgres: храните эмбеддинги и выполняйте поиск рядом с реляционными данными.

23,6 тыс.+65 за неделю1,4 тыс.COtherАктивно поддерживаетсяОбновлён позавчера

Библиотека на C++ для масштабного приближённого поиска ближайших соседей по векторам с инструментами для построения индексов, поиска и распределённого обслуживания запросов.

5 тыс.625C++MITОбновлён вчера

Библиотека на C++ и CLI для быстрого приближённого поиска ближайших соседей среди векторов высокой размерности с помощью графовых и древовидных индексов.

1,4 тыс.133C++Apache-2.0Активно поддерживаетсяОбновлён вчера