Hatchet News

I launched Embex two weeks ago and hit 9,000 downloads (7K PyPI, 2K npm).

Embex is a universal ORM for vector databases. One API that works across LanceDB, Qdrant, Pinecone, Chroma, PgVector, Milvus, and Weaviate.

The problem: Every vector database has a different API. Switching from Pinecone to Qdrant means rewriting your data layer.

Example: ```python # Works with ANY provider client = await EmbexClient.new_async(provider="lancedb", url="./data") await client.insert("products", vectors) results = await client.search("products", vector=query, top_k=5)

# Switch to Qdrant? Change one line: client = await EmbexClient.new_async(provider="qdrant", url="http://localhost:6333") ```

Built with Rust core + SIMD acceleration (4x faster than pure Python/JS). Available for Python and Node.js.

What happened after launch: - Published to PyPI and npm - Downloads started coming in organically - 9K downloads in 2 weeks

I'm honestly not sure where most of the traffic came from. PyPI/npm search probably, but I haven't dug into the analytics deeply. I just made one LinkedIn post which didn't get any likes/comments.

Start local with LanceDB (embedded, zero Docker), then switch to production databases (Qdrant, Pinecone, Milvus) without changing code.

GitHub: https://github.com/bridgerust/bridgerust Docs: https://bridgerust.dev/embex/introduction

Would love feedback on: - API design decisions - Which databases to support next - Performance optimizations

Built using BridgeRust, a framework for creating cross-language Rust libraries (also open source in this repo).