
QuickStart • Fitur Utama • Backends yang Didukung • Instalasi
Vicinity adalah toko vektor ringan dan rendah ketergantungan. Ini menyediakan antarmuka yang sederhana dan intuitif untuk pencarian tetangga terdekat, dengan dukungan untuk backend dan evaluasi yang berbeda.
Ada banyak paket dan metode tetangga terdekat di luar sana. Namun, kami merasa sulit untuk membandingkannya. Setiap paket memiliki antarmuka, keanehan, dan keterbatasannya sendiri, dan mempelajari paket baru dapat memakan waktu. Selain itu, bagaimana Anda mengevaluasi paket yang berbeda secara efektif? Bagaimana Anda tahu mana yang terbaik untuk kasus penggunaan Anda?
Di sinilah sekitarnya masuk. Alih -alih mempelajari antarmuka baru untuk setiap paket atau backend baru, sekitarnya menyediakan antarmuka terpadu untuk semua backend. Ini memungkinkan Anda untuk dengan mudah bereksperimen dengan metode pengindeksan dan metrik jarak yang berbeda dan memilih yang terbaik untuk kasing Anda. Vicinity juga menyediakan cara sederhana untuk mengevaluasi kinerja backend yang berbeda, memungkinkan Anda untuk mengukur kueri per detik dan penarikan.
Instal paket dengan:
pip install vicinitySecara opsional, instal salah satu backend yang didukung, atau cukup instal semuanya dengan:
pip install vicinity[all]Cuplikan kode berikut menunjukkan cara menggunakan sekitarnya untuk pencarian tetangga terdekat:
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 )Menyimpan dan memuat toko vektor:
vicinity . save ( 'my_vector_store' )
vicinity = Vicinity . load ( 'my_vector_store' )Mengevaluasi backend:
# 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 ,
)Vicinity menyediakan fitur -fitur berikut:
Backend berikut didukung:
BASIC : Indeks datar sederhana (pencocokan) untuk penyimpanan dan pencarian vektor.flat : Pencarian yang tepat.ivf : Pencarian file terbalik.hnsw : Grafik Dunia Kecil yang Dapat Dicabut Hierarkis.lsh : Hashing sensitif lokalitas.scalar : Scalar Quantizer.pq : Quantizer Produk.ivf_scalar : Pencarian file terbalik dengan quantizer skalar.ivfpq : Pencarian File Terbalik dengan Produk Quantizer.ivfpqr : Pencarian file terbalik dengan produk dan penyempurnaan produk. Catatan: Backends JST tidak mendukung penghapusan dinamis. Untuk menghapus item, Anda perlu membuat ulang indeks. Penyisipan didukung dalam backend berikut: FAISS , HNSW , dan Usearch . Backend BASIC mendukung penyisipan dan penghapusan.
| Backend | Parameter | Keterangan | Nilai default |
|---|---|---|---|
| DASAR | metric | Metrik kesamaan untuk digunakan ( cosine , euclidean ). | "cosine" |
| MENGGANGGU | metric | Metrik kesamaan untuk digunakan ( dot , euclidean , cosine ). | "cosine" |
trees | Jumlah pohon untuk digunakan untuk pengindeksan. | 100 | |
length | Panjang dataset opsional. | None | |
| Faiss | metric | Metrik kesamaan untuk digunakan ( cosine , l2 ). | "cosine" |
index_type | Jenis Indeks FAISS ( flat , ivf , hnsw , lsh , scalar , pq , ivf_scalar , ivfpq , ivfpqr ). | "hnsw" | |
nlist | Jumlah sel untuk indeks IVF. | 100 | |
m | Jumlah subquanzer untuk indeks PQ dan HNSW. | 8 | |
nbits | Jumlah bit untuk indeks LSH dan PQ. | 8 | |
refine_nbits | Jumlah bit untuk tahap perbaikan dalam indeks IVFPQR. | 8 | |
| HNSW | metric | Ruang kesamaan untuk digunakan ( cosine , l2 ). | "cosine" |
ef_construction | Ukuran daftar dinamis selama konstruksi indeks. | 200 | |
m | Jumlah koneksi per lapisan. | 16 | |
| Pynndescent | metric | Metrik kesamaan untuk digunakan ( cosine , euclidean , manhattan ). | "cosine" |
n_neighbors | Jumlah tetangga untuk digunakan untuk pencarian. | 15 | |
| Usearch | metric | Metrik kesamaan untuk digunakan ( cos , ip , l2sq , hamming , tanimoto ). | "cos" |
connectivity | Jumlah koneksi per node dalam grafik. | 16 | |
expansion_add | Jumlah kandidat yang dipertimbangkan selama konstruksi grafik. | 128 | |
expansion_search | Jumlah kandidat yang dipertimbangkan selama pencarian. | 64 | |
| Voyager | metric | Ruang kesamaan untuk digunakan ( cosine , l2 ). | "cosine" |
ef_construction | Jumlah vektor yang dicari indeks ini saat memasukkan vektor baru ke dalam indeks. | 200 | |
m | Jumlah koneksi antara node dalam struktur data internal pohon. | 16 |
Opsi instalasi berikut tersedia:
# 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