
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 : Поиск инвертированного файла со скалярным квантозом.ivfpq : инвертированный поиск файлов с квантозом продукта.ivfpqr : инвертированный поиск файлов с квантователем продукта и уточнением. Примечание: бэкэнды ANN не поддерживают динамическое удаление. Чтобы удалить предметы, вам нужно воссоздать индекс. Вставка поддерживается в следующих бэкэндах: 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 | Количество ячеек для индексов ЭКО. | 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 | |
| Voyager | 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]Грань