Skip to content

upstream: contribute IVF-SQ Rust bindings to rapidsai/cuvs #1678

Description

@jamie8johnson

What

Contribute Rust bindings for the IVF-SQ (scalar quantization) index to rapidsai/cuvs, mirroring the wrapper pattern from our v26.06.00 contributions ("feat(rust): add serialize/deserialize support for CAGRA index", "feat(rust): add search_with_filter to CAGRA Index").

Why

cuVS v26.06.00 shipped IVF-SQ as C++ and C APIs only ("IVF-SQ C++ API", "IVF-SQ C API") — no Rust surface. Scalar quantization stores vectors at ~4x smaller than f32. For cqs that matters as slots multiply: every A/B slot carries a full per-model vector index, and multi-slot experiments are the standard retune workflow.

Scope (upstream, in cuvs Rust crate)

  • Wrap the IVF-SQ C API: index build params, build, search, serialize/deserialize
  • Follow the existing cagra module structure in the Rust crate (we know this surface — we wrote parts of it)
  • Tests mirroring the CAGRA Rust test layout

cqs-side follow-up (separate, after upstream merge + release)

  • Optional IndexBackend impl behind cuda-index, selectable for memory-constrained slots
  • A/B recall-vs-memory on the v3.v2 fixture before any default change

Prereqs

  • We must be on official cuvs 26.6 first (fork retirement in progress)
  • Conda libcuvs and crate pin move in lockstep (RMM → CCCL MR migration in 26.06 makes ABI matching non-negotiable)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions