Repolode
nmslib

nmslib/hnswlib

Header-only библиотека на C++ с привязками для Python для быстрого приближённого поиска ближайших соседей с помощью алгоритма HNSW.

Звёзды
5,364
Форки
862
Открытые issues
311
Последний коммит
2 месяца назад

Что это?

Hnswlib — header-only реализация графов Hierarchical Navigable Small World (HNSW) на C++ для приближённого поиска ближайших соседей. Она индексирует векторы высокой размерности, позволяя находить ближайшие к вектору запроса совпадения гораздо быстрее, чем при полном переборе, но результаты при этом будут приблизительными, а не точными.

В библиотеку входят привязки для Python, работающие с массивами NumPy и поддерживающие расстояния L2, скалярное произведение и косинусное расстояние. Индексы можно строить постепенно, обновлять повторной вставкой меток, помечать как удалённые, а также сохранять на диск и загружать с него. Индексы Python также можно сериализовать с помощью pickle. В C++ можно задавать собственные функции расстояния.

Ядро на C++ не имеет зависимостей, кроме C++11. В последних версиях добавлены сохранение и загрузка через потоки, а также необязательный API без исключений для сборок с флагом -fno-exceptions.

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

  • 01Реализация на C++ в одном заголовочном файле без зависимостей, кроме C++11.
  • 02Привязки для Python, работающие с массивами NumPy и поддерживающие расстояния L2, скалярное произведение и косинусное расстояние.
  • 03Постепенная вставка, обновление существующих меток и пометка элементов как удалённых.
  • 04Сохранение индексов на диск и загрузка с диска, а также поддержка pickle в Python.
  • 05Поиск с фильтрацией с помощью булевой функции и пользовательские функции расстояния в C++.

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

  • Создание бэкенда семантического поиска или рекомендаций на основе векторов эмбеддингов.
  • Поиск похожих изображений или товаров по их векторным признакам.
  • Добавление быстрого индекса ближайших соседей в приложение на C++ без подключения крупной зависимости.
  • Поддержка векторного индекса, в который часто добавляют, обновляют или из которого удаляют элементы.

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

  • В README описана версия 0.10.0rc2 — кандидат на выпуск, который не следует считать стабильным релизом.
  • Фильтрованный поиск в Python ограничен GIL и работает медленно в многопоточном режиме.

В подборках

Темы

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

Что такое hnswlib?
Header-only библиотека на C++ с привязками для Python для быстрого приближённого поиска ближайших соседей с помощью алгоритма HNSW. Hnswlib — header-only реализация графов Hierarchical Navigable Small World (HNSW) на C++ для приближённого поиска ближайших соседей. Она индексирует векторы высокой размерности, позволяя находить ближайшие к вектору запроса совпадения гораздо быстрее, чем при полном переборе, но результаты при этом будут приблизительными, а не точными.
hnswlib можно использовать бесплатно? Какая у него лицензия?
hnswlib распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
hnswlib всё ещё поддерживается?
Обновлялся за последние 6 месяцев. Последний коммит в hnswlib — 15 сент. 2026 г..
Для чего можно использовать hnswlib?
Создание бэкенда семантического поиска или рекомендаций на основе векторов эмбеддингов. Поиск похожих изображений или товаров по их векторным признакам. Добавление быстрого индекса ближайших соседей в приложение на C++ без подключения крупной зависимости. Поддержка векторного индекса, в который часто добавляют, обновляют или из которого удаляют элементы.
Где скачать hnswlib?
Исходный код и инструкции по установке — на GitHub: https://github.com/nmslib/hnswlib

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

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

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

5 тыс.625C++MITОбновлён 22 часа назад

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

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

Однофайловая библиотека на C++ для приближённого поиска ближайших соседей и кластеризации векторов с биндингами для Python, JavaScript, Rust, Java, Go, Swift и других языков.

4,4 тыс.+8 за неделю372C++Apache-2.0Активно поддерживаетсяОбновлён 6 дней назад