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]麻省理工學院