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: 0.1.3
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.4.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.4-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: vowdb-0.1.4.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.4.tar.gz
Algorithm Hash digest
SHA256 1ab5ff4907d23a96d69b81cdab04b8349893d5ef9c42fd1da242aba3c13bab2c
MD5 c1eb21c1a5e5c34957ae832d143ec959
BLAKE2b-256 0f7546f2f29f161cba839c902a52ac3b2db63b74dfc38184ec50db5930550a99

See more details on using hashes here.

File details

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

File metadata

  • Download URL: vowdb-0.1.4-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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 ca0340a1b9d65a48f1e0b000bd20a89a87d22dce167787a1f4448337714f709d
MD5 edf3ac26fef6364a544331b6e8ce5b04
BLAKE2b-256 b429f35bb805926bdc572a28b78afbe305d1bee86be7f6a73735e815f9721fd6

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