暴力 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")