| name | turbovec |
| description | High-performance vector index built on TurboQuant with Rust core and Python bindings |
| version | 1.0.0 |
| author | Hermes Agent |
| license | MIT |
| platforms | ["linux","macos","windows"] |
| metadata | {"hermes":{"tags":["vector-database","similarity-search","ml","rust","python"],"related_skills":["llama-cpp","serving-llms-vllm"]}} |
turbovec
A fast, lightweight vector index for similarity search, ideal for recommendation systems, semantic search, and RAG pipelines.
Prerequisites
Installation
pip install turbovec
Usage
Basic Vector Operations
import turbovec
import numpy as np
index = turbovec.Index(dim=128)
vectors = np.random.randn(1000, 128).astype(np.float32)
ids = list(range(1000))
index.add(vectors, ids)
query = np.random.randn(1, 128).astype(np.float32)
results = index.search(query, k=10)
print(f"Found {len(results[0])} similar vectors")
Persistence
index.save("my_index.tvec")
loaded_index = turbovec.Index.load("my_index.tvec")
Integration with sentence-transformers
from sentence_transformers import SentenceTransformer
import turbovec
model = SentenceTransformer('all-MiniLM-L6-v2')
sentences = ["This is a test", "Another sentence", "Third example"]
embeddings = model.encode(sentences)
index = turbovec.Index(dim=384)
index.add(embeddings, list(range(len(sentences))))
query_embedding = model.encode(["Find similar sentences"])
results = index.search(query_embedding, k=2)
Common Pitfalls
- Memory usage: Large indices require sufficient RAM. Consider indexing strategies.
- Dimension consistency: All vectors must have the same dimension.
- Update limitations: Turbovec is optimized for append-only workloads. Frequent updates may require rebuilding.
- Distance metrics: Currently supports L2 distance. For cosine similarity, normalize vectors first.
Verification
python -c "import turbovec; print('turbovec imported successfully')"
python -c "
import turbovec
import numpy as np
index = turbovec.Index(dim=64)
vectors = np.random.randn(100, 64).astype(np.float32)
index.add(vectors, list(range(100)))
query = np.random.randn(1, 64).astype(np.float32)
results = index.search(query, k=5)
print(f'Test passed: found {len(results[0])} results')
"