Vicinity:轻量级最近邻搜索工具
1. 项目介绍
Vicinity 是一个轻量级、低依赖的向量存储库。它提供了一个简单直观的接口用于最近邻搜索,并支持多种后端和评估方法。在众多最近邻搜索包和方法中,Vicinity 旨在通过提供统一的后端接口,帮助用户轻松尝试不同的索引方法和距离度量,从而选择最适合自己用例的方案。此外,Vicinity 还提供了一种简单的评估方式,以便测量不同后端的查询每秒(QPS)和召回率。
2. 项目快速启动
首先,您需要安装 Vicinity 包。使用以下命令进行安装:
pip install vicinity
如果要安装所有可选的后端和集成,可以使用以下命令:
pip install vicinity[all]
接下来,以下是一个使用 Vicinity 进行最近邻搜索的代码示例:
import numpy as np
from vicinity import Vicinity, Backend, Metric
# 创建一些示例数据
items = ["triforce", "master sword", "hylian shield", "boomerang", "hookshot"]
vectors = np.random.rand(len(items), 128)
# 初始化 Vicinity 实例(使用基本后端和余弦度量)
vicinity = Vicinity.from_vectors_and_items(
vectors=vectors,
items=items,
backend_type=Backend.BASIC,
metric= Metric.COSINE
)
# 创建一个查询向量
query_vector = np.random.rand(128)
# 进行最近邻搜索
results = vicinity.query(query_vector, k=3)
保存和加载向量存储:
# 保存向量存储
vicinity.save('my_vector_store')
# 加载向量存储
vicinity = Vicinity.load('my_vector_store')
3. 应用案例和最佳实践
3.1 使用不同后端
Vicinity 支持多种后端,如 HNSW、ANNOY、FAISS 等。以下是使用不同后端的示例:
# 使用 HNSW 后端
vicinity_hnsw = Vicinity.from_vectors_and_items(
vectors=vectors,
items=items,
backend_type=Backend.HNSW,
metric= Metric.COSINE
)
# 使用 FAISS 的 IVF 后端
vicinity_faiss_ivf = Vicinity.from_vectors_and_items(
vectors=vectors,
items=items,
backend_type=Backend.FAISS,
metric= Metric.COSINE,
index_type='ivf'
)
3.2 性能评估
使用 Vicinity 的 evaluate
方法可以轻松评估不同后端的性能:
query_vectors = vectors[:1000]
qps, recall = vicinity.evaluate(
full_vectors=vectors,
query_vectors=query_vectors
)
4. 典型生态项目
Vicinity 可以与多种开源项目集成,例如:
- PyTorch: 用于深度学习模型训练。
- Scikit-learn: 提供简单的机器学习算法。
- Dask: 用于并行计算。
这些集成可以帮助用户在 Vicinity 的基础上构建更复杂的数据处理和机器学习工作流。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考