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 indexsearch(query_vector: np.ndarray, k: int = 5)- Search for k nearest neighborssize()- Get the number of vectors in the indexclear()- Remove all vectorssave(filepath: str)- Save the index to diskload(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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4fb346c7dd454bbd3fa10fc3c142545da227170dfd4fb9ed11164d998d8515da
|
|
| MD5 |
1f17ac9992611ff89897ddc8de71af5f
|
|
| BLAKE2b-256 |
c38bd457bc798a6a128d30b039e9ea97a87319b458cbc69dbc2e49e3f951a194
|
File details
Details for the file o1_vector_search-1.1.0-py3-none-any.whl.
File metadata
- Download URL: o1_vector_search-1.1.0-py3-none-any.whl
- Upload date:
- Size: 4.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4dd6975df9d7c7871580bfbf603a95a9a38edeb9b3430c82883dbbcf550efa8
|
|
| MD5 |
694836833be6c2421783f763a799c1fd
|
|
| BLAKE2b-256 |
2a3860a81c94a281baaeed93a4a38f46a821fce263bb01200589b3c98a933d88
|