pub unsafe extern "C" fn cuvsHnswSearch(
res: cuvsResources_t,
params: cuvsHnswSearchParams_t,
index: cuvsHnswIndex_t,
queries: *mut DLManagedTensor,
neighbors: *mut DLManagedTensor,
distances: *mut DLManagedTensor,
) -> cuvsError_tExpand description
@defgroup hnsw_c_index_search C API for CUDA ANN Graph-based nearest neighbor search
@{
/
/**
@brief Search a HNSW index with a DLManagedTensor which has underlying
DLDeviceType equal to kDLCPU, kDLCUDAHost, or kDLCUDAManaged.
It is also important to note that the HNSW Index must have been built
with the same type of queries, such that index.dtype.code == queries.dl_tensor.dtype.code
Supported types for input are:
1. queries:
a. kDLDataType.code == kDLFloat and kDLDataType.bits = 32
b. kDLDataType.code == kDLInt and kDLDataType.bits = 8
c. kDLDataType.code == kDLUInt and kDLDataType.bits = 8
2. neighbors: kDLDataType.code == kDLUInt and kDLDataType.bits = 64
3. distances: kDLDataType.code == kDLFloat and kDLDataType.bits = 32
NOTE: When hierarchy is NONE, the HNSW index can only be searched by the hnswlib wrapper in
cuVS, as the format is not compatible with the original hnswlib.
@code {.c} #include <cuvs/core/c_api.h> #include <cuvs/neighbors/hnsw.h>
// Create cuvsResources_t cuvsResources_t res; cuvsError_t res_create_status = cuvsResourcesCreate(&res);
// Assume a populated DLManagedTensor type here
DLManagedTensor dataset;
DLManagedTensor queries;
DLManagedTensor neighbors;
// Create default search params cuvsHnswSearchParams_t params; cuvsError_t params_create_status = cuvsHnswSearchParamsCreate(¶ms);
// Search the index built using cuvsHnswFromCagra
cuvsError_t search_status = cuvsHnswSearch(res, params, index, &queries, &neighbors,
&distances);
// de-allocate params and res
cuvsError_t params_destroy_status = cuvsHnswSearchParamsDestroy(params);
cuvsError_t res_destroy_status = cuvsResourcesDestroy(res);
@endcode
@param[in] res cuvsResources_t opaque C handle
@param[in] params cuvsHnswSearchParams_t used to search Hnsw index
@param[in] index cuvsHnswIndex which has been returned by cuvsHnswFromCagra
@param[in] queries DLManagedTensor* queries dataset to search
@param[out] neighbors DLManagedTensor* output k neighbors for queries
@param[out] distances DLManagedTensor* output k distances for queries