Skip to content

[DRAFT] Initial commit for converting docs from rst to md#2055

Closed
cjnolet wants to merge 1 commit into
NVIDIA:mainfrom
cjnolet:docs_2606_rst_to_md
Closed

[DRAFT] Initial commit for converting docs from rst to md#2055
cjnolet wants to merge 1 commit into
NVIDIA:mainfrom
cjnolet:docs_2606_rst_to_md

Conversation

@cjnolet

@cjnolet cjnolet commented May 5, 2026

Copy link
Copy Markdown
Contributor

Attempting to use Codex to assist in converting the docs from rst to markdown. This is required for the migration of cuvs docs from docs.rapids.ai to docs.nvidia.com as we'll need migrate to Fern, which only supports markdown.

@cjnolet cjnolet self-assigned this May 5, 2026
@cjnolet cjnolet requested a review from a team as a code owner May 5, 2026 16:35
@cjnolet cjnolet added doc Improvements or additions to documentation non-breaking Introduces a non-breaking change labels May 5, 2026
@cjnolet cjnolet closed this May 5, 2026
@coderabbitai

coderabbitai Bot commented May 5, 2026

Copy link
Copy Markdown

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: b433aa00-e35b-44e2-a1ff-19c4aafa2979

📥 Commits

Reviewing files that changed from the base of the PR and between 7cf69cb and fa7a9fe.

