-
Notifications
You must be signed in to change notification settings - Fork 3
Vector Backends
ragleap-rag supports 6 vector storage backends. 2 are live-verified
against a real service; 4 are code-complete but not yet live-tested —
this is disclosed honestly rather than claimed as fully working, per this
project's core standard.
| Backend | Install | Hybrid search | Live-verified? | Notes |
|---|---|---|---|---|
PgVectorBackend |
included by default | Yes — native | ✅ Yes | Default if vector_backend= is omitted. Conversation memory always uses this same Postgres connection regardless of backend choice. |
FAISSBackend |
pip install ragleap-rag[faiss] |
No — gracefully degrades to dense-only | ✅ Yes | Local, in-process, no API key. Pass persist_directory= for data that survives restarts. Metadata filtering is a post-filter, not indexed — fine at small-to-medium scale. |
PineconeBackend |
pip install ragleap-rag[pinecone] |
No — degrades to dense-only | ❌ No account available | Managed, serverless. Code-complete against the real installed SDK's source. persist_directory= is required, not optional. |
WeaviateBackend |
pip install ragleap-rag[weaviate] |
No — degrades to dense-only | ❌ No account available | Vectors are self-provided. Deterministic UUIDs derived from document_id:chunk_index for idempotent inserts. |
QdrantBackend |
pip install ragleap-rag[qdrant] |
No — degrades to dense-only | ❌ No account available | Point IDs must be valid UUID strings at runtime (a real SDK gotcha found via source inspection, not docs). |
MilvusBackend |
pip install ragleap-rag[milvus] |
No — degrades to dense-only | ❌ No account available | Accepts arbitrary string primary keys directly — no UUID workaround needed, unlike the other 3 managed backends. |
One of these backends (PineconeBackend) was previously claimed as
"code-complete but unverified" in an earlier internal document — and that
claim turned out to be false; it had never actually been built. That
mistake is exactly why every backend here gets an explicit, checked status
rather than an assumed one. See the
CHANGELOG's v0.10.1 entry
for the full story.
from ragleap.vectorstores import FAISSBackend, PgVectorBackend
# pgvector (default — no vector_backend= needed)
rag = RagLeap(database_url="...", primary=..., embedder=...)
# FAISS — everything else about ingest/ask stays identical
rag = RagLeap(database_url="...", vector_backend=FAISSBackend(persist_directory="/data/faiss"),
primary=..., embedder=...)database_url is always required, even with a non-Postgres vector
backend, since conversation memory always lives in Postgres regardless of
where vectors are stored.
Live-verifying Pinecone, Weaviate, Qdrant, and Milvus against real accounts is tracked as Phase 6 items #6 in ROADMAP.md — blocked purely on access to real accounts for these services, not on remaining engineering work. If you have an account and are willing to help verify, please open an issue.