Библиотека на C++ для масштабного приближённого поиска ближайших соседей по векторам с инструментами для построения индексов, поиска и распределённого обслуживания запросов.
NGT-labs/NGT
Библиотека на C++ и CLI для быстрого приближённого поиска ближайших соседей среди векторов высокой размерности с помощью графовых и древовидных индексов.
- Звёзды
- 1,376
- Форки
- 134
- Открытые issues
- 29
- Последний коммит
- 24 часа назад
Что это?
NGT предоставляет команды и библиотеку для приближённого поиска ближайших соседей в больших коллекциях векторов высокой размерности — обычно от десятков до тысяч измерений. Для поиска похожих объектов без сравнения запроса с каждым сохранённым элементом NGT строит индексы на основе графов окрестностей и деревьев.
В проекте доступны несколько методов: индекс на основе графа и дерева (NGT), метод графов с квантованием (QG) и метод графов с квантованными блоками (QBG), предназначенный для очень больших наборов данных. Поддерживаются следующие функции расстояния: L1, L2, cosine, angular, Hamming, Jaccard, inner product и гиперболические расстояния (Poincare и Lorentz). Векторы можно хранить в виде 4-байтовых или 2-байтовых чисел с плавающей запятой либо 1-байтовых беззнаковых целых чисел; индексы можно размещать в общей памяти с отображением в память.
NGT включает CLI, C++ API и биндинги для Python, Rust, Go, Ruby, PHP и JavaScript. После построения индекса в него можно добавлять объекты и удалять их. Сборка поддерживается в Linux, macOS и Windows через MinGW-w64/MSYS2; для QG и QBG требуются BLAS и LAPACK.
Ключевые возможности
- 01Приближённый поиск ближайших соседей с использованием графовых и древовидных индексов
- 02Поддержка расстояний L1, L2, cosine, angular, Hamming, Jaccard, inner product и гиперболических расстояний
- 03Добавление и удаление объектов после построения индекса
- 04Типы данных float32, float16 и uint8, а также продуктовое и скалярное квантование для графовых индексов
- 05Вариант индекса в общей памяти (файл с отображением в память) для больших наборов данных
- 06Биндинги для Python, Rust, Go, Ruby, PHP и JavaScript
Сценарии использования
- Поиск похожих изображений, документов или эмбеддингов по сходству векторов в собственной поисковой службе
- Обработка запросов поиска ближайших соседей из нескольких процессов, использующих общий индекс в памяти
- Поиск похожих векторов в наборах данных размером в миллиарды элементов с помощью метода QBG
- Создание прототипа векторного поиска через CLI или Python перед выбором более крупной системы
Быстрый старт
- 1
Установить на macOS с помощью Homebrew
brew install ngt - 2
Скачать архив с исходным кодом со страницы Releases
- 3
Настроить сборку в Linux без QG и QBG
cmake -DNGT_QBG_DISABLED=ON ..
Что важно знать
- Нативные сборки с Microsoft Visual C++ (MSVC) не поддерживаются; в настоящее время для Windows требуется MinGW-w64 и отключение QBG.
- Для работы QG и QBG требуются библиотеки BLAS и LAPACK; они запускаются только в Linux и macOS.
В подборках
Темы
Частые вопросы
- Что такое NGT?
- Библиотека на C++ и CLI для быстрого приближённого поиска ближайших соседей среди векторов высокой размерности с помощью графовых и древовидных индексов. NGT предоставляет команды и библиотеку для приближённого поиска ближайших соседей в больших коллекциях векторов высокой размерности — обычно от десятков до тысяч измерений. Для поиска похожих объектов без сравнения запроса с каждым сохранённым элементом NGT строит индексы на основе графов окрестностей и деревьев.
- NGT можно использовать бесплатно? Какая у него лицензия?
- NGT распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- NGT всё ещё поддерживается?
- Активно поддерживается. Последний коммит в NGT — 6 нояб. 2026 г..
- Для чего можно использовать NGT?
- Поиск похожих изображений, документов или эмбеддингов по сходству векторов в собственной поисковой службе Обработка запросов поиска ближайших соседей из нескольких процессов, использующих общий индекс в памяти Поиск похожих векторов в наборах данных размером в миллиарды элементов с помощью метода QBG Создание прототипа векторного поиска через CLI или Python перед выбором более крупной системы
- Как установить NGT?
- Установить на macOS с помощью Homebrew: brew install ngt Скачать архив с исходным кодом со страницы Releases Настроить сборку в Linux без QG и QBG: cmake -DNGT_QBG_DISABLED=ON ..
- Где скачать NGT?
- Исходный код и инструкции по установке — на GitHub: https://github.com/NGT-labs/NGT
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Расширение с открытым исходным кодом для поиска векторов по сходству в Postgres: храните эмбеддинги и выполняйте поиск рядом с реляционными данными.
Встраиваемая библиотека и база данных для мультимодального ИИ с векторным, полнотекстовым поиском и SQL-запросами по данным в формате Lance.
База данных для LLM-приложений с гибридным поиском по плотным и разреженным векторам, тензорам и полнотекстовым данным.
Библиотека на чистом Python для приближённого поиска ближайших соседей на основе Nearest Neighbor Descent с поддержкой множества метрик расстояния.
Header-only библиотека C++ с ускорением на CUDA и Python-обёртками для переиспользуемых примитивов машинного обучения, линейной алгебры и информационного поиска на GPU NVIDIA.