📒 Files selected for processing (181)
  • Dockerfile.standalone
  • docs/source/advanced_topics.md
  • docs/source/advanced_topics.rst
  • docs/source/api_basics.md
  • docs/source/api_basics.rst
  • docs/source/api_docs.md
  • docs/source/api_docs.rst
  • docs/source/api_interoperability.md
  • docs/source/api_interoperability.rst
  • docs/source/build.md
  • docs/source/build.rst
  • docs/source/c_api.md
  • docs/source/c_api.rst
  • docs/source/c_api/cluster.md
  • docs/source/c_api/cluster.rst
  • docs/source/c_api/cluster_kmeans_c.md
  • docs/source/c_api/cluster_kmeans_c.rst
  • docs/source/c_api/core_c_api.md
  • docs/source/c_api/core_c_api.rst
  • docs/source/c_api/distance.md
  • docs/source/c_api/distance.rst
  • docs/source/c_api/neighbors.md
  • docs/source/c_api/neighbors.rst
  • docs/source/c_api/neighbors_all_neighbors_c.md
  • docs/source/c_api/neighbors_all_neighbors_c.rst
  • docs/source/c_api/neighbors_bruteforce_c.md
  • docs/source/c_api/neighbors_bruteforce_c.rst
  • docs/source/c_api/neighbors_cagra_c.md
  • docs/source/c_api/neighbors_cagra_c.rst
  • docs/source/c_api/neighbors_hnsw_c.md
  • docs/source/c_api/neighbors_hnsw_c.rst
  • docs/source/c_api/neighbors_ivf_flat_c.md
  • docs/source/c_api/neighbors_ivf_flat_c.rst
  • docs/source/c_api/neighbors_ivf_pq_c.md
  • docs/source/c_api/neighbors_ivf_pq_c.rst
  • docs/source/c_api/neighbors_mg.md
  • docs/source/c_api/neighbors_mg.rst
  • docs/source/c_api/neighbors_vamana_c.md
  • docs/source/c_api/neighbors_vamana_c.rst
  • docs/source/c_api/preprocessing.md
  • docs/source/c_api/preprocessing.rst
  • docs/source/choosing_and_configuring_indexes.md
  • docs/source/comparing_indexes.md
  • docs/source/cpp_api.md
  • docs/source/cpp_api.rst
  • docs/source/cpp_api/cluster.md
  • docs/source/cpp_api/cluster.rst
  • docs/source/cpp_api/cluster_agglomerative.md
  • docs/source/cpp_api/cluster_agglomerative.rst
  • docs/source/cpp_api/cluster_kmeans.md
  • docs/source/cpp_api/cluster_kmeans.rst
  • docs/source/cpp_api/cluster_spectral.md
  • docs/source/cpp_api/cluster_spectral.rst
  • docs/source/cpp_api/distance.md
  • docs/source/cpp_api/distance.rst
  • docs/source/cpp_api/neighbors.md
  • docs/source/cpp_api/neighbors.rst
  • docs/source/cpp_api/neighbors_all_neighbors.md
  • docs/source/cpp_api/neighbors_all_neighbors.rst
  • docs/source/cpp_api/neighbors_bruteforce.md
  • docs/source/cpp_api/neighbors_bruteforce.rst
  • docs/source/cpp_api/neighbors_cagra.md
  • docs/source/cpp_api/neighbors_cagra.rst
  • docs/source/cpp_api/neighbors_dynamic_batching.md
  • docs/source/cpp_api/neighbors_dynamic_batching.rst
  • docs/source/cpp_api/neighbors_epsilon_neighborhood.md
  • docs/source/cpp_api/neighbors_filter.md
  • docs/source/cpp_api/neighbors_filter.rst
  • docs/source/cpp_api/neighbors_hnsw.md
  • docs/source/cpp_api/neighbors_hnsw.rst
  • docs/source/cpp_api/neighbors_ivf_flat.md
  • docs/source/cpp_api/neighbors_ivf_flat.rst
  • docs/source/cpp_api/neighbors_ivf_pq.md
  • docs/source/cpp_api/neighbors_ivf_pq.rst
  • docs/source/cpp_api/neighbors_mg.md
  • docs/source/cpp_api/neighbors_mg.rst
  • docs/source/cpp_api/neighbors_nn_descent.md
  • docs/source/cpp_api/neighbors_nn_descent.rst
  • docs/source/cpp_api/neighbors_refine.md
  • docs/source/cpp_api/neighbors_refine.rst
  • docs/source/cpp_api/neighbors_vamana.md
  • docs/source/cpp_api/neighbors_vamana.rst
  • docs/source/cpp_api/preprocessing.md
  • docs/source/cpp_api/preprocessing.rst
  • docs/source/cpp_api/preprocessing_pca.md
  • docs/source/cpp_api/preprocessing_pca.rst
  • docs/source/cpp_api/preprocessing_quantize.md
  • docs/source/cpp_api/preprocessing_quantize.rst
  • docs/source/cpp_api/preprocessing_spectral_embedding.md
  • docs/source/cpp_api/preprocessing_spectral_embedding.rst
  • docs/source/cpp_api/selection.md
  • docs/source/cpp_api/selection.rst
  • docs/source/cpp_api/stats.md
  • docs/source/cpp_api/stats.rst
  • docs/source/cuvs_bench/build.md
  • docs/source/cuvs_bench/build.rst
  • docs/source/cuvs_bench/datasets.md
  • docs/source/cuvs_bench/datasets.rst
  • docs/source/cuvs_bench/index.md
  • docs/source/cuvs_bench/index.rst
  • docs/source/cuvs_bench/param_tuning.md
  • docs/source/cuvs_bench/param_tuning.rst
  • docs/source/cuvs_bench/pluggable_backend.md
  • docs/source/cuvs_bench/pluggable_backend.rst
  • docs/source/cuvs_bench/wiki_all_dataset.md
  • docs/source/cuvs_bench/wiki_all_dataset.rst
  • docs/source/filtering.md
  • docs/source/filtering.rst
  • docs/source/getting_started.md
  • docs/source/getting_started.rst
  • docs/source/index.md
  • docs/source/index.rst
  • docs/source/integrations.md
  • docs/source/integrations.rst
  • docs/source/integrations/faiss.md
  • docs/source/integrations/kinetica.md
  • docs/source/integrations/kinetica.rst
  • docs/source/integrations/lucene.md
  • docs/source/integrations/milvus.md
  • docs/source/neighbors/all_neighbors.md
  • docs/source/neighbors/all_neighbors.rst
  • docs/source/neighbors/bruteforce.md
  • docs/source/neighbors/bruteforce.rst
  • docs/source/neighbors/cagra.md
  • docs/source/neighbors/cagra.rst
  • docs/source/neighbors/ivfflat.md
  • docs/source/neighbors/ivfflat.rst
  • docs/source/neighbors/ivfpq.md
  • docs/source/neighbors/ivfpq.rst
  • docs/source/neighbors/neighbors.md
  • docs/source/neighbors/neighbors.rst
  • docs/source/neighbors/vamana.md
  • docs/source/neighbors/vamana.rst
  • docs/source/python_api.md
  • docs/source/python_api.rst
  • docs/source/python_api/cluster.md
  • docs/source/python_api/cluster.rst
  • docs/source/python_api/cluster_kmeans.md
  • docs/source/python_api/cluster_kmeans.rst
  • docs/source/python_api/distance.md
  • docs/source/python_api/distance.rst
  • docs/source/python_api/neighbors.md
  • docs/source/python_api/neighbors.rst
  • docs/source/python_api/neighbors_all_neighbors.md
  • docs/source/python_api/neighbors_all_neighbors.rst
  • docs/source/python_api/neighbors_brute_force.md
  • docs/source/python_api/neighbors_brute_force.rst
  • docs/source/python_api/neighbors_cagra.md
  • docs/source/python_api/neighbors_cagra.rst
  • docs/source/python_api/neighbors_hnsw.md
  • docs/source/python_api/neighbors_hnsw.rst
  • docs/source/python_api/neighbors_ivf_flat.md
  • docs/source/python_api/neighbors_ivf_flat.rst
  • docs/source/python_api/neighbors_ivf_pq.md
  • docs/source/python_api/neighbors_ivf_pq.rst
  • docs/source/python_api/neighbors_mg_cagra.md
  • docs/source/python_api/neighbors_mg_cagra.rst
  • docs/source/python_api/neighbors_mg_ivf_flat.md
  • docs/source/python_api/neighbors_mg_ivf_flat.rst
  • docs/source/python_api/neighbors_mg_ivf_pq.md
  • docs/source/python_api/neighbors_mg_ivf_pq.rst
  • docs/source/python_api/neighbors_multi_gpu.md
  • docs/source/python_api/neighbors_nn_decent.md
  • docs/source/python_api/neighbors_nn_decent.rst
  • docs/source/python_api/preprocessing.md
  • docs/source/python_api/preprocessing.rst
  • docs/source/rust_api/index.md
  • docs/source/rust_api/index.rst
  • docs/source/tuning_guide.md
  • docs/source/vector_databases_vs_vector_search.md
  • docs/source/working_with_ann_indexes.md
  • docs/source/working_with_ann_indexes.rst
  • docs/source/working_with_ann_indexes_c.md
  • docs/source/working_with_ann_indexes_c.rst
  • docs/source/working_with_ann_indexes_cpp.md
  • docs/source/working_with_ann_indexes_cpp.rst
  • docs/source/working_with_ann_indexes_python.md
  • docs/source/working_with_ann_indexes_python.rst
  • docs/source/working_with_ann_indexes_rust.md
  • docs/source/working_with_ann_indexes_rust.rst
  • scripts/run_standalone_c_docker.sh

