Skip to main content

cuvsIvfFlatSearch

Function cuvsIvfFlatSearch 

Source
pub unsafe extern "C" fn cuvsIvfFlatSearch(
    res: cuvsResources_t,
    search_params: cuvsIvfFlatSearchParams_t,
    index: cuvsIvfFlatIndex_t,
    queries: *mut DLManagedTensor,
    neighbors: *mut DLManagedTensor,
    distances: *mut DLManagedTensor,
    filter: cuvsFilter,
) -> cuvsError_t
Expand description

@defgroup ivf_flat_c_index_search IVF-Flat index search @{ / /** @brief Search a IVF-Flat index with a DLManagedTensor which has underlying DLDeviceType equal to kDLCUDA, kDLCUDAHost, kDLCUDAManaged. It is also important to note that the IVF-Flat Index must have been built with the same type of queries, such that index.dtype.code == queries.dl_tensor.dtype.code Types for input are: 1. queries: kDLDataType.code == kDLFloat and kDLDataType.bits = 32 2. neighbors: kDLDataType.code == kDLUInt and kDLDataType.bits = 32 3. distances: kDLDataType.code == kDLFloat and kDLDataType.bits = 32

@code {.c} #include <cuvs/core/c_api.h> #include <cuvs/neighbors/ivf_flat.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 cuvsIvfFlatSearchParams_t search_params; cuvsError_t params_create_status = cuvsIvfFlatSearchParamsCreate(&search_params);

// Search the index built using ivfFlatBuild cuvsError_t search_status = cuvsIvfFlatSearch(res, search_params, index, &queries, &neighbors, &distances);

// de-allocate search_params and res cuvsError_t params_destroy_status = cuvsIvfFlatSearchParamsDestroy(search_params); cuvsError_t res_destroy_status = cuvsResourcesDestroy(res); @endcode

@param[in] res cuvsResources_t opaque C handle @param[in] search_params cuvsIvfFlatSearchParams_t used to search IVF-Flat index @param[in] index ivfFlatIndex which has been returned by ivfFlatBuild @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 @param[in] filter cuvsFilter input filter that can be used to filter queries and neighbors based on the given bitset.