Skip to content

Remove composite index - #2969

Open
aamijar wants to merge 1 commit into
NVIDIA:mainfrom
aamijar:remove-composite-index
Open

aamijar wants to merge 1 commit into
NVIDIA:mainfrom
aamijar:remove-composite-index

Conversation

@aamijar

@aamijar aamijar commented Oct 29, 2026 •

Copy link
Copy Markdown
Member

Resolves #2690.

Composite index has been superseded by multi partition search apis.

We keep the MergeStrategy enum in cpp, c and language wrappers for now, to avoid breaking C ABI.

@copy-pr-bot

copy-pr-bot Bot commented Oct 29, 2026

Copy link
Copy Markdown

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@aamijar aamijar self-assigned this Oct 30, 2026
@aamijar aamijar added breaking Introduces a breaking change improvement Improves an existing functionality labels Oct 30, 2026
@aamijar aamijar moved this to Needs Review in Unstructured Data Processing Oct 30, 2026
@aamijar aamijar moved this from Needs Review to In Progress in Unstructured Data Processing Oct 30, 2026
@aamijar
aamijar marked this pull request as ready for review October 30, 2026 02:07
@aamijar
aamijar requested review from a team as code owners October 30, 2026 02:07
@aamijar aamijar moved this from In Progress to Needs Review in Unstructured Data Processing Oct 30, 2026
@coderabbitai

coderabbitai Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

📝 Summary

Summary by CodeRabbit

  • Breaking Changes
    • The C++ composite-index API and logical merging for CAGRA benchmark workflows are no longer available. Split-index benchmark workflows now use physical merging and a single index for search and persistence.
    • CAGRA benchmark configuration rejects LOGICAL as a merge type; use PHYSICAL instead.
  • Documentation
    • Removed the composite-index topic from the C++ API documentation.

The pull request removes the C++ composite-index API, implementation, and documentation. CAGRA benchmark parsing, wrapper behavior, and tests now use physical merging instead of logical merging.

Changes: Composite index removal and physical merging

Layer / File(s) Summary
Remove the composite-index API and implementation
cpp/include/cuvs/neighbors/composite/index.hpp, cpp/src/neighbors/composite/index.cu, cpp/CMakeLists.txt, fern/docs.yml, fern/pages/cpp_api/*
The composite-index declaration and implementation are deleted. The CMake source list and C++ API navigation and page no longer include the composite index.
Update CAGRA benchmark and tests
cpp/bench/ann/src/cuvs/*, cpp/tests/neighbors/ann_cagra.cuh
The benchmark parser accepts only PHYSICAL as a merge type. The wrapper uses one index for build, save, load, and search. Tests use physical merges and no longer generate logical-merge cases.

Priority: Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Other

Suggested reviewers: achirkin, kylefromnvidia, cjnolet

Merge Risk: Minimal · up to 34d8b

No actionable risk from this change remains after normal checks.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat… Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title clearly and concisely identifies the main change: removal of the composite index.
Linked Issues check Passed Issue #2690 requires removal of composite_index in favor of multi-partition search. The PR deletes the public composite-index header and implementation, removes the source from cuvs_objs, and remo…
Out of Scope Changes check Passed The changed files stay within issue #2690. Benchmark changes remove consumers of composite_index and logical merging. Test changes replace composite searches with physical merge searches. Build and …
Description check Passed The description states that the composite index was superseded by the multi-partition search APIs, which matches the changeset that removes composite_index headers, implementation, tests, bench wrappe…
Full details: Linked Issues check

Explanation

Issue #2690 requires removal of composite_index in favor of multi-partition search. The PR deletes the public composite-index header and implementation, removes the source from cuvs_objs, and removes benchmark usage and logical merge support. The CAGRA tests now use physical merge and direct CAGRA search instead of composite_index. Documentation no longer exposes the removed API.

Full details: Out of Scope Changes check

Explanation

The changed files stay within issue #2690. Benchmark changes remove consumers of composite_index and logical merging. Test changes replace composite searches with physical merge searches. Build and documentation changes remove the deleted API from packaging and published navigation.

Full details: Description check

Explanation

The description states that the composite index was superseded by the multi-partition search APIs, which matches the changeset that removes composite_index headers, implementation, tests, bench wrappers, and docs. It also says the MergeStrategy enum is kept in the C++, C, and language wrappers to avoid breaking the C ABI, which the diff reflects in part (the kLogical enum value is removed while the enum remains). The description is specific enough to convey the intent of the change.

Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 3 functions across 1 files. (1 skipped: 1 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

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

Labels

breaking Introduces a breaking change improvement Improves an existing functionality

Projects

Status: Needs Review

Development

Successfully merging this pull request may close these issues.

Remove composite_index

1 participant