Skip to main content

An integration of Upstash Vector with Haystack.

Project description

upstash-haystack

PyPI - Version PyPI - Python Version CI License

Upstash Vector integration for Haystack — serverless, scalable vector search with zero infrastructure.


Overview

upstash-haystack brings Upstash Vector into the Haystack ecosystem. Upstash Vector is a serverless, pay-as-you-go vector database with a generous free tier — no servers to provision, no clusters to manage.

Components

Component Description
UpstashDocumentStore Full-featured document store backed by Upstash Vector
UpstashEmbeddingRetriever Dense retrieval using cosine/dot-product similarity
UpstashHybridRetriever Dense + sparse hybrid search via native Reciprocal Rank Fusion (RRF)

Installation

pip install upstash-haystack

Quick Start

1. Create an Upstash Vector index

Sign up at console.upstash.com and create a Vector index. Copy the REST URL and REST Token from the dashboard.

export UPSTASH_VECTOR_REST_URL="https://your-endpoint.upstash.io"
export UPSTASH_VECTOR_REST_TOKEN="your-token"

2. Dense (Embedding) Retrieval

from haystack import Document, Pipeline
from haystack_integrations.document_stores.upstash import UpstashDocumentStore
from haystack_integrations.components.retrievers.upstash import UpstashEmbeddingRetriever

# Initialize the document store (reads credentials from env vars)
document_store = UpstashDocumentStore()

# Write documents with embeddings
docs = [
    Document(content="The capital of France is Paris.", embedding=[0.1, 0.2, ...]),
    Document(content="The capital of Germany is Berlin.", embedding=[0.4, 0.5, ...]),
]
document_store.write_documents(docs)

# Retrieve the top-k most similar documents
retriever = UpstashEmbeddingRetriever(document_store=document_store)
result = retriever.run(query_embedding=[0.1, 0.2, ...], top_k=1)
print(result["documents"])

3. Hybrid Retrieval (Dense + Sparse)

Upstash Vector natively supports hybrid search via Reciprocal Rank Fusion (RRF), combining dense and sparse signals for superior relevance.

from haystack.dataclasses import SparseEmbedding
from haystack_integrations.components.retrievers.upstash import UpstashHybridRetriever

retriever = UpstashHybridRetriever(document_store=document_store)

result = retriever.run(
    query_embedding=[0.1, 0.2, ...],
    query_sparse_embedding=SparseEmbedding(indices=[0, 5, 12], values=[0.9, 0.4, 0.2]),
    top_k=5,
)
print(result["documents"])

4. Filtering

# Equality filter
docs = document_store.filter_documents(
    filters={"field": "meta.category", "operator": "==", "value": "science"}
)

# AND operator
docs = document_store.filter_documents(
    filters={
        "operator": "AND",
        "conditions": [
            {"field": "meta.category", "operator": "==", "value": "science"},
            {"field": "meta.year", "operator": ">", "value": 2020},
        ],
    }
)

Configuration

The document store is configured via environment variables or explicit Secret objects:

from haystack.utils.auth import Secret
from haystack_integrations.document_stores.upstash import UpstashDocumentStore

store = UpstashDocumentStore(
    url=Secret.from_env_var("UPSTASH_VECTOR_REST_URL"),
    token=Secret.from_env_var("UPSTASH_VECTOR_REST_TOKEN"),
)

Development

This project uses Hatch for environment and dependency management.

# Format and lint
hatch run fmt

# Type checking
hatch run test:types

# Unit tests (mocked, no credentials needed)
hatch run test:unit

# Integration tests (requires live Upstash credentials)
export UPSTASH_VECTOR_REST_URL="..."
export UPSTASH_VECTOR_REST_TOKEN="..."
hatch run test:integration

License

upstash-haystack is distributed under the terms of the Apache 2.0 license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

upstash_haystack-0.1.0.tar.gz (17.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

upstash_haystack-0.1.0-py3-none-any.whl (14.3 kB view details)

Uploaded Python 3

File details

Details for the file upstash_haystack-0.1.0.tar.gz.

File metadata

  • Download URL: upstash_haystack-0.1.0.tar.gz
  • Upload date:
  • Size: 17.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.17.1 {"ci":true,"cpu":"x86_64","distro":{"id":"noble","libc":{"lib":"glibc","version":"2.39"},"name":"Ubuntu","version":"24.04"},"implementation":{"name":"CPython","version":"3.10.20"},"installer":{"name":"hatch","version":"1.17.1"},"openssl_version":"OpenSSL 3.0.13 30 Jan 2024","python":"3.10.20","system":{"name":"Linux","release":"6.17.0-1020-azure"}} HTTPX2/2.9.1

File hashes

Hashes for upstash_haystack-0.1.0.tar.gz
Algorithm Hash digest
SHA256 6038a50a36d54b1b94a6dbf325f51e28f1d05ac564aab300575fff4b48536342
MD5 2fa8ac21949587bc5708beb9dac86f5b
BLAKE2b-256 632ab55181b8cf47b37b4c785f0f65ee6cdfddc4b3c204904fe2aeecba010971

See more details on using hashes here.

File details

Details for the file upstash_haystack-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: upstash_haystack-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 14.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.17.1 {"ci":true,"cpu":"x86_64","distro":{"id":"noble","libc":{"lib":"glibc","version":"2.39"},"name":"Ubuntu","version":"24.04"},"implementation":{"name":"CPython","version":"3.10.20"},"installer":{"name":"hatch","version":"1.17.1"},"openssl_version":"OpenSSL 3.0.13 30 Jan 2024","python":"3.10.20","system":{"name":"Linux","release":"6.17.0-1020-azure"}} HTTPX2/2.9.1

File hashes

Hashes for upstash_haystack-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c1402456ca35dc192e49e1f4f78f1c38e0ddf73bfead094c15f1f4193146db74
MD5 d4adce7b61c1b7c5a8bfc42dbafdbdd1
BLAKE2b-256 c3596207201222b2b7e1a78eb31d3c2180c4e395c701c439df377c711aa39d33

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page