Docs feature matrix#1995
Conversation
📝 WalkthroughSummary by CodeRabbit
WalkthroughThis PR adds a comprehensive feature matrix document that displays vector search index availability across six language APIs (C++, C, Python, Rust, Java, Go) and multi-GPU support status. The getting started guide is updated to reference this matrix and position it as the entry point for understanding index support before consulting detailed index guides. ChangesVector Search Index Feature Matrix
🎯 1 (Trivial) | ⏱️ ~3 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/source/feature_matrix.rst`:
- Around line 4-83: Remove the incorrect checkmarks: clear the Brute-Force
checkmark under the Rust column and clear the IVF-Flat checkmark under the Java
column in the feature matrix table (rows labeled "Brute-Force" and "IVF-Flat").
Then add a clarifying sentence or row note near the table (e.g., immediately
before the table or replace the existing footnote) stating: "The Multi-GPU
column indicates whether the index algorithm (e.g., CAGRA, IVF-Flat, IVF-PQ)
supports multi-GPU execution; multi-GPU functionality is only accessible via the
C++, C, and Python APIs." Ensure the new note references "Multi-GPU" and the
index names so readers understand the distinction between algorithm capability
and API availability.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: d2583644-e283-449b-9820-b81edb330e39
📒 Files selected for processing (2)
docs/source/feature_matrix.rstdocs/source/getting_started.rst
| The following table shows which vector search indexes are available in each language API and whether they support multi-GPU execution. | ||
|
|
||
| .. list-table:: | ||
| :widths: 20 8 8 8 8 8 8 12 | ||
| :header-rows: 1 | ||
|
|
||
| * - Index | ||
| - C++ | ||
| - C | ||
| - Python | ||
| - Rust | ||
| - Java | ||
| - Go | ||
| - Multi-GPU* | ||
| * - All-Neighbors | ||
| - ✅ | ||
| - ✅ | ||
| - ✅ | ||
| - | ||
| - | ||
| - | ||
| - ✅ | ||
| * - Brute-Force | ||
| - ✅ | ||
| - ✅ | ||
| - ✅ | ||
| - ✅ | ||
| - ✅ | ||
| - ✅ | ||
| - | ||
| * - CAGRA | ||
| - ✅ | ||
| - ✅ | ||
| - ✅ | ||
| - ✅ | ||
| - ✅ | ||
| - ✅ | ||
| - ✅ | ||
| * - HNSW | ||
| - ✅ | ||
| - ✅ | ||
| - ✅ | ||
| - | ||
| - ✅ | ||
| - | ||
| - | ||
| * - IVF-Flat | ||
| - ✅ | ||
| - ✅ | ||
| - ✅ | ||
| - ✅ | ||
| - | ||
| - ✅ | ||
| - ✅ | ||
| * - IVF-PQ | ||
| - ✅ | ||
| - ✅ | ||
| - ✅ | ||
| - ✅ | ||
| - ✅ | ||
| - ✅ | ||
| - ✅ | ||
| * - NN Descent | ||
| - ✅ | ||
| - ✅ | ||
| - ✅ | ||
| - | ||
| - | ||
| - | ||
| - | ||
| * - Vamana | ||
| - ✅ | ||
| - ✅ | ||
| - | ||
| - ✅ | ||
| - | ||
| - | ||
| - | ||
|
|
||
| \* Multi-GPU support is available in C++, C, and Python only. |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Description: Verify index availability across language APIs and multi-GPU support
echo "=== Checking C++ API index availability ==="
# Look for index implementations in C++ headers/source
fd -e hpp -e h -e cu -e cuh . cpp/include cpp/src | head -20
echo -e "\n=== Checking C API bindings ==="
# Look for C API wrapper files
fd -e h . cpp/include/cuvs/neighbors/
echo -e "\n=== Checking Python API bindings ==="
# Look for Python index modules
fd -e py -e pyx . python/cuvs/cuvs/neighbors/ | grep -E "(brute_force|cagra|hnsw|ivf|nn_descent|vamana)" | head -20
echo -e "\n=== Checking Rust API bindings ==="
# Look for Rust index modules
fd . rust/cuvs/src/ -e rs | xargs rg -l "pub.*Index|impl.*Index" 2>/dev/null | head -10
echo -e "\n=== Checking Java API bindings ==="
# Look for Java index classes
fd -e java . java/ 2>/dev/null | head -10
echo -e "\n=== Checking Go API bindings ==="
# Look for Go index packages
fd -e go . go/ 2>/dev/null | head -10
echo -e "\n=== Checking multi-GPU references ==="
# Search for multi-GPU support indicators
rg -i "multi.gpu|multigpu|multi_gpu" --type rst --type md docs/Repository: rapidsai/cuvs
Length of output: 10259
🏁 Script executed:
#!/bin/bash
# Comprehensive verification of index support across all language APIs
echo "=== Rust: All index implementations ==="
find rust/cuvs/src -name "mod.rs" -o -name "index.rs" | xargs grep -l "pub" | sort
echo -e "\n=== Java: All index classes ==="
find java/cuvs-java/src -name "*Index*.java" | grep -v Benchmark | sort
echo -e "\n=== Go: All index packages ==="
find go -maxdepth 1 -type d | tail -n +2 | sort
echo -e "\n=== C++: Index headers in neighbors ==="
find cpp/include/cuvs/neighbors -name "*.hpp" | sort
echo -e "\n=== Python: All non-mg neighbors packages ==="
ls -d python/cuvs/cuvs/neighbors/*/ | grep -v mg | sort
echo -e "\n=== Python: All mg (multi-GPU) packages ==="
ls -d python/cuvs/cuvs/neighbors/mg/*/ 2>/dev/null | sortRepository: rapidsai/cuvs
Length of output: 2902
Update the feature matrix to correct Rust and Java index availability and clarify Multi-GPU support limitation.
The table contains two inaccuracies:
- Rust does not have a Brute-Force implementation—this checkmark should be blank
- Java does not have an IVF-Flat implementation—this checkmark should be blank
Additionally, the table's Multi-GPU column creates potential confusion. Readers may interpret checkmarks for CAGRA, IVF-Flat, and IVF-PQ in the Rust, Java, and Go columns combined with checkmarks in the Multi-GPU column as indicating multi-GPU support is available through those language APIs. However, the footnote states multi-GPU is only accessible via C++, C, and Python.
Recommend: Add a row note or introductory sentence clarifying that the Multi-GPU column indicates algorithm capability only, not language API availability. For example: "The Multi-GPU column indicates whether the index algorithm supports multi-GPU execution, which is accessible only through C++, C, and Python APIs."
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/source/feature_matrix.rst` around lines 4 - 83, Remove the incorrect
checkmarks: clear the Brute-Force checkmark under the Rust column and clear the
IVF-Flat checkmark under the Java column in the feature matrix table (rows
labeled "Brute-Force" and "IVF-Flat"). Then add a clarifying sentence or row
note near the table (e.g., immediately before the table or replace the existing
footnote) stating: "The Multi-GPU column indicates whether the index algorithm
(e.g., CAGRA, IVF-Flat, IVF-PQ) supports multi-GPU execution; multi-GPU
functionality is only accessible via the C++, C, and Python APIs." Ensure the
new note references "Multi-GPU" and the index names so readers understand the
distinction between algorithm capability and API availability.
This PR adds a page under getting started which shows a table of vector search indexes with supported language APIs and multi-gpu availability.