暴力 KNN#
索引#
- class cuvs.neighbors.brute_force.Index#
暴力法索引对象。此对象存储训练好的暴力法索引,可用于执行最近邻搜索。
- 属性:
- 已训练
索引构建#
- cuvs.neighbors.brute_force.build(dataset, metric='sqeuclidean', metric_arg=2.0, resources=None)[source]#
从数据集构建暴力法索引以实现高效搜索。
- 参数:
- dataset符合 CUDA 数组接口的矩阵,形状为 (n_samples, dim)
支持的 dtype [float32, float16]
- metric要使用的距离度量。默认为 sqeuclidean
- metric_argMinkowski 距离中 ‘p’ 的值
- resources用于重用 CUDA 资源的可选 cuVS Resource 句柄。
如果未提供 Resources,CUDA 资源将在函数内部分配并在函数退出前同步。如果提供了 resources,您需要在使用输出之前通过调用
resources.sync()
显式地自行同步。
- 返回:
- index: cuvs.neighbors.brute_force.Index
示例
>>> import cupy as cp >>> from cuvs.neighbors import brute_force >>> n_samples = 50000 >>> n_features = 50 >>> n_queries = 1000 >>> k = 10 >>> dataset = cp.random.random_sample((n_samples, n_features), ... dtype=cp.float32) >>> index = brute_force.build(dataset, metric="cosine") >>> distances, neighbors = brute_force.search(index, dataset, k) >>> distances = cp.asarray(distances) >>> neighbors = cp.asarray(neighbors)
索引搜索#
索引保存#
- cuvs.neighbors.brute_force.save(filename, Index index, bool include_dataset=True, resources=None)[source]#
将索引保存到文件。
序列化格式可能会发生变化,因此无法保证加载使用 cuvs 早期版本保存的索引能够正常工作。
- 参数:
- filenamestring
文件名。
- indexIndex
已训练的暴力法索引。
- resources用于重用 CUDA 资源的可选 cuVS Resource 句柄。
如果未提供 Resources,CUDA 资源将在函数内部分配并在函数退出前同步。如果提供了 resources,您需要在使用输出之前通过调用
resources.sync()
显式地自行同步。
示例
>>> import cupy as cp >>> from cuvs.neighbors import brute_force >>> n_samples = 50000 >>> n_features = 50 >>> dataset = cp.random.random_sample((n_samples, n_features), ... dtype=cp.float32) >>> # Build index >>> index = brute_force.build(dataset) >>> # Serialize and deserialize the brute_force index built >>> brute_force.save("my_index.bin", index) >>> index_loaded = brute_force.load("my_index.bin")
索引加载#
- cuvs.neighbors.brute_force.load(filename, resources=None)[source]#
从文件加载索引。
序列化格式可能会发生变化,因此无法保证加载使用 cuvs 早期版本保存的索引能够正常工作。
- 参数:
- filenamestring
文件名。
- resources用于重用 CUDA 资源的可选 cuVS Resource 句柄。
如果未提供 Resources,CUDA 资源将在函数内部分配并在函数退出前同步。如果提供了 resources,您需要在使用输出之前通过调用
resources.sync()
显式地自行同步。
- 返回:
- indexIndex
示例
>>> import cupy as cp >>> from cuvs.neighbors import brute_force >>> n_samples = 50000 >>> n_features = 50 >>> dataset = cp.random.random_sample((n_samples, n_features), ... dtype=cp.float32) >>> # Build index >>> index = brute_force.build(dataset) >>> # Serialize and deserialize the brute_force index built >>> brute_force.save("my_index.bin", index) >>> index_loaded = brute_force.load("my_index.bin")