Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions docs/source/feature_matrix.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
Vector Search Index Feature Matrix
===================================

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.
Comment on lines +4 to +83
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

🧩 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 | sort

Repository: 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:

  1. Rust does not have a Brute-Force implementation—this checkmark should be blank
  2. 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.

5 changes: 4 additions & 1 deletion docs/source/getting_started.rst
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ Getting Started

- `Supported indexes`_

* :doc:`Vector Search Index Feature Matrix <feature_matrix>`

* :doc:`Vector search index guide <neighbors/neighbors>`

- `Using cuVS APIs`_
Expand Down Expand Up @@ -58,7 +60,7 @@ Please see the :doc:`primer on comparing vector search index performance <compar
Supported indexes
=================

cuVS supports many of the standard index types with the list continuing to grow and stay current with the state-of-the-art. Please refer to our :doc:`vector search index guide <neighbors/neighbors>` to learn more about each individual index type, when they can be useful on the GPU, the tuning knobs they offer to trade off performance and quality.
cuVS supports many of the standard index types with the list continuing to grow and stay current with the state-of-the-art. For a quick overview of which indexes are available in each language and whether they support multi-GPU, see the :doc:`vector search index feature matrix <feature_matrix>`. For detailed information about each individual index type, when they can be useful on the GPU, and the tuning knobs they offer to trade off performance and quality, please refer to our :doc:`vector search index guide <neighbors/neighbors>`.

The primary goal of cuVS is to enable speed, scale, and flexibility (in that order)- and one of the important value propositions is to enhance existing software deployments with extensible GPU capabilities to improve pain points while not interrupting parts of the system that work well today with CPU.

Expand Down Expand Up @@ -117,6 +119,7 @@ We always welcome patches for new features and bug fixes. Please read our `contr
vector_databases_vs_vector_search.rst
tuning_guide.rst
comparing_indexes.rst
feature_matrix.rst
neighbors/neighbors.rst
api_basics.rst
api_interoperability.rst
Expand Down
Loading