vicinity
v0.3.3

快速启动•主要功能•支持后端•安装
附近是一个轻巧的低依赖性矢量存储。它提供了一个简单直观的接口,用于最近的邻居搜索,并支持不同的后端和评估。
那里有许多最近的邻居包和方法。但是,我们发现很难比较它们。每个软件包都有自己的界面,怪癖和限制,并且学习一个新软件包可能很耗时。除此之外,您如何有效地评估不同的软件包?您怎么知道哪一个最适合您的用例?
这就是附近的来源。这使您可以轻松地尝试使用不同的索引方法和距离指标,并为您的用例选择最佳的指标。附近还提供了一种评估不同后端性能的简单方法,使您可以测量每秒查询并召回。
安装包裹:
pip install vicinity可选地,安装任何受支持的后端,或简单地安装所有这些后端:
pip install vicinity[all]以下代码片段演示了如何使用附近最近的邻居搜索:
import numpy as np
from vicinity import Vicinity , Backend , Metric
# Create some dummy data
items = [ "triforce" , "master sword" , "hylian shield" , "boomerang" , "hookshot" ]
vectors = np . random . rand ( len ( items ), 128 )
# Initialize the Vicinity instance (using the basic backend and cosine metric)
vicinity = Vicinity . from_vectors_and_items (
vectors = vectors ,
items = items ,
backend_type = Backend . BASIC ,
metric = Metric . COSINE
)
# Create a query vector
query_vector = np . random . rand ( 128 )
# Query for nearest neighbors with a top-k search
results = vicinity . query ( query_vector , k = 3 )
# Query for nearest neighbors with a threshold search
results = vicinity . query_threshold ( query_vector , threshold = 0.9 )
# Query with a list of query vectors
query_vectors = np . random . rand ( 5 , 128 )
results = vicinity . query ( query_vectors , k = 3 )保存和加载矢量商店:
vicinity . save ( 'my_vector_store' )
vicinity = Vicinity . load ( 'my_vector_store' )评估后端:
# Use the first 1000 vectors as query vectors
query_vectors = vectors [: 1000 ]
# Evaluate the Vicinity instance by measuring the queries per second and recall
qps , recall = vicinity . evaluate (
full_vectors = vectors ,
query_vectors = query_vectors ,
)附近提供以下功能:
支持以下后端:
BASIC :用于矢量存储和搜索的简单(精确匹配)平面索引。flat :精确搜索。ivf :倒文件搜索。hnsw :层次可导航的小世界图。lsh :局部敏感的哈希。scalar :标量量化器。pq :产品量化器。ivf_scalar :带有标量量化的倒文件搜索。ivfpq :带有产品量化的倒数文件搜索。ivfpqr :使用产品量化和改进的倒文件搜索。注意:ANN后端不支持动态删除。要删除项目,您需要重新创建索引。以下后端支持插入: FAISS , HNSW和Usearch 。 BASIC后端支持插入和删除。
| 后端 | 范围 | 描述 | 默认值 |
|---|---|---|---|
| 基本的 | metric | 相似性公制( cosine , euclidean )。 | "cosine" |
| 烦人 | metric | 使用相似性度量( dot , euclidean , cosine )。 | "cosine" |
trees | 用于索引的树数。 | 100 | |
length | 数据集的可选长度。 | None | |
| faiss | metric | 相似性公制( cosine , l2 )。 | "cosine" |
index_type | faiss索引的类型( flat , ivf , hnsw , lsh , scalar , pq , ivf_scalar , ivfpq , ivfpqr )。 | "hnsw" | |
nlist | IVF指数的细胞数量。 | 100 | |
m | PQ和HNSW索引的子定价器数量。 | 8 | |
nbits | LSH和PQ索引的位数。 | 8 | |
refine_nbits | IVFPQR索引中改进阶段的位数。 | 8 | |
| HNSW | metric | 相似性的使用空间( cosine , l2 )。 | "cosine" |
ef_construction | 索引构造过程中动态列表的大小。 | 200 | |
m | 每层连接数量。 | 16 | |
| Pynndescent | metric | 相似性公制( cosine , euclidean , manhattan )。 | "cosine" |
n_neighbors | 用于搜索的邻居数量。 | 15 | |
| usearch | metric | 使用相似性度量( cos , ip , l2sq , hamming , tanimoto )。 | "cos" |
connectivity | 图中每个节点的连接数量。 | 16 | |
expansion_add | 在图形构造过程中考虑的候选人数量。 | 128 | |
expansion_search | 搜索过程中考虑的候选人数量。 | 64 | |
| 旅行者 | metric | 相似性的使用空间( cosine , l2 )。 | "cosine" |
ef_construction | 将新向量插入索引时,此索引搜索的向量数量。 | 200 | |
m | 树的内部数据结构中的节点之间的连接数。 | 16 |
可用以下安装选项:
# Install the base package
pip install vicinity
# Install all backends
pip install vicinity[all]
# Install specific backends
pip install vicinity[annoy]
pip install vicinity[faiss]
pip install vicinity[hnsw]
pip install vicinity[pynndescent]
pip install vicinity[usearch]
pip install vicinity[voyager]麻省理工学院