Added
UpstashBackend- fourth vector backend, via Upstash Vector's managed serverless REST API. Available via theupstashoptional extra (pip install ragleap-vectorstores[upstash]).- No local/embedded mode at all - the index (fixed dimension, dense-vs-hybrid type) must already exist, created via the Upstash console.
init_schema()verifies compatibility viainfo()rather than creating anything, and raises a clear error if the index is hybrid-type or has the wrong dimension. - Metadata filtering is a genuine strength here: Upstash's
filter=is a real SQL-like string over an actual JSON dict, so arbitrary multi-key filters work natively - more flexible than Redis's document_id-only limitation, without Chroma's $and wrapping either. similarity_scoreis used directly from Upstash'squery()- its score is already a normalized similarity in [0, 1], unlike Chroma/Redis which return a distance requiring conversion.delete_document()and chunk-counting use Upstash's nativeprefix=parameter - simpler than Redis's manual scan-then-delete pattern.- 14 new tests against a real Upstash Vector index (no mocks); they skip cleanly if credentials aren't set rather than failing.
See CHANGELOG for full details, including the v0.3.2/v0.3.3 fixes (README gaps, a MODULE LIST parsing regression, and a real RedisBackend data-isolation bug) folded into this release cycle.