cuVS: библиотека для векторного поиска и кластеризации на GPU
cuVS — библиотека для векторного поиска и кластеризации на GPU от NVIDIA. Она предназначена для реализации алгоритмов приближенного поиска ближайших соседей и кластеризации, что позволяет значительно ускорить обработку больших объемов данных.
Проект отличается от традиционных решений своей оптимизацией для использования графических процессоров, что позволяет достичь высокой производительности при работе с векторными представлениями данных. Это особенно полезно для задач в области машинного обучения и обработки мультимедийных данных, таких как семантический поиск и анализ данных. cuVS подойдет разработчикам, которым необходимо автоматизировать поиск похожих объектов в больших наборах данных.
Запускается cuVS на системах с поддержкой CUDA. Инструкции по установке и началу работы можно найти в документации на GitHub. Обрати внимание, что библиотека ориентирована на использование GPU и требует настройки окружения с CUDA.
cuVS (CUDA Vector Search) — это библиотека от NVIDIA, которая предоставляет современные реализации алгоритмов для поиска приближённых ближайших соседей и кластеризации на графических процессорах (GPU). Она может быть интегрирована с различными базами данных и библиотеками, упрощая использование GPU для поиска по векторным данным и кластеризации.
Основная задача cuVS — упростить использование графических процессоров для задач поисковой обработки векторов и кластеризации, что становится особенно актуальным в свете растущей необходимости в семантическом поиске и работе с многими видами неструктурированных данных. Векторы используются в таких задачах, как кластеризация, визуализация и взаимодействие с графами, открывая доступ к алгоритмам анализа графов.
Технологический стек
cuVS построен на библиотеке RAPIDS RAFT, которая включает высокоэффективные примитивы машинного обучения. Библиотека обеспечивает все необходимые функции для реализации поиска по векторным данным и кластеризации на GPU.
Установка cuVS
cuVS доступен в виде предварительно собранных пакетов, которые можно установить через:
Обрати внимание, что сборки для CUDA 13 имеют меньший размер по сравнению с предыдущими версиями, и команду разработки стремится уменьшать размеры всех поддерживаемых версий. Если размер бинарников является критически важным, рекомендуется скомпилировать cuVS из исходников или использовать `libcuvs-static` пакет.
Начало работы
Библиотека поддерживает несколько языков программирования. Примеры кода для создания индекса с использованием алгоритма CAGRA представлены ниже:
Python API
from cuvs.neighbors import cagra
dataset = load_data()
index_params = cagra.IndexParams()
index = cagra.build(index_params, dataset)
C++ API
#include
using namespace cuvs::neighbors;
raft::device_matrix_view dataset = load_dataset();
raft::device_resources res;
cagra::index_params index_params;
auto index = cagra::build(res, index_params, dataset);
C API
#include
cuvsResources_t res;
cuvsCagraIndexParams_t index_params;
cuvsCagraIndex_t index;
DLManagedTensor *dataset;
load_dataset(dataset);
cuvsResourcesCreate(&res);
cuvsCagraIndexParamsCreate(&index_params);
cuvsCagraIndexCreate(&index);
cuvsDataset_t dataset_view;
cuvsDatasetMakeStandardView(res, dataset, &dataset_view);
cuvsCagraBuild(res, index_params, dataset_view, index);
cuvsDatasetDestroy(dataset_view);
cuvsCagraIndexDestroy(index);
cuvsCagraIndexParamsDestroy(index_params);
cuvsResourcesDestroy(res);
Rust API
use cuvs::distance::DistanceType;
use cuvs::neighbors::cagra::{Index, IndexParams, SearchParams};
use cuvs::{AsDlTensor, AsDlTensorMut, Resources};
// cuVS не зависим от местоположения ваших векторов: `build` и `search`
// принимают любые типы, реализующие `AsDlTensor` (входные данные) /
// `AsDlTensorMut` (выходные данные). Запакуйте вашу собственную
// память GPU, реализовав эти трейты.
struct GpuTensor;
// Реализация трейтов здесь...
fn main() -> Result<(), Box> {
let res = Resources::new()?;
// Создание индекса CAGRA...
Ok(())
}
Ограничения
cuVS ориентирован на использование с GPU, поэтому для эффективной работы нужна соответствующая аппаратная платформа. Библиотека постоянно обновляется, чтобы поддерживать совместимость с новыми архитектурами NVIDIA и версиями CUDA, что обеспечивает высокую производительность.
Радар проекта: 79 из 100 — зрелый и живой проект
- Импульс 11 ≈ 22 звезды в месяц
- Темп разработки 94 213 коммитов за 12 недель
- Зрелость 95 проекту 2 года, 21 релиз
- Сообщество 77 107 участников, 260 форков
- Свежесть 97 последний коммит — 6 дней назад
- Быстрый старт 70 есть: Docker, сайт/демо, примеры
- Готовность к продакшену 80 релиз v26.10.00, автосборка
- Безопасность и доверие 100 лицензия Apache-2.0, SECURITY.md, организация
- Документация 98 README 10.1 тыс. знаков, 14 разделов, папка docs
- Экосистема 65 20 подписчиков на обновления, 16 тем
Как считаем
Только открытые данные GitHub на 07.11.2026, без оценок нейросети. Каждая ось — от 0 до 100, итог — среднее.
- Импульс — звёзд в день: за время наших замеров, а пока их нет — за всю жизнь проекта; 200 в день — максимум.
- Темп разработки — коммитов за последние 12 недель; 300 — максимум. Пока GitHub не досчитал статистику, ось не учитывается.
- Зрелость — возраст проекта (3 года — максимум) и число релизов (30 — максимум), поровну.
- Сообщество — участников с коммитами (200 — максимум) и форков (5000 — максимум), поровну.
- Свежесть — дней с последнего коммита: сегодня — 100, полгода и больше или архив — 0.
- Быстрый старт — в README есть команда установки, раздел «быстрый старт» или примеры использования, в репозитории — Docker и папка примеров, у проекта есть сайт или демо.
- Готовность к продакшену — релизы, версия 1.0 и выше, автосборка (GitHub Actions), тесты, лицензия, журнал изменений.
- Безопасность и доверие — открытая лицензия (своя — половина балла), политика безопасности (SECURITY.md), проект организации, правила для участников, не в архиве.
- Документация — объём и структура README, папка docs или сайт, оценка «здоровья сообщества» GitHub.
- Экосистема — звёзды (50 тыс. — максимум), подписчики на обновления (1000 — максимум), темы репозитория.
Открыть на GitHub: NVIDIA/cuvs →
RepoRadar