
QuickStart • Hauptmerkmale • unterstützte Backends • Installation
Die Umgebung ist ein leichter Store mit niedrigem Abhängigkeit. Es bietet eine einfache und intuitive Schnittstelle für die Suche nach Nachbarn mit Unterstützung für verschiedene Backends und Bewertung.
Es gibt viele Pakete und Methoden der nächsten Nachbarn. Wir fanden es jedoch schwierig, sie zu vergleichen. Jedes Paket verfügt über eine eigene Oberfläche, Macken und Einschränkungen, und das Erlernen eines neuen Pakets kann zeitaufwändig sein. Wie bewerten Sie außerdem verschiedene Pakete effektiv? Woher wissen Sie, welches für Ihren Anwendungsfall am besten geeignet ist?
Hier kommt die Umgebung ins Spiel. Anstatt eine neue Schnittstelle für jedes neue Paket oder jedes neue Backend zu lernen, bietet Victinity eine einheitliche Schnittstelle für alle Backends. Auf diese Weise können Sie einfach mit unterschiedlichen Indizierungsmethoden und Distanzmetriken experimentieren und das Beste für Ihren Anwendungsfall auswählen. Die Umgebung bietet auch eine einfache Möglichkeit, die Leistung verschiedener Backends zu bewerten, sodass Sie die Abfragen pro Sekunde messen und sich abrufen können.
Installieren Sie das Paket mit:
pip install vicinityInstallieren Sie optional eine der unterstützten Backends oder installieren Sie einfach alle mit:
pip install vicinity[all]Der folgende Code -Snippet zeigt, wie die Umgebung für die nächste Suche nach Nachbarn verwendet wird:
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 )Speichern und Laden eines Vektor Store:
vicinity . save ( 'my_vector_store' )
vicinity = Vicinity . load ( 'my_vector_store' )Bewertung eines Backends:
# 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 ,
)Die Umgebung liefert die folgenden Funktionen:
Die folgenden Backends werden unterstützt:
BASIC : Ein einfacher (exakter passender) flacher Index für Vektorspeicher und -suche.flat : Genaue Suche.ivf : Umgekehrte Dateisuche.hnsw : Hierarchical Navigable Small World Graph.lsh : Lokalität sensibler Hashing.scalar : Skalarquantizer.pq : Produktquantisierer.ivf_scalar : Invertierte Dateisuche mit Skalarquantizer.ivfpq : Invertierte Dateisuche mit Produktquantizer.ivfpqr : Invertierte Dateisuche mit Produktquantizer und Verfeinerung. Hinweis: Die Ann Backends unterstützen keine dynamische Löschung. Um Artikel zu löschen, müssen Sie den Index neu erstellen. Die Einfügung wird in den folgenden Backends unterstützt: FAISS , HNSW und Usearch . Das BASIC Backend unterstützt sowohl Insertion als auch Löschung.
| Backend | Parameter | Beschreibung | Standardwert |
|---|---|---|---|
| BASIC | metric | Ähnlichkeitsmetrik zu verwenden ( cosine , euclidean ). | "cosine" |
| BELÄSTIGEN | metric | Ähnlichkeitsmetrik zu verwenden ( dot , euclidean , cosine ). | "cosine" |
trees | Anzahl der Bäume, die zur Indexierung verwendet werden sollen. | 100 | |
length | Optionale Länge des Datensatzes. | None | |
| Faiss | metric | Ähnlichkeitsmetrik zu verwenden ( cosine , l2 ). | "cosine" |
index_type | Art des FAISS -Index ( flat , ivf , hnsw , lsh , scalar , pq , ivf_scalar , ivfpq , ivfpqr ). | "hnsw" | |
nlist | Anzahl der Zellen für IVF -Indizes. | 100 | |
m | Anzahl der Unterquantisatoren für PQ- und HNSW -Indizes. | 8 | |
nbits | Anzahl der Bits für LSH- und PQ -Indizes. | 8 | |
refine_nbits | Anzahl der Bits für die Verfeinerungsstufe in IVFPQR -Indizes. | 8 | |
| Hnsw | metric | Ähnlichkeitsraum zu verwenden ( cosine , l2 ). | "cosine" |
ef_construction | Größe der dynamischen Liste während der Indexkonstruktion. | 200 | |
m | Anzahl der Verbindungen pro Schicht. | 16 | |
| Pynndescent | metric | Ähnlichkeitsmetrik zu verwenden ( cosine , euclidean , manhattan ). | "cosine" |
n_neighbors | Anzahl der Nachbarn für die Suche. | 15 | |
| Usearch | metric | Ähnlichkeitsmetrik zu verwenden ( cos , ip , l2sq , hamming , tanimoto ). | "cos" |
connectivity | Anzahl der Verbindungen pro Knoten im Diagramm. | 16 | |
expansion_add | Anzahl der während der Grafikkonstruktion berücksichtigten Kandidaten. | 128 | |
expansion_search | Anzahl der während der Suche in Betracht gezogenen Kandidaten. | 64 | |
| Voyager | metric | Ähnlichkeitsraum zu verwenden ( cosine , l2 ). | "cosine" |
ef_construction | Die Anzahl der Vektoren, die dieser Index beim Einfügen eines neuen Vektors in den Index durchsucht. | 200 | |
m | Die Anzahl der Verbindungen zwischen Knoten in der internen Datenstruktur des Baumes. | 16 |
Die folgenden Installationsoptionen sind verfügbar:
# 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