Skip to content

Cuvs lucene move - #2353

Merged
cjnolet merged 128 commits into
NVIDIA:mainfrom
imotov:cuvs-lucene-move
Aug 15, 2026
Merged

cjnolet merged 128 commits into
NVIDIA:mainfrom
imotov:cuvs-lucene-move

Conversation

@imotov

@imotov imotov commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Moves cuvs-lucene into java/cuvs-lucene folder of cuVs.

This is a preliminary PR to validate CI scripts. We'll need to rerun parts of the process and rebase the PR when we're ready to make the move. So, please ignore all changes in java/cuvs-lucene directory except for build-related changes.

Open questions:

  • Do we want to have a separate cuvs-lucene-codeowners or do we use cuvs-java-codeowners?

Timeline for the move:

  • Right after 26.08 release
    • Merge this PR to main with no-squash and move all new cuvs-lucene development to cuvs wi
    • Add a note to cuvs-lucene that all new development and all issues should be now go to this repo
  • Between 26.08 release and 26.10 code freeze
    • Move all still relevant cuvs-lucene PRs and issue to cuvs repo, close the rest.
    • Update release process to publish cuvs-lucene jars from this project instead of cuvs-lucene
    • Remove references to the cuvs-lucene repo in various other parts of our infrastructure
  • After 26.10 code freeze and when all issue and PRs are move to this repo
  • Additional items
    • Convert non-trivial cuvs-lucene README content into docs.
    • Reorganize benchmarks
    • Consolidate various java build.sh script
    • Consolidate cuvs and cuvs-java examples

Preparation script for cuvs-lucene:

git clone git@github.com:NVIDIA/cuvs-lucene.git cuvs-lucene-move
cd cuvs-lucene-move
git filter-repo --to-subdirectory-filter java/cuvs-lucene --replace-message ../message-filter.txt
cd ../cuvs
git remote add cuvs-lucene-origin ../cuvs-lucene-move
git fetch cuvs-lucene-origin
git merge --allow-unrelated-histories cuvs-lucene-origin/main
# Comment message:
# Merge main branch of 'cuvs-lucene' into cuvs
git remote remove cuvs-lucene-origin

message-filter.txt

regex:(?<![\w/])#(\d{1,3})\b==>NVIDIA/cuvs-lucene#\1

See NVIDIA/cuvs-lucene#168

cjnolet and others added 30 commits June 5, 2025 10:12
…s-lucene#2)

Fixes NVIDIA/cuvs-lucene#1 

Things included in this PR:
- Add the spotless maven plugin configuration.
- Add the gitignore file.
- Add a source license-header file that is used by the spotless plugin (to add/update license headers automatically if missing).
- Update the readme file.

