Skip to content

Latest commit

 

History

History
122 lines (72 loc) · 5.92 KB

getting_started.rst

File metadata and controls

122 lines (72 loc) · 5.92 KB

Getting Started

New to vector search?

If you are unfamiliar with the basics of vector search or how vector search differs from vector databases, then :doc:`this primer on vector search guide <choosing_and_configuring_index>` should provide some good insight. Another good resource for the uninitiated is our :doc:`vector databases vs vector search <vector_databases_vs_vector_search>` guide. As outlined in the primer, vector search as used in vector databases is often closer to machine learning than to traditional databases. This means that while traditional databases can often be slow without any performance tuning, they will usually still yield the correct results. Unfortunately, vector search indexes, like other machine learning models, can yield garbage results of not tuned correctly.

Fortunately, this opens up the whole world of hyperparamer optimization to improve vector search performance and quality. Please see our :doc:`index tuning guide <tuning_guide>` for more information.

When comparing the performance of vector search indexes, it is important that considerations are made with respect to three main dimensions:

  1. Build time
  2. Search quality
  3. Search performance

Please see the :doc:`primer on comparing vector search index performance <comparing_indexes>` for more information on methodologies and how to make a fair apples-to-apples comparison during your evaluations.

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 <indexes/indexes>` for 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.

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.

Using cuVS APIs

cuVS is a C++ library at its core, which is wrapped with a C library and exposed further through various different languages. cuVS currently provides APIs and documentation for :doc:`C <c_api>`, :doc:`C++ <cpp_api>`, :doc:`Python <python_api>`, and :doc:`Rust <rust_api/index>` with more languages in the works. our :doc:`API basics <api_basics>` provides some background and context about the important paradigms and vocabulary types you'll encounter when working with cuVS types.

Please refer to the :doc:`guide on API interoperability <api_interoperability>` for more information on how cuVS can work seamlessly with other libraries like numpy, cupy, tensorflow, and pytorch, even without having to copy device memory.

Where to next?

cuVS is free and open source software, licesed under Apache 2.0 Once you are familiar with and/or have used cuVS, you can access the developer community most easily through Github. Please open Github issues for any bugs, questions or feature requests.

Social media

You can access the RAPIDS community through Slack , Stack Overflow and X

Blogs

We frequently publish blogs on GPU-enabled vector search, which can provide great deep dives into various important topics and breakthroughs:

  1. Accelerated Vector Search: Approximating with cuVS IVF-Flat
  2. Accelerating Vector Search with cuVS IVF-PQ

Research

For the interested reader, many of the accelerated implementations in cuVS are also based on research papers which can provide a lot more background. We also ask you to please cite the corresponding algorithms by referencing them in your own research.

  1. CAGRA: Highly Parallel Graph Construction and Approximate Nearest Neighbor Search
  2. Top-K Algorithms on GPU: A Comprehensive Study and New Methods
  3. Fast K-NN Graph Construction by GPU Based NN-Descent
  4. cuSLINK: Single-linkage Agglomerative Clustering on the GPU
  5. GPU Semiring Primitives for Sparse Neighborhood Methods

Get involved

We always welcome patches for new features and bug fixes. Please read our contributing guide for more information on contributing patches to cuVS.

.. toctree::
   :hidden:

   choosing_and_configuring_indexes.rst
   vector_databases_vs_vector_search.rst
   tuning_guide.rst
   comparing_indexes.rst
   indexes/indexes.rst
   api_basics.rst
   api_interoperability.rst
   working_with_ann_indexes.rst
   filtering.rst