
QuickStart•主な機能•サポートされているバックエンド•インストール
近くは、軽量の低依存性ベクターストアです。さまざまなバックエンドと評価をサポートして、最近隣の検索にシンプルで直感的なインターフェイスを提供します。
そこには多くの最近隣人のパッケージと方法があります。しかし、それらを比較するのは難しいことがわかりました。すべてのパッケージには、独自のインターフェイス、癖、制限があり、新しいパッケージの学習には時間がかかります。それに加えて、さまざまなパッケージをどのように効果的に評価しますか?どれがあなたのユースケースに最適かをどのようにして知っていますか?
これが近くの場所です。新しいパッケージまたはバックエンドごとに新しいインターフェイスを学習する代わりに、周辺はすべてのバックエンドに統一されたインターフェイスを提供します。これにより、さまざまなインデックス作成方法と距離メトリックを簡単に実験し、ユースケースに最適なメトリックを選択できます。近くは、さまざまなバックエンドのパフォーマンスを評価する簡単な方法を提供し、1秒あたりのクエリを測定してリコールすることができます。
パッケージをインストールします:
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 Backendsは、動的削除をサポートしていません。アイテムを削除するには、インデックスを再作成する必要があります。挿入は、次のバックエンドでサポートされています: FAISS 、 HNSW 、およびUsearch 。 BASICバックエンドは、挿入と削除の両方をサポートします。
| バックエンド | パラメーター | 説明 | デフォルト値 |
|---|---|---|---|
| 基本 | metric | 使用する類似性メトリック( cosine 、 euclidean )。 | "cosine" |
| いらいらさせる | metric | 使用する類似性メトリック( dot 、 euclidean 、 cosine )。 | "cosine" |
trees | インデックス作成に使用する木の数。 | 100 | |
length | データセットのオプションの長さ。 | None | |
| ファイス | 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]mit