Расширение с открытым исходным кодом для поиска векторов по сходству в Postgres: храните эмбеддинги и выполняйте поиск рядом с реляционными данными.
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
Установите пакет с помощью pip
pip install pynndescent - 2
Создайте поисковый индекс по своим данным и выполните запрос для поиска 15 ближайших соседей
Что важно знать
- В README говорится, что проект ещё молодой, а документация продолжает развиваться.
- Проект предназначен для высокоточного приближённого поиска (точность 80–100%), а не для точного поиска.
Темы
Частые вопросы
- Что такое 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 обновляется ежедневно.
Похожие проекты
Встраиваемая библиотека и база данных для мультимодального ИИ с векторным, полнотекстовым поиском и SQL-запросами по данным в формате Lance.
Библиотека на C++ для масштабного приближённого поиска ближайших соседей по векторам с инструментами для построения индексов, поиска и распределённого обслуживания запросов.
Библиотека на C++ и CLI для быстрого приближённого поиска ближайших соседей среди векторов высокой размерности с помощью графовых и древовидных индексов.
Header-only библиотека на C++ с привязками для Python для быстрого приближённого поиска ближайших соседей с помощью алгоритма HNSW.
Расширение PostgreSQL на Rust с индексом на базе DiskANN и фильтрацией по меткам для более быстрого и дешёвого векторного поиска на основе pgvector.