cuVS: библиотека для векторного поиска и кластеризации на GPU

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 — зрелый и живой проект

ИмпульсТемпЗрелостьСообществоСвежестьСтартПродакшенДовериеДокументацияЭкосистема79
  • Импульс 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 →

Что нового на GitHub — короткие обзоры на русском Новые обзоры приходят в Telegram. Без спама, по делу.
Подписаться

Похожие статьи

Популярные темы на сайте