Skip to content

Support Vector Search on GPU with cuVS #14243

@ChrisHegarty

Description

@ChrisHegarty

Description

  • NVIDIA's cuVS library (https://github.com/rapidsai/cuvs) is a state-of-the-art vector search library. It supports fast indexing and search using GPUs.
  • cuVS will provide a java api in 25.02 : https://github.com/rapidsai/cuvs/
  • Support use-case such as:
    • index and search both on GPU
    • index on GPU, search on CPU
    • flat brute force and graph based

In-progress PR

Architecture

Image

Tasks:

  • TestCuVS works via IDE, but not via gradle (some native access security issues).
  • Make this branch work with released version of cuvs-java (25.02), once it is released.
    • remove mavenLocal and replace artifact metadata, etc.
  • Extend base format test, which covers many many format api and behavioural tests
  • Examine and determine location of extracted native library
  • Examine and determine location of all temporary file
  • Examine heap usage
  • Move float32 vectors off-heap
  • Lucene supports various different similarity functions, EUCLIDEAN, DOT_PRODUCT, COSINE, MAXIMUM_INNER_PRODUCT. Evaluate mapping these to cuVS index params and/or which to support.
  • Lucene scores are are between 1 and 0, with the former being the most relevant. Ensure that scores are consistent across all supported similarities.
  • How to expose advanced query params, like iTopK, searchWidth, thread, etc, if at all. One way is through a Do we custom CuVSKnnFloatVectorQuery. Maybe there are other (better) ways, if needed at all.
  • Publish benchmarks.

Contributors: @narangvivek10, @punAhuja, @chatman, @ChrisHegarty, along with help from @cjnolet.

Metadata

Metadata

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions