
QuickStart • 주요 기능 • 지원되는 백엔드 • 설치
인근은 가벼운 가벼우면서 낮은 의존성 벡터 저장소입니다. 가장 가까운 이웃 검색을위한 간단하고 직관적 인 인터페이스를 제공하며 다양한 백엔드 및 평가를 지원합니다.
가장 가까운 이웃 패키지와 방법이 많이 있습니다. 그러나 우리는 그것들을 비교하기가 어렵다는 것을 알았습니다. 모든 패키지에는 자체 인터페이스, 기발한 및 제한 사항이 있으며 새로운 패키지를 배우는 데 시간이 걸릴 수 있습니다. 그 외에도 다른 패키지를 어떻게 효과적으로 평가합니까? 유스 케이스에 가장 적합한 것이 어느 것이 가장 좋은지 어떻게 알 수 있습니까?
이곳은 인근이 들어오는 곳입니다. 각각의 새로운 패키지 또는 백엔드에 대한 새로운 인터페이스를 배우는 대신, 인근은 모든 백엔드에 대한 통합 인터페이스를 제공합니다. 이를 통해 다양한 인덱싱 방법과 거리 지표를 쉽게 실험하고 유스 케이스에 가장 적합한 것을 선택할 수 있습니다. 인근은 또한 다른 백엔드의 성능을 평가하는 간단한 방법을 제공하여 초당 쿼리를 측정하고 리콜을 할 수 있습니다.
패키지를 다음과 같이 설치하십시오.
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 : 스칼라 Quantizer를 사용한 반전 파일 검색.ivfpq : 제품 Quantizer를 사용한 반전 파일 검색.ivfpqr : 제품 양자화기 및 정제를 사용한 반전 파일 검색. 참고 : Ann Backends는 동적 삭제를 지원하지 않습니다. 항목을 삭제하려면 인덱스를 재현해야합니다. 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 | |
| 핀 디스크 | 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