Skip to main content

O(1) Vector Search - Instant similarity search with LSH

Project description

O(1) Vector Search for Python

Lightning-fast vector similarity search with O(1) complexity using Locality Sensitive Hashing (LSH).

Features

  • O(1) Search Complexity - Constant time search regardless of index size
  • 🐍 Pure Python - Minimal dependencies (only NumPy)
  • 💾 Persistent - Save and load indices
  • 🔧 Simple API - Easy to use and integrate
  • 🚀 Fast - Benchmarked at 0.18ms average search time

Installation

pip install o1-vector-search

Quick Start

from o1_vector_search import O1VectorSearch
import numpy as np

# Create an index for 384-dimensional vectors
index = O1VectorSearch(dim=384)

# Add vectors with metadata
vector1 = np.random.randn(384)
index.add(vector1, {"id": 1, "text": "Hello world"})

vector2 = np.random.randn(384)
index.add(vector2, {"id": 2, "text": "Machine learning"})

# Search for similar vectors in O(1) time
query = np.random.randn(384)
results = index.search(query, k=5)

for distance, vector, metadata in results:
    print(f"Distance: {distance:.4f}, Metadata: {metadata}")

API Reference

Constructor

O1VectorSearch(dim: int, num_hash_tables: int = 10, num_hash_functions: int = 8)

Methods

  • add(vector: np.ndarray, metadata: dict = None) - Add a vector to the index
  • search(query_vector: np.ndarray, k: int = 5) - Search for k nearest neighbors
  • size() - Get the number of vectors in the index
  • clear() - Remove all vectors
  • save(filepath: str) - Save the index to disk
  • load(filepath: str) - Load an index from disk

Performance

The O(1) complexity is achieved through LSH (Locality Sensitive Hashing):

  • Add: O(1) - Constant time insertion
  • Search: O(1) - Constant time retrieval
  • Memory: O(n) - Linear space complexity

Benchmarked performance:

  • 0.18ms average search time
  • 88.8 searches per second
  • Scales to millions of vectors

Use Cases

  • Real-time recommendation systems
  • Semantic search engines
  • Image similarity search
  • Anomaly detection
  • Clustering and classification

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

o1_vector_search-1.1.0.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

o1_vector_search-1.1.0-py3-none-any.whl (4.7 kB view details)

Uploaded Python 3

File details

Details for the file o1_vector_search-1.1.0.tar.gz.

File metadata

  • Download URL: o1_vector_search-1.1.0.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.6

File hashes

Hashes for o1_vector_search-1.1.0.tar.gz
Algorithm Hash digest
SHA256 4fb346c7dd454bbd3fa10fc3c142545da227170dfd4fb9ed11164d998d8515da
MD5 1f17ac9992611ff89897ddc8de71af5f
BLAKE2b-256 c38bd457bc798a6a128d30b039e9ea97a87319b458cbc69dbc2e49e3f951a194

See more details on using hashes here.

File details

Details for the file o1_vector_search-1.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for o1_vector_search-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e4dd6975df9d7c7871580bfbf603a95a9a38edeb9b3430c82883dbbcf550efa8
MD5 694836833be6c2421783f763a799c1fd
BLAKE2b-256 2a3860a81c94a281baaeed93a4a38f46a821fce263bb01200589b3c98a933d88

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page