暴力搜索#

暴力搜索方法运行 KNN 算法。它执行全面的搜索,与 ANN 方法不同,它可以产生精确结果。

#include <raft/neighbors/bruteforce.h>

索引#

typedef cuvsBruteForceIndex *cuvsBruteForceIndex_t#
cuvsError_t cuvsBruteForceIndexCreate(cuvsBruteForceIndex_t *index)#

分配 BRUTEFORCE 索引。

参数:

index[in] cuvsBruteForceIndex_t 要分配的

返回:

cuvsError_t

cuvsError_t cuvsBruteForceIndexDestroy(cuvsBruteForceIndex_t index)#

释放 BRUTEFORCE 索引。

参数:

index[in] cuvsBruteForceIndex_t 要释放的

struct cuvsBruteForceIndex#
#include <brute_force.h>

用于保存 cuvs::neighbors::brute_force::index 地址及其活动训练数据类型的结构体。

索引构建#

cuvsError_t cuvsBruteForceBuild(
cuvsResources_t res,
DLManagedTensor *dataset,
cuvsDistanceType metric,
float metric_arg,
cuvsBruteForceIndex_t index
)#

使用底层 DLDeviceType 等于 kDLCUDAkDLCUDAHostkDLCUDAManagedkDLCPUDLManagedTensor 构建 BRUTEFORCE 索引。此外,可接受的底层类型为:

  1. kDLDataType.code == kDLFloatkDLDataType.bits = 32

  2. kDLDataType.code == kDLFloatkDLDataType.bits = 16

#include <cuvs/core/c_api.h>
#include <cuvs/neighbors/brute_force.h>

// Create cuvsResources_t
cuvsResources_t res;
cuvsError_t res_create_status = cuvsResourcesCreate(&res);

// Assume a populated `DLManagedTensor` type here
DLManagedTensor dataset;

// Create BRUTEFORCE index
cuvsBruteForceIndex_t index;
cuvsError_t index_create_status = cuvsBruteForceIndexCreate(&index);

// Build the BRUTEFORCE Index
cuvsError_t build_status = cuvsBruteForceBuild(res, &dataset_tensor, L2Expanded, 0.f, index);

// de-allocate `index` and `res`
cuvsError_t index_destroy_status = cuvsBruteForceIndexDestroy(index);
cuvsError_t res_destroy_status = cuvsResourcesDestroy(res);
参数:
  • res[in] cuvsResources_t 不透明 C 句柄

  • dataset[in] DLManagedTensor* 训练数据集

  • metric[in] 度量

  • metric_arg[in] 度量参数

  • index[out] cuvsBruteForceIndex_t 新构建的 BRUTEFORCE 索引

返回:

cuvsError_t

索引序列化#

警告

doxygengroup: Cannot find group “bruteforce_c_index_serialize” in doxygen xml output for project “cuvs” from directory: ../../cpp/doxygen/_xml/