Zixir's VectorDB supports 9 backends: one native in-memory backend and eight Python-based backends (Chroma, Pinecone, Weaviate, Qdrant, Milvus, pgvector, Redis, Azure). Cloud backends use connection pooling, exponential backoff, circuit breaker, query caching, health checks, and request metrics so they survive real-world failures.
| Feature | Benefit |
|---|---|
| Connection pooling | Better resource utilization |
| Exponential backoff | Handles transient failures gracefully |
| Circuit breaker | Prevents cascade failures |
| Query caching | Reduces redundant DB calls |
| Health checks | Real-time monitoring |
| Request metrics | Track latency, success rates |
Use Zixir.VectorDB.health/1, Zixir.VectorDB.metrics/1, Zixir.VectorDB.cache_stats/1, and Zixir.VectorDB.circuit_breaker/1 to monitor cloud backends from Elixir.
| Backend | Type | Best for |
|---|---|---|
:memory |
Native | Prototyping (<100K vectors) |
:chroma |
Python | Simple local development |
:pinecone |
Python | Production cloud |
:weaviate |
Python | Self-hosted, GraphQL |
:qdrant |
Python | High-performance |
:milvus |
Python | Enterprise distributed |
:pgvector |
Python | PostgreSQL users needing ACID compliance |
:redis |
Python | Real-time apps needing sub-ms latency |
:azure |
Python | Microsoft ecosystems |
| Backend | For |
|---|---|
| :pgvector | PostgreSQL users needing ACID compliance |
| :redis | Real-time apps needing sub-ms latency |
| :azure | Microsoft ecosystems |
- :memory — Built in. No extra setup. Use for prototyping and small datasets.
Install only the packages for the backends you use. Zixir’s Python bridge runs under your project’s Python (or the interpreter set in config :zixir, :python_path).
Chroma (local dev):
pip install chromadbPinecone (cloud):
pip install pinecone-clientWeaviate (self-hosted):
pip install weaviate-clientQdrant (high-performance):
pip install qdrant-clientMilvus (enterprise):
pip install pymilvuspgvector (PostgreSQL):
pip install psycopg2-binary pgvectorYou also need PostgreSQL with the pgvector extension enabled.
Redis:
pip install redisUse a Redis instance with RediSearch/vector support (e.g. Redis Stack).
Azure (AI Search / vector search):
pip install azure-search-documents azure-identityConfigure Azure AI Search and credentials (e.g. AZURE_SEARCH_ENDPOINT, AZURE_SEARCH_KEY or managed identity).
Example for Chroma + Pinecone + pgvector:
pip install chromadb pinecone-client psycopg2-binary pgvector# Memory (no Python)
db = Zixir.VectorDB.create("my_db", dimensions: 384)
# Chroma (local)
db = Zixir.VectorDB.create("local",
backend: :chroma,
collection: "docs",
dimensions: 384
)
# Pinecone (cloud)
db = Zixir.VectorDB.create("prod",
backend: :pinecone,
api_key: System.get_env("PINECONE_API_KEY"),
environment: "us-east-1",
index_name: "my-index",
dimensions: 384
)
# pgvector (PostgreSQL)
db = Zixir.VectorDB.create("pg",
backend: :pgvector,
connection_string: System.get_env("DATABASE_URL"),
table_name: "embeddings",
dimensions: 384
)
# Redis
db = Zixir.VectorDB.create("redis",
backend: :redis,
host: "localhost",
port: 6379,
index_name: "vec",
dimensions: 384
)
# Azure
db = Zixir.VectorDB.create("azure",
backend: :azure,
endpoint: System.get_env("AZURE_SEARCH_ENDPOINT"),
api_key: System.get_env("AZURE_SEARCH_KEY"),
index_name: "my-index",
dimensions: 384
)# Health (circuit breaker, pool, cache)
health = Zixir.VectorDB.health(db)
# Request metrics (latency, success rate)
metrics = Zixir.VectorDB.metrics(db)
# Cache stats (if query caching enabled)
cache_stats = Zixir.VectorDB.cache_stats(db)
# Circuit breaker state (:closed | :open | :half_open)
state = Zixir.VectorDB.circuit_breaker(db)
# Quick healthy check
Zixir.VectorDB.healthy?(db)- Zixir.VectorDB — module docs and
lib/zixir/vector_db.ex - SETUP_GUIDE.md — Python and Elixir setup
- RELEASE_NOTES_v6.0.0.md — v6.0 VectorDB release notes