📝 Walkthrough

Summary by CodeRabbit

  • Documentation

    • Reorganized and restructured all API documentation (C, C++, Python, Rust) for improved navigation and clarity
    • Converted documentation from reStructuredText to Markdown format for consistency
    • Added comprehensive guides: building from source, advanced topics, API basics, working with ANN indexes, benchmarking, and parameter tuning
    • Enhanced getting started experience with improved index selection guides and examples
  • Chores

    • Added standalone Docker build infrastructure for C API compilation

Walkthrough

This PR migrates cuVS documentation from reStructuredText to Markdown format across ~100 files, adding Python API and guide pages in the new format while removing their RST counterparts. It also introduces a standalone C Docker build system with a Dockerfile and orchestration script for building libcuvs_c in isolated containers.

Changes

Standalone C Docker Build System

Layer / File(s) Summary
Docker Image Definition
Dockerfile.standalone
Defines a C build container with configurable CUDA_VERSION and PYTHON_VERSION build args, installs build tools and architecture-specific ninja binary, sets BUILD_OUTPUT_DIR=/build and WORKDIR /workspace, and configures an ENTRYPOINT that executes ci/standalone_c/build_standalone_c.sh and copies the output libcuvs_c.tar.gz into the mounted output directory.
Build Orchestration
scripts/run_standalone_c_docker.sh
Bash script that resolves build parameters from environment/CLI args, builds the Docker image, runs the container with mounted repo and output directories, forwards AWS/RAPIDS environment variables into the container, and copies the resulting libcuvs_c.tar.gz tarball to the repository root for CI artifact upload.