Authors:
  - Vivek Narang (https://github.com/narangvivek10)
  - Gil Forsyth (https://github.com/gforsyth)

Approvers:
  - Corey J. Nolet (https://github.com/cjnolet)
  - MithunR (https://github.com/mythrocks)

URL: NVIDIA/cuvs-lucene#2
Fixes NVIDIA/cuvs-lucene#5 

Main changes in this PR:
- Adapt to the cuVS-Java API updates: Mainly replace the use of `Dataset` with the new `CuVSMatrix`
- Disable the tests that use byte vector encoding, as we do not support it.

Authors:
  - Vivek Narang (https://github.com/narangvivek10)

Approvers:
  - Corey J. Nolet (https://github.com/cjnolet)

URL: NVIDIA/cuvs-lucene#10
This PR adds a few additional needed changes to enable CI.

- change permission to make `.sh` files executable
- removes unnecessary configuration from `.pre-commit-config.yaml`, `CODEOWNERS`, `dependencies.yaml`
- updates all `pre-commit` hooks
- adds `rapids-dependency-file-generator` hook (to validated `dependencies.yaml`)
- fixes all issues found by `pre-commit` hooks (broken shell scripts, trailing whitespace, etc.)
- fixes versioning in `pom.xml`

Authors:
  - Dante Gama Dessavre (https://github.com/dantegd)
  - James Lamb (https://github.com/jameslamb)

Approvers:
  - James Lamb (https://github.com/jameslamb)
  - Corey J. Nolet (https://github.com/cjnolet)

URL: NVIDIA/cuvs-lucene#15
* updates `rapids-dependency-file-generator`, to pull in changes from rapidsai/dependency-file-generator#163
* removes unnecessary error-trapping in shell scripts

Authors:
  - James Lamb (https://github.com/jameslamb)

Approvers:
  - Kyle Edwards (https://github.com/KyleFromNVIDIA)

URL: NVIDIA/cuvs-lucene#19
Contributes to rapidsai/build-planning#208

* uses CUDA 13.0.0 to build and test (using the same patterns from the `cuvs-java` tests, in NVIDIA#1273)

## Notes for Reviewers

This switches GitHub Actions workflows to the `cuda13.0` branch from here: rapidsai/shared-workflows#413

A future round of PRs will revert that back to `branch-25.10`, once all of RAPIDS supports CUDA 13.

Authors:
  - James Lamb (https://github.com/jameslamb)

Approvers:
  - Jake Awe (https://github.com/AyodeAwe)
  - Ben Frederickson (https://github.com/benfred)
  - rhdong (https://github.com/rhdong)

URL: NVIDIA/cuvs-lucene#20
Contributes to rapidsai/build-planning#208

Now that rapidsai/shared-workflows#413 is
merged, this converts all GitHub Actions references from `@cuda13.0`
back to `branch-25.10`.

## Notes for Reviewers

This is safe to admin-merge because the change is a no-op... configs on
those 2 branches are identical.
…cene#22)

This PR configures this repo (adds a `.github/release.yml` file) for
automatic release notes generation. See
https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes.
This will fix such issues as hotfix releases including wrong content
(e.g [cugraph
v25.04.01](https://github.com/rapidsai/cugraph/releases/tag/v25.04.01)
contains 50+ PRs from the full v25.04.00 release when it should only
contain the single hotfix PR (#5017).)

Example auto-generated release notes:
https://github.com/rapidsai/literate-octo-potato/releases/tag/v25.10.00a
… prefiltering (NVIDIA/cuvs-lucene#14)

Refactoring, CI fixes (pulling libcuvs from pypi if not found), prefiltering support.

Added tests:
* TestCuVSGaps (for missing vectors in documents)
* TestCuVSDeletedDocuments (for deleted vectors, that will leverage prefiltering)
* TestMerge (dedicated test for testing merges)

Authors:
  - Ishan Chattopadhyaya (https://github.com/chatman)
  - Vivek Narang (https://github.com/narangvivek10)

Approvers:
  - Mike Sarahan (https://github.com/msarahan)
  - Corey J. Nolet (https://github.com/cjnolet)

URL: NVIDIA/cuvs-lucene#14
Introducing a new Codec that uses CAGRA for building the index on GPU and serializing to Lucene-compatible HNSW index segments. The Lucene-compatible segments are searchable via the `Lucene99HnswVectorsReader` (which is the default in Lucene 10.x). 

Note: This is based on top of NVIDIA/cuvs-lucene#14 and should be rebased once that is merged.

TODO:
- Benchmarks and more tests
- Further refactoring to split the `CuVSVectorsFormat` into GPU and CPU-specific formats. 

Fixes NVIDIA/cuvs-lucene#13

Authors:
  - Vivek Narang (https://github.com/narangvivek10)
  - Puneet Ahuja (https://github.com/punAhuja)
  - Ishan Chattopadhyaya (https://github.com/chatman)

Approvers:
  - Ishan Chattopadhyaya (https://github.com/chatman)
  - Corey J. Nolet (https://github.com/cjnolet)
  - Kyle Edwards (https://github.com/KyleFromNVIDIA)

URL: NVIDIA/cuvs-lucene#16
…n to give detailed stack traces and information on tests (NVIDIA/cuvs-lucene#25)

Fixes NVIDIA/cuvs-lucene#26

Authors:
  - Vivek Narang (https://github.com/narangvivek10)

Approvers:
  - Corey J. Nolet (https://github.com/cjnolet)

URL: NVIDIA/cuvs-lucene#25
…cene upgrades (NVIDIA/cuvs-lucene#29)

As per [last night's comment on the Solr Jira issue](https://issues.apache.org/jira/browse/SOLR-17892?focusedCommentId=18024203&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-18024203) we realized that exposing the Lucene Codecs in the SPI registry prevents any calling application from being able to upgrade the codec because, under the hood, the next version of Lucene moves the older codec (Lucene101) into a different package name. 
As a result, we should only provide the relevant vector format, reader, and writer, and the calling application needs to wrap them into its own FilterCodec. 

For the sake of the current tests, we have decided to move the codec classes into the tests so that they are not bundled in the artifacts. 

This issue is a blocker for the inclusion of cuvs Lucene in Solr or any other Lucene-based search engine.

Authors:
  - Vivek Narang (https://github.com/narangvivek10)
  - Ishan Chattopadhyaya (https://github.com/chatman)

Approvers:
  - Ishan Chattopadhyaya (https://github.com/chatman)
  - MithunR (https://github.com/mythrocks)

URL: NVIDIA/cuvs-lucene#29
…cuvs-lucene#30)

We were inadvertently copying over the vectors from a list to an array before creating the CuVSMatrix instance. This is memory inefficient.

Authors:
  - Ishan Chattopadhyaya (https://github.com/chatman)

Approvers:
  - Corey J. Nolet (https://github.com/cjnolet)

URL: NVIDIA/cuvs-lucene#30
…VIDIA/cuvs-lucene#31)

* cuvs-java 25.10 is released, use that from Maven Central
* There's a blocker bug for Solr integration where single vector indexes cause a Solr crash. Adding a graceful handling for that.
* Updated README.md with a more accurate description of the project.

Authors:
  - Ishan Chattopadhyaya (https://github.com/chatman)

Approvers:
  - Corey J. Nolet (https://github.com/cjnolet)

URL: NVIDIA/cuvs-lucene#31
Contributes to rapidsai/build-planning#224

## Notes for Reviewers

This is safe to admin-merge because the change is a no-op... configs on
those 2 branches are identical.
This commit fixes the publication of cuvs-lucene artifacts to Github.

The Github actions build-logs indicate that while the JAR is built correctly, it doesn't seem to be uploaded properly as a Github artifact. It appears to be the result of a minor typo in the artifact's base dir.

This commit fixes the typo, and allows the artifact to be published.

Authors:
  - MithunR (https://github.com/mythrocks)

Approvers:
  - Nate Rock (https://github.com/rockhowse)

URL: NVIDIA/cuvs-lucene#34
@imotov

imotov commented Aug 8, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test d3d8475

@imotov

imotov commented Aug 12, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test 29c8862

3. [Getting Started](#getting-started)
4. [Contributing](#contributing)
5. [References](#references)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Once we get cuVS-lucene settled into cuVS, we should strive to remove this readme in favor of having this content in the docs. These readmes get challenging to maintain when they are spread across various directories in the codebase.

@@ -0,0 +1,9 @@
# Microbenchmarks

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above

@@ -0,0 +1,86 @@
/*
* SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Follow-up- this file tree / build tree is a bit awkward. Can't we just build the microbenchmarks classes into the main jar instead o having a completely separate (nested) tree for it?

Comment thread java/cuvs-lucene/build.sh
#!/bin/bash

# SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Todo- consolidate with the top-level build.sh as a follow up.

@@ -0,0 +1,34 @@
# Examples

This maven project contains basic examples that showcase how `cuvs-lucene` can be used.

@cjnolet cjnolet Aug 13, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO: move to top level "examples/" (repo_root/examples/java) as a follow up

@imotov

imotov commented Aug 14, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test 59de1cc

@imotov

imotov commented Aug 14, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test b7e628e

@imotov

imotov commented Aug 14, 2026

Copy link
Copy Markdown
Contributor Author

/ok to test e2ac836

@imotov

imotov commented Aug 15, 2026

Copy link
Copy Markdown
Contributor Author

/merge nosquash

@rapids-bot

rapids-bot Bot commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

Could not determine original ForwardMerger PR from branch name. The branch name should follow the pattern <target_branch>-merge-<source_branch> (e.g., branch-25.06-merge-branch-25.04 or main-merge-release/25.06). Please contact @rapidsdevops on Slack for assistance.

@rapids-bot

rapids-bot Bot commented Aug 15, 2026

Copy link
Copy Markdown
Contributor

Could not determine original ForwardMerger PR from branch name. The branch name should follow the pattern <target_branch>-merge-<source_branch> (e.g., branch-25.06-merge-branch-25.04 or main-merge-release/25.06). Please contact @rapidsdevops on Slack for assistance.

@cjnolet
cjnolet merged commit 0fa5ebe into NVIDIA:main Aug 15, 2026
251 of 257 checks passed
rapids-bot Bot pushed a commit to NVIDIA/cuvs-lucene that referenced this pull request Aug 15, 2026
rapids-bot Bot pushed a commit to rapidsai/workflows that referenced this pull request Aug 31, 2026
`cuvs-lucene` has moved into `cuvs` at `java/cuvs-lucene` (NVIDIA/cuvs#2353). `NVIDIA/cuvs-lucene` is no longer actively developed and will be archived after the 26.10 code freeze, so the nightly is building an unmaintained snapshot.

Closes #130

Authors:
  - Igor Motov (https://github.com/imotov)

Approvers:
  - James Lamb (https://github.com/jameslamb)

URL: #131
imotov added a commit to imotov/rapids-metadata that referenced this pull request Sep 1, 2026
As of NVIDIA/cuvs#2353, cuvs-lucene has been merged into the cuVS
repository under java/cuvs-lucene, and its jars are published from
there rather than from the standalone cuvs-lucene repository.

Remove the standalone cuvs-lucene repository from 26.10 and add
cuvs-lucene as a package of the cuvs repository. The package flags are
unchanged - it remains a Maven artifact, so it publishes no conda
package or wheel, takes no CUDA suffix, and publishes no prereleases.

The package name is unchanged, so all_packages, prerelease_packages,
and cuda_suffixed_packages are unaffected; only the package-to-
repository mapping changes.

Fixes rapidsai#86
imotov added a commit to imotov/rapids-metadata that referenced this pull request Sep 1, 2026
As of NVIDIA/cuvs#2353, cuvs-lucene has been merged into the cuVS
repository under java/cuvs-lucene, and its jars are published from
there rather than from the standalone cuvs-lucene repository.

Remove the standalone cuvs-lucene repository from 26.10 and add
cuvs-lucene as a package of the cuvs repository. The package flags are
unchanged - it remains a Maven artifact, so it publishes no conda
package or wheel, takes no CUDA suffix, and publishes no prereleases.

The package name is unchanged, so all_packages, prerelease_packages,
and cuda_suffixed_packages are unaffected; only the package-to-
repository mapping changes.

Fixes rapidsai#86
rapids-bot Bot pushed a commit to rapidsai/rapids-metadata that referenced this pull request Sep 1, 2026
As of NVIDIA/cuvs#2353, cuvs-lucene has been merged into the cuVS repository under java/cuvs-lucene, and its jars are published from there rather than from the standalone cuvs-lucene repository.

Remove the standalone cuvs-lucene repository from 26.10 and add cuvs-lucene as a package of the cuvs repository. The package flags are unchanged - it remains a Maven artifact, so it publishes no conda package or wheel, takes no CUDA suffix, and publishes no prereleases.

The package name is unchanged, so all_packages, prerelease_packages, and cuda_suffixed_packages are unaffected; only the package-to- repository mapping changes.

Fixes #86

Authors:
  - Igor Motov (https://github.com/imotov)

Approvers:
  - James Lamb (https://github.com/jameslamb)

URL: #88
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

improvement Improves an existing functionality non-breaking Introduces a non-breaking change

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.