Embex - The Universal Vector Database ORM
Embex is a vector database ORM that provides one API across Pinecone, Qdrant, LanceDB, Milvus, Chroma, Weaviate, and PgVector. It allows you to write your code once and run it with any supported provider.
The Problem
Section titled “The Problem”Every vector database currently has a different API. If you start with one provider and want to switch later—maybe for better performance, lower costs, or different features—you have to rewrite your entire codebase.
Without Embex
Section titled “Without Embex”You’re locked into vendor-specific APIs:
# Pinecone specific codeindex.upsert(vectors=[(id, values, metadata)])results = index.query(vector=query, top_k=5)# Qdrant specific code - completely different!client.upsert(collection_name=name, points=points)results = client.search(collection_name=name, query_vector=query, limit=5)The Solution
Section titled “The Solution”Embex provides one unified API that works with seven different databases.
With Embex
Section titled “With Embex”Your core logic stays exactly the same. To switch providers, you only change one configuration line.
# Works with ANY providerawait client.collection("products").insert(vectors)results = await client.collection("products").search(vector=query, top_k=5)Switching from development (LanceDB) to production (Qdrant) is trivial:
client = await EmbexClient.new_async(provider="lancedb", url="./data")client = await EmbexClient.new_async(provider="qdrant", url="http://localhost:6333")Key Benefits
Section titled “Key Benefits”1. Unified API
Section titled “1. Unified API”Stop writing vendor-specific adapter code. Embex abstracts the differences between providers so you can focus on building your application.
2. High Performance
Section titled “2. High Performance”Embex isn’t just a wrapper. The core is written in Rust with SIMD acceleration, making vector operations up to 4x faster than native Python clients for tasks like normalization and cosine similarity.
3. Production Ready
Section titled “3. Production Ready”Built for scale with features that many native clients miss:
- Connection Pooling: Efficiently manage database connections.
- Built-in Migrations: Manage schema changes across any provider.
- Observability: Hooks for monitoring and metrics.
Supported Providers
Section titled “Supported Providers”Embex currently supports:
- LanceDB: Perfect for local development and embedded apps (No Docker required).
- Qdrant: High-performance, scalable vector search engine.
- Pinecone: Fully managed vector database.
- Chroma: Open-source embedding database.
- Weaviate: AI-native vector database.
- PgVector: Vector similarity search for PostgreSQL.
- Milvus: Cloud-native vector database for massive scale.