Documentation Format Migration (reStructuredText → Markdown)

Layer / File(s) Summary
Landing & Navigation Pages
docs/source/index.md, docs/source/getting_started.md, docs/source/api_docs.md, docs/source/integrations.md, docs/source/working_with_ann_indexes.md
New Markdown landing pages with restructured navigation, resource links, use-case overviews, and toctree entries guiding users through cuVS documentation.
API Reference Indexes
docs/source/{c_api,cpp_api,python_api,rust_api}/index.md and equivalents
Markdown-formatted API reference entry pages and sub-section indexes (e.g., c_api.md, cpp_api/cluster.md) replacing RST counterparts, with Sphinx toctree or HTML container links to language-specific API documentation.
C API Documentation
docs/source/c_api/*.md (~10 files)
New Markdown pages documenting C API for core routines, distance, clustering, neighbors (all algorithms), and preprocessing, with Doxygen group references embedded in the new format.
C++ API Documentation
docs/source/cpp_api/*.md (~15 files)
New Markdown pages for C++ API covering cluster, distance, neighbors (all variants), preprocessing, selection, and stats modules, with Doxygen namespace/group references formatted as Markdown.
Python API Documentation
docs/source/python_api/*.md (~15 files)
New Markdown pages for Python API autodoc references, covering cluster, distance, neighbors (single and multi-GPU variants), and preprocessing, with explicit host-memory notes for multi-GPU modules.
Conceptual & User Guides
docs/source/{api_basics,advanced_topics,build,filtering,choosing_and_configuring_indexes,comparing_indexes,tuning_guide,vector_databases_vs_vector_search}.md
New Markdown guides on API fundamentals, advanced topics (JIT-LTO), build procedures, filtering, index selection, tuning, and the relationship between vector search and vector databases; converted from reStructuredText with heading/link/table syntax updated to Markdown.
Neighbors Algorithm Guides
docs/source/neighbors/{bruteforce,cagra,ivfflat,ivfpq,vamana,all_neighbors}.md
New Markdown deep-dive documentation for nearest-neighbor algorithms, covering algorithm overview, configuration parameters, tuning guidance, and memory footprint analysis; replaces detailed RST pages.
cuVS Bench Documentation
docs/source/cuvs_bench/*.md (~6 files)
New Markdown pages for the benchmarking framework, covering installation, dataset format/preprocessing, parameter tuning, pluggable backend architecture, and the wiki-all benchmark dataset.
Integration & Interoperability
docs/source/{integrations/*,api_interoperability}.md
New Markdown pages documenting DLPack/multi-dimensional span (C++/C) interoperability and SDK/database integrations (Faiss, Milvus, Lucene, Kinetica).
Working with Indexes
docs/source/working_with_ann_indexes_{c,cpp,python,rust}.md
New Markdown pages with language-specific code examples for building and searching ANN indexes using CAGRA, replacing detailed RST tutorials.
Rust API Documentation
docs/source/rust_api/index.md
New Markdown landing page embedding the generated Rust API HTML documentation via iframe, with CSS to hide secondary sidebars.
Removed RST Files
docs/source/**/*.rst (~150 files)
All corresponding .rst files deleted as part of the migration, with content transitioned to the Markdown equivalents above.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

The PR encompasses a large volume of changes across ~150 documentation files (100+ new .md files, ~150 deleted .rst files) plus two new infrastructure files. However, the homogeneous nature of the documentation migration—a consistent reStructuredText-to-Markdown format conversion applied repetitively across similar file structures—and the straightforward logic of the new Docker/script files keep the complexity manageable. Spot-checking of content preservation across key documentation sections and verification that Doxygen/Sphinx references are correctly formatted in the new Markdown style are the primary review concerns.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

Labels

doc Improvements or additions to documentation non-breaking Introduces a non-breaking change

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants