Библиотека на чистом Python для приближённого поиска ближайших соседей на основе Nearest Neighbor Descent с поддержкой множества метрик расстояния.
microsoft/SPTAG
Библиотека на C++ для масштабного приближённого поиска ближайших соседей по векторам с инструментами для построения индексов, поиска и распределённого обслуживания запросов.
- Звёзды
- 5,021
- Форки
- 625
- Открытые issues
- 143
- Последний коммит
- позавчера
Что это?
SPTAG (Space Partition Tree And Graph) — библиотека для приближённого поиска ближайших соседей среди векторов. Такой поиск используется в семантическом поиске и рекомендательных системах. На вход подаётся вектор запроса, а библиотека возвращает сохранённые векторы с наименьшим расстоянием L2 или косинусным расстоянием. Небольшая потеря точности позволяет выполнять поиск гораздо быстрее, чем при полном переборе.
В библиотеке есть два варианта индекса: SPTAG-KDT использует kd-деревья и требует меньше затрат на построение индекса, а SPTAG-BKT использует сбалансированные k-means-деревья и рассчитан на более точный поиск по данным очень высокой размерности. Оба варианта сочетают дерево разбиения пространства с графом относительных соседей, чередуя обход этих структур для поиска результатов.
Библиотека поддерживает вставку и удаление векторов на лету без полного перестроения индекса и позволяет распределять поиск между несколькими машинами. В её состав входят Python-обёртка; сборка поддерживается в Linux, Windows и Docker.
Ключевые возможности
- 01Поддерживает метрики расстояния L2 и косинусного сходства для сравнения векторов.
- 02Предлагает варианты индекса на основе kd-дерева (SPTAG-KDT) и сбалансированного k-means-дерева (SPTAG-BKT).
- 03Позволяет добавлять и удалять векторы на лету без перестроения индекса.
- 04Распределяет поиск между несколькими машинами для обслуживания запросов.
- 05Включает Python-обёртку и руководство по созданию сервиса онлайн-поиска по векторам.
Сценарии использования
- Создание масштабируемого бэкенда семантического поиска по векторным эмбеддингам.
- Обслуживание запросов на поиск ближайших соседей для рекомендаций или поиска похожих изображений.
- Индексация часто меняющихся наборов данных, которым нужны обновления на лету.
- Выполнение векторного поиска на нескольких машинах, когда индекс не помещается на одной.
Быстрый старт
- 1
Клонируйте репозиторий вместе с его подмодулями
git clone --recurse-submodules https://github.com/microsoft/SPTAG - 2
Соберите проект с помощью CMake из каталога build (требуются swig, cmake и boost)
mkdir build && cd build && cmake -DSPDK=OFF -DROCKSDB=OFF .. && make - 3
Запустите бинарный файл SPTAGTest в папке Release, чтобы проверить сборку
Что важно знать
- Для сборки из исходного кода требуются swig, cmake и boost; инструкции для Linux и Windows различаются.
- Для быстрого клонирования репозитория необходимы Git LFS и подмодули.
В подборках
Темы
Частые вопросы
- Что такое SPTAG?
- Библиотека на C++ для масштабного приближённого поиска ближайших соседей по векторам с инструментами для построения индексов, поиска и распределённого обслуживания запросов. SPTAG (Space Partition Tree And Graph) — библиотека для приближённого поиска ближайших соседей среди векторов. Такой поиск используется в семантическом поиске и рекомендательных системах. На вход подаётся вектор запроса, а библиотека возвращает сохранённые векторы с наименьшим расстоянием L2 или косинусным расстоянием. Небольшая потеря точности позволяет выполнять поиск гораздо быстрее, чем при полном переборе.
- SPTAG можно использовать бесплатно? Какая у него лицензия?
- SPTAG распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- SPTAG всё ещё поддерживается?
- Активно поддерживается. Последний коммит в SPTAG — 6 нояб. 2026 г..
- Для чего можно использовать SPTAG?
- Создание масштабируемого бэкенда семантического поиска по векторным эмбеддингам. Обслуживание запросов на поиск ближайших соседей для рекомендаций или поиска похожих изображений. Индексация часто меняющихся наборов данных, которым нужны обновления на лету. Выполнение векторного поиска на нескольких машинах, когда индекс не помещается на одной.
- Как установить SPTAG?
- Клонируйте репозиторий вместе с его подмодулями: git clone --recurse-submodules https://github.com/microsoft/SPTAG Соберите проект с помощью CMake из каталога build (требуются swig, cmake и boost): mkdir build && cd build && cmake -DSPDK=OFF -DROCKSDB=OFF .. && make Запустите бинарный файл SPTAGTest в папке Release, чтобы проверить сборку
- Где скачать SPTAG?
- Исходный код и инструкции по установке — на GitHub: https://github.com/microsoft/SPTAG
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Header-only библиотека на C++ с привязками для Python для быстрого приближённого поиска ближайших соседей с помощью алгоритма HNSW.
Библиотека на C++ и CLI для быстрого приближённого поиска ближайших соседей среди векторов высокой размерности с помощью графовых и древовидных индексов.
Однофайловая библиотека на C++ для приближённого поиска ближайших соседей и кластеризации векторов с биндингами для Python, JavaScript, Rust, Java, Go, Swift и других языков.
Расширение PostgreSQL на Rust с индексом на базе DiskANN и фильтрацией по меткам для более быстрого и дешёвого векторного поиска на основе pgvector.
Расширение с открытым исходным кодом для поиска векторов по сходству в Postgres: храните эмбеддинги и выполняйте поиск рядом с реляционными данными.