Skip to main content

A high-performance synchronous vector database for similarity search

Project description

VowDB 🔥

Blazing-fast vector database for text similarity. Powered by Faiss & Sentence Transformers.


Install 💻

Grab it with pip:

pip install vowdb

Requires Python 3.8+, faiss-cpu, sentence-transformers, numpy, psutil.


Setup 🚀

Kick it off:

from vowdb import VowDB
db = VowDB(model_name="all-MiniLM-L6-v2", file_path="vectors.faiss")

Ready in ~1.2s.


Add Data 📝

Drop in texts:

# One
db.insert("Hello World", metadata={"greeting": "yes"})
# ~0.57s

# Many
texts = ["Hii", "I Am Rushikesh Sunil Kotkar!", "News article"]
metadatas = [{"greeting": "yes"}, {"category": "introduction"}, {"greeting": "no"}]
db.insert_batch(texts, metadatas)


Search 🔍

Find stuff with = style filters. Check these dope examples.

1. AND Power

db.find("hello", top_k=3, filter_query="category=news && score>0.9 && greeting=yes")

Result:
text=Hello World, dist=0.45, meta={category=news, score=0.95, greeting=yes}


2. Text Vibe

db.find("hello", top_k=3)

Results:
text=Hello World, dist=0.45, meta={category=news, score=0.95, greeting=yes}
text=Hii, dist=0.48, meta={category=greeting, score=0.6, greeting=yes}


3. Exact Match

db.find("Hello World", top_k=3, filter_query="text=Hello World")

Result:
text=Hello World, dist=0.45, meta={category=news, score=0.95, greeting=yes}


4. Prefix Hunt

db.find("Hel", top_k=3, filter_query="text=Hel")*

Results:
text=Hello World, dist=0.45, meta={category=news, score=0.95, greeting=yes}
text=Hii, dist=0.48, meta={category=greeting, score=0.6, greeting=yes}


5. Category Snap

db.find("news", top_k=3, filter_query="category=news")

Results:
text=Hello World, dist=0.45, meta={category=news, score=0.95, greeting=yes}
text=News article, dist=0.50, meta={category=news, score=0.7, greeting=no}


6. OR Flex

db.find("news", top_k=3, filter_query="category=news || category=greeting")

Results:
text=Hello World, dist=0.45, meta={category=news, score=0.95, greeting=yes}
text=Hii, dist=0.48, meta={category=greeting, score=0.6, greeting=yes}


7. Multi-Filter

db.find("news", top_k=3, filter_query="category=news && score>0.7 && greeting=yes")

Result:
text=Hello World, dist=0.45, meta={category=news, score=0.95, greeting=yes}


8. Score Range

db.find("news", top_k=3, filter_query="score=0.6-0.8")

Results:
text=Hii, dist=0.48, meta={category=greeting, score=0.6, greeting=yes}
text=News article, dist=0.50, meta={category=news, score=0.7, greeting=no}


9. Skip Some

db.find("news", top_k=3, filter_query="text!=Hii && category!=introduction")

Results:
text=Hello World, dist=0.45, meta={category=news, score=0.95, greeting=yes}
text=News article, dist=0.50, meta={category=news, score=0.7, greeting=no}


10. Name Drop

db.find("Rushikesh", top_k=3)

Result:
text=I Am Rushikesh Sunil Kotkar!, dist=0.20, meta={category=introduction, score=0.9}


11. Text or Score

db.find("Hel", top_k=3, filter_query="text=Hel || score>=0.9")*

Results:
text=Hello World, dist=0.45, meta={category=news, score=0.95, greeting=yes}
text=I Am Rushikesh Sunil Kotkar!, dist=0.20, meta={category=introduction, score=0.9}


Save/Load 💾

Keep or get data:

db.save()
db.load()


Info 🌟

Version: Author: Rushikesh Sunil Kotkar
License: MIT
GitHub: https://github.com/rushikeshkotkar04/vowdb
PyPI: Fast text similarity with slick = queries.


Contribute 🤝

Got ideas? Issues? PRs?
Hit up: https://github.com/rushikeshkotkar04/vowdb

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

vowdb-0.1.5.tar.gz (14.6 kB view details)

Uploaded Source

Built Distribution

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

vowdb-0.1.5-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

Details for the file vowdb-0.1.5.tar.gz.

File metadata

  • Download URL: vowdb-0.1.5.tar.gz
  • Upload date:
  • Size: 14.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.0

File hashes

Hashes for vowdb-0.1.5.tar.gz
Algorithm Hash digest
SHA256 dbd26934aade46a2beb5bd59667d225fbb625df226cf5a5025aeef2dd8018455
MD5 5efab0a29184ae1627d5006ccac5c710
BLAKE2b-256 311f2b304affeaf6cbabcb03442ee1c985f056ad33a58c66b8ee9ffce58eb116

See more details on using hashes here.

File details

Details for the file vowdb-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: vowdb-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 13.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.0

File hashes

Hashes for vowdb-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 256a30aeec1cd35e92ef792ab058b73f6ef22f8ed322700a7430d3fda510d8b0
MD5 57f6ac45711e61790d77959b665af124
BLAKE2b-256 c6cf1c27b6b15dcd90b1a71c61d33d90b7156f2ebfe920002e5c1d79f094b721

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