Bruteforce#

The bruteforce method is running the KNN algorithm. It performs an extensive search, and in contrast to ANN methods produces an exact result.

#include <cuvs/neighbors/bruteforce.hpp>

namespace cuvs::neighbors::bruteforce

Index#

template<typename T>
struct index : public cuvs::neighbors::ann::index#
#include <brute_force.hpp>

Brute Force index.

The index stores the dataset and norms for the dataset in device memory.

Template Parameters:

T – data element type

Public Functions

cuvs::distance::DistanceType metric() const noexcept#

Distance metric used for retrieval

T metric_arg() const noexcept#

Metric argument

size_t size() const noexcept#

Total length of the index (number of vectors).

size_t dim() const noexcept#

Dimensionality of the data.

raft::device_matrix_view<const T, int64_t, raft::row_major> dataset() const noexcept#

Dataset [size, dim]

raft::device_vector_view<const T, int64_t, raft::row_major> norms() const#

Dataset norms

bool has_norms() const noexcept#

Whether ot not this index has dataset norms

Index build#

auto build(raft::resources const &handle, raft::device_matrix_view<const float, int64_t, raft::row_major> dataset, cuvs::distance::DistanceType metric = cuvs::distance::DistanceType::L2Unexpanded, float metric_arg = 0) -> cuvs::neighbors::brute_force::index<float>#

Build the index from the dataset for efficient search.

Usage example:

using namespace cuvs::neighbors;
// create and fill the index from a [N, D] dataset
auto index = brute_force::build(handle, dataset, metric);

Parameters:
  • handle[in]

  • dataset[in] a device pointer to a row-major matrix [n_rows, dim]

  • metric[in] cuvs::distance::DistanceType

  • metric_arg[in] metric argument

Returns:

the constructed ivf-flat index