vicinity  by MinishLab

Vector store for nearest neighbor search with unified backend interface

created 8 months ago
296 stars

Top 90.6% on sourcepulse

GitHubView on GitHub
Project Summary

Vicinity is a lightweight, low-dependency Python library designed to simplify and standardize nearest neighbor search across various vector indexing backends. It targets developers and researchers who need to compare different ANN algorithms and distance metrics without learning multiple APIs, offering a unified interface for experimentation and evaluation.

How It Works

Vicinity provides a consistent API for interacting with multiple underlying vector search libraries. It abstracts away the specific implementation details of each backend, allowing users to swap them out easily. The library supports various similarity metrics (cosine, Euclidean, etc.) and offers a unified way to perform k-NN and threshold searches. It also includes functionality for saving/loading vector stores and evaluating backend performance (QPS, recall).

Quick Start & Requirements

  • Primary install: pip install vicinity or pip install vicinity[all] for all backends and integrations.
  • Prerequisites: Python. Specific backends may have their own dependencies (e.g., FAISS, HNSWlib).
  • Links: Quickstart, Main Features, Supported Backends, Installation.

Highlighted Details

  • Unified interface for 7+ ANN libraries including FAISS, HNSW, USEARCH, ANNOY, and PyNNDescent.
  • Supports Hugging Face Hub integration for pushing and loading vector stores.
  • Includes an evaluate method for benchmarking QPS and recall.
  • Offers both exact (BASIC) and approximate nearest neighbor search capabilities.

Maintenance & Community

The project is maintained by MinishLab. No specific community links (Discord/Slack) or roadmap details are provided in the README.

Licensing & Compatibility

  • License: MIT.
  • Compatibility: Permissive MIT license allows for commercial use and integration with closed-source projects.

Limitations & Caveats

Most ANN backends do not support dynamic item deletion; index recreation is required. Insertion is supported by FAISS, HNSW, and USEARCH, while the BASIC backend supports both insertion and deletion.

Health Check
Last commit

2 weeks ago

Responsiveness

1 day

Pull Requests (30d)
2
Issues (30d)
1
Star History
27 stars in the last 90 days

Explore Similar Projects

Feedback? Help us improve.