RagLeap
Guide · ragleap-vectorstores

ragleap-vectorstores package guide

Pluggable vector backends beyond ragleap-rag's built-in 6 (PgVector, FAISS, Pinecone, Weaviate, Qdrant, Milvus).

This package is under active development - more backends will be added over time. See the roadmap for status.

Available backends

Backend Extra Notes
Chroma chroma Embedded/local via chromadb's PersistentClient - no server required. No native sparse/keyword search (supports_sparse() is False); hybrid search falls back to dense-only.
LanceDB lancedb Embedded/local via a directory path - no server required. Real upsert semantics via merge_insert(). No native sparse/keyword search enabled yet (supports_sparse() is False); hybrid search falls back to dense-only.
Redis redis Requires a real running server - Redis Stack, or plain Redis with the RediSearch module loaded (no embedded/local mode). init_schema() checks for the module and raises a clear error if it's missing. Metadata filtering only supports document_id (RediSearch requires predeclared schema fields). No native sparse/keyword search enabled yet (supports_sparse() is False); hybrid search falls back to dense-only.
Upstash Vector upstash Managed serverless REST API - no embedded/local mode at all, and the index (fixed dimension, dense-vs-hybrid type) must already exist, created via the Upstash console; init_schema() verifies compatibility via info() rather than creating anything. Metadata filtering supports arbitrary multi-key filters natively (real SQL-like filter= string over a genuine JSON dict) - more flexible than Redis here. No native sparse/keyword search enabled yet (supports_sparse() is False); hybrid search falls back to dense-only.
OpenSearch opensearch Requires a real running OpenSearch instance (no embedded/local mode); uses OpenSearch's native k-NN vector search with the lucene engine (the nmslib engine is rejected on OpenSearch 3.0+). The document registry is a second OpenSearch index. Metadata filtering supports arbitrary term/range filters over any mapped field. No native sparse/keyword search enabled yet (supports_sparse() is False); hybrid search falls back to dense-only.

Design

Every backend here implements ragleap-rag's VectorBackend interface, so it can be passed directly to RagLeap(vector_backend=...). Each backend's real client SDK is an optional extra - installing ragleap-vectorstores alone pulls in no heavy dependencies beyond ragleap-rag itself.

Install

pip install ragleap-vectorstores[chroma]
# or, with uv
uv add ragleap-vectorstores[chroma]
pip install ragleap-vectorstores[lancedb]
# or, with uv
uv add ragleap-vectorstores[lancedb]
pip install ragleap-vectorstores[opensearch]
# or, with uv
uv add ragleap-vectorstores[opensearch]

Usage

from ragleap_vectorstores import ChromaBackend
backend = ChromaBackend(persist_directory="./chroma_data")
from ragleap_vectorstores import LanceDBBackend
backend = LanceDBBackend(uri="./lancedb_data")
from ragleap_vectorstores import RedisBackend
# Requires a real Redis Stack instance (or plain Redis + the RediSearch
# module) - plain Redis alone has no vector search.
backend = RedisBackend(redis_url="redis://localhost:6379/0")
from ragleap_vectorstores import UpstashBackend
# Requires a real Upstash Vector index, created via the Upstash console
# (console.upstash.com) as a pure DENSE index - no embedded/local mode.
backend = UpstashBackend(url="https://...upstash.io", token="...")
from ragleap_vectorstores import OpenSearchBackend
# Requires a real running OpenSearch instance (e.g. http://localhost:9200) -
# no embedded/local mode. Pass http_auth=("user", "password") and
# use_ssl=True for a secured cluster.
backend = OpenSearchBackend(opensearch_url="http://localhost:9200")

This page mirrors README.md on GitHub. GitHub is the source of truth and may be newer.

All ragleap-vectorstores guides Package page All guides