Repolode
NGT-labs

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. 1

    Установить на macOS с помощью Homebrew

    brew install ngt
  2. 2

    Скачать архив с исходным кодом со страницы Releases

  3. 3

    Настроить сборку в Linux без QG и QBG

    cmake -DNGT_QBG_DISABLED=ON ..

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

  • Нативные сборки с Microsoft Visual C++ (MSVC) не поддерживаются; в настоящее время для Windows требуется MinGW-w64 и отключение QBG.
  • Для работы QG и QBG требуются библиотеки BLAS и LAPACK; они запускаются только в Linux и macOS.

В подборках

Темы

#approximate-nearest-neighbor-search#vector-search#knn#high-dimensional-data#c-plus-plus#indexing#k-nearest-neighbors#knn-search#nearest-neighbor-search#nearest-neighbors

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

Что такое 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 обновляется ежедневно.

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

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

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

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

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

Header-only библиотека C++ с ускорением на CUDA и Python-обёртками для переиспользуемых примитивов машинного обучения, линейной алгебры и информационного поиска на GPU NVIDIA.

1,1 тыс.+3 за неделю256CudaApache-2.0Активно поддерживаетсяОбновлён вчера