Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
d8b77eb
feat/add supabase document store
pontuselmrin Apr 13, 2026
4d11c5e
fix/test creates the pgvector by default
pontuselmrin Apr 13, 2026
3fee71d
feat/implement supabase vector-embedding retriever
pontuselmrin Apr 14, 2026
e1785cc
fix/update filters test to address test warnings
pontuselmrin Apr 14, 2026
efb685f
Merge remote-tracking branch 'upstream/main' into supabase
pontuselmrin Apr 14, 2026
e05fbee
fix/pinned haystack-ai to 2.26.1
pontuselmrin Apr 14, 2026
2da7f28
fix/pinned pgvector and fixed bug in yml
pontuselmrin Apr 14, 2026
84f0109
fix/updated pyproject and the supabase yml to address CI bug
pontuselmrin Apr 14, 2026
ee1ca04
fix/updated pyproject to scope only haystack integrations in tests
pontuselmrin Apr 14, 2026
8f2fb48
Merge branch 'main' into supabase
pontuselmrin Apr 16, 2026
906349b
Merge branch 'main' into supabase
pontuselmrin Apr 16, 2026
abab3b6
Merge branch 'main' into supabase
davidsbatista Apr 16, 2026
d820cbb
fixing DB_URL port typo
davidsbatista Apr 16, 2026
e497159
setting integrations tests to run only on Linux and over a Docker
davidsbatista Apr 16, 2026
f495b10
running only on linux matrix, since Docker runs only on linux images
davidsbatista Apr 16, 2026
7c21fad
adding embedding retriever to the docs
davidsbatista Apr 17, 2026
61bf38a
renaming SupabasePgVector to SupabasePgvector - aligning with the Pgv…
davidsbatista Apr 17, 2026
a2de858
using super(class, self) with a noqa to fix inherantance with @compon…
davidsbatista Apr 17, 2026
f43d8d2
Merge branch 'main' into supabase
davidsbatista Apr 17, 2026
e7882eb
adding LICENSE header conftest
davidsbatista Apr 17, 2026
80381c5
feat/keyword retriever for supabase
pontuselmrin Apr 20, 2026
ccbf750
feat/added retrieval integration tests and unit tests for keyword ret…
pontuselmrin Apr 20, 2026
30cf9d9
chore/updated init to include keyword retriever
pontuselmrin Apr 20, 2026
f737f16
docs/updated readme and added docusaurus docs
pontuselmrin Apr 20, 2026
fb700e2
Merge branch 'main' into supabase
pontuselmrin Apr 20, 2026
7677462
Merge branch 'main' into supabase
davidsbatista Apr 21, 2026
3a8767e
Merge branch 'main' into supabase
davidsbatista Apr 21, 2026
b9041fc
Merge branch 'main' into supabase
davidsbatista Apr 21, 2026
7823a5e
improving tests + refactoring: test_embedding_retriever.py + test_key…
davidsbatista Apr 21, 2026
3a7c455
cleaning + refactoring
davidsbatista Apr 21, 2026
29ad39e
fixing github workflow
davidsbatista Apr 21, 2026
642c1cb
formatting
davidsbatista Apr 21, 2026
e8be8f1
cleaning up README + fixing code in docstrings
davidsbatista Apr 22, 2026
6938d6a
fixing github workflow + typo in docstring
davidsbatista Apr 22, 2026
2794302
Merge branch 'main' into supabase
davidsbatista Apr 22, 2026
944212b
fixing docstrings
davidsbatista Apr 22, 2026
eeb68a8
Merge branch 'main' into supabase
davidsbatista Apr 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,11 @@ integration:stackit:
- any-glob-to-any-file: "integrations/stackit/**/*"
- any-glob-to-any-file: ".github/workflows/stackit.yml"

integration:supabase:
- changed-files:
- any-glob-to-any-file: "integrations/supabase/**/*"
- any-glob-to-any-file: ".github/workflows/supabase.yml"

integration:tavily:
- changed-files:
- any-glob-to-any-file: "integrations/tavily/**/*"
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/CI_coverage_comment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ on:
- "Test / snowflake"
- "Test / sqlalchemy"
- "Test / stackit"
- "Test / supabase"
- "Test / tavily"
- "Test / togetherai"
- "Test / unstructured"
Expand Down
159 changes: 159 additions & 0 deletions .github/workflows/supabase.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
# This workflow comes from https://github.com/ofek/hatch-mypyc
# https://github.com/ofek/hatch-mypyc/blob/5a198c0ba8660494d02716cfc9d79ce4adfb1442/.github/workflows/test.yml
name: Test / supabase

on:
schedule:
- cron: "0 0 * * *"
pull_request:
paths:
- "integrations/supabase/**"
- "!integrations/supabase/*.md"
- ".github/workflows/supabase.yml"
push:
branches:
- main
paths:
- "integrations/supabase/**"
- "!integrations/supabase/*.md"
- ".github/workflows/supabase.yml"

defaults:
run:
working-directory: integrations/supabase

concurrency:
group: supabase-${{ github.head_ref || github.sha }}
cancel-in-progress: true

env:
PYTHONUNBUFFERED: "1"
FORCE_COLOR: "1"
TEST_MATRIX_OS: '["ubuntu-latest"]'
TEST_MATRIX_PYTHON: '["3.10", "3.14"]'

jobs:
compute-test-matrix:
runs-on: ubuntu-slim
defaults:
run:
working-directory: .
outputs:
os: ${{ steps.set.outputs.os }}
python-version: ${{ steps.set.outputs.python-version }}
steps:
- id: set
run: |
echo 'os=${{ github.event_name == 'push' && '["ubuntu-latest"]' || env.TEST_MATRIX_OS }}' >> "$GITHUB_OUTPUT"
echo 'python-version=${{ github.event_name == 'push' && '["3.10"]' || env.TEST_MATRIX_PYTHON }}' >> "$GITHUB_OUTPUT"

run:
name: Python ${{ matrix.python-version }} on ${{ startsWith(matrix.os, 'macos-') && 'macOS' || startsWith(matrix.os, 'windows-') && 'Windows' || 'Linux' }}
needs: compute-test-matrix
permissions:
contents: write
pull-requests: write
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: ${{ fromJSON(needs.compute-test-matrix.outputs.os) }}
python-version: ${{ fromJSON(needs.compute-test-matrix.outputs.python-version) }}

services:
pgvector:
image: pgvector/pgvector:pg17
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5

steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Create pgvector extension
run: >
docker run --rm --network host
-e PGPASSWORD=postgres
pgvector/pgvector:pg17
psql -h localhost -U postgres -d postgres -c "CREATE EXTENSION IF NOT EXISTS vector;"

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python-version }}

- name: Install Hatch
run: pip install hatch
- name: Lint
if: matrix.python-version == '3.10' && runner.os == 'Linux'
run: hatch run fmt-check && hatch run test:types

- name: Run unit tests
run: hatch run test:unit-cov-retry

# On PR: posts coverage comment (directly on same-repo PRs; via artifact for fork PRs). On push to main: stores coverage baseline on data branch.
- name: Store unit tests coverage
id: coverage_comment
if: matrix.python-version == '3.10' && runner.os == 'Linux' && github.event_name != 'schedule'
uses: py-cov-action/python-coverage-comment-action@63f52f4fbbffada6e8dee8ec432de7e01df9ba79 # v3.41
with:
GITHUB_TOKEN: ${{ github.token }}
COVERAGE_PATH: integrations/supabase
SUBPROJECT_ID: supabase
MINIMUM_GREEN: 90
MINIMUM_ORANGE: 60

- name: Upload coverage comment to be posted
if: matrix.python-version == '3.10' && runner.os == 'Linux' && github.event_name == 'pull_request' && steps.coverage_comment.outputs.COMMENT_FILE_WRITTEN == 'true'
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: coverage-comment-supabase
path: python-coverage-comment-action-supabase.txt

- name: Run integration tests
if: runner.os == 'Linux'
env:
SUPABASE_DB_URL: "postgresql://postgres:postgres@localhost:5432/postgres"
run: hatch run test:integration-cov-append-retry

- name: Store combined coverage
if: github.event_name == 'push'
uses: py-cov-action/python-coverage-comment-action@63f52f4fbbffada6e8dee8ec432de7e01df9ba79 # v3.41
with:
GITHUB_TOKEN: ${{ github.token }}
COVERAGE_PATH: integrations/supabase
SUBPROJECT_ID: supabase-combined
MINIMUM_GREEN: 90
MINIMUM_ORANGE: 60

- name: Run unit tests with lowest direct dependencies
if: github.event_name != 'push'
run: |
hatch run uv pip compile pyproject.toml --resolution lowest-direct --output-file requirements_lowest_direct.txt
hatch -e test env run -- uv pip install -r requirements_lowest_direct.txt
hatch run test:unit

- name: Nightly - run unit tests with Haystack main branch
if: github.event_name == 'schedule'
run: |
hatch env prune
hatch -e test env run -- uv pip install git+https://github.com/deepset-ai/haystack.git@main
hatch run test:unit


notify-slack-on-failure:
needs: run
if: failure() && github.event_name == 'schedule'
runs-on: ubuntu-slim
steps:
- uses: deepset-ai/notify-slack-action@3cda73b77a148f16f703274198e7771340cf862b # v1
with:
slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL_NOTIFICATIONS }}
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ Please check out our [Contribution Guidelines](CONTRIBUTING.md) for all the deta
| [snowflake-haystack](integrations/snowflake/) | Retriever | [![PyPI - Version](https://img.shields.io/pypi/v/snowflake-haystack.svg)](https://pypi.org/project/snowflake-haystack) | [![Test / snowflake](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/snowflake.yml/badge.svg)](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/snowflake.yml) | [![Coverage badge](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/deepset-ai/haystack-core-integrations/python-coverage-comment-action-data-snowflake/endpoint.json&label=)](https://htmlpreview.github.io/?https://github.com/deepset-ai/haystack-core-integrations/blob/python-coverage-comment-action-data-snowflake/htmlcov/index.html) | |
| [sqlalchemy-haystack](integrations/sqlalchemy/) | Retriever | [![PyPI - Version](https://img.shields.io/pypi/v/sqlalchemy-haystack.svg)](https://pypi.org/project/sqlalchemy-haystack) | [![Test / sqlalchemy](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/sqlalchemy.yml/badge.svg)](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/sqlalchemy.yml) | [![Coverage badge](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/deepset-ai/haystack-core-integrations/python-coverage-comment-action-data-sqlalchemy/endpoint.json&label=)](https://htmlpreview.github.io/?https://github.com/deepset-ai/haystack-core-integrations/blob/python-coverage-comment-action-data-sqlalchemy/htmlcov/index.html) | |
| [stackit-haystack](integrations/stackit/) | Embedder, Generator | [![PyPI - Version](https://img.shields.io/pypi/v/stackit-haystack.svg)](https://pypi.org/project/stackit-haystack) | [![Test / stackit](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/stackit.yml/badge.svg)](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/stackit.yml) | [![Coverage badge](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/deepset-ai/haystack-core-integrations/python-coverage-comment-action-data-stackit/endpoint.json&label=)](https://htmlpreview.github.io/?https://github.com/deepset-ai/haystack-core-integrations/blob/python-coverage-comment-action-data-stackit/htmlcov/index.html) | [![Coverage badge](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/deepset-ai/haystack-core-integrations/python-coverage-comment-action-data-stackit-combined/endpoint.json&label=)](https://htmlpreview.github.io/?https://github.com/deepset-ai/haystack-core-integrations/blob/python-coverage-comment-action-data-stackit-combined/htmlcov/index.html) |
| [supabase-haystack](integrations/supabase/) | Document Store | [![PyPI - Version](https://img.shields.io/pypi/v/supabase-haystack.svg)](https://pypi.org/project/supabase-haystack) | [![Test / supabase](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/supabase.yml/badge.svg)](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/supabase.yml) | [![Coverage badge](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/deepset-ai/haystack-core-integrations/python-coverage-comment-action-data-supabase/endpoint.json&label=)](https://htmlpreview.github.io/?https://github.com/deepset-ai/haystack-core-integrations/blob/python-coverage-comment-action-data-supabase/htmlcov/index.html) | [![Coverage badge](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/deepset-ai/haystack-core-integrations/python-coverage-comment-action-data-supabase-combined/endpoint.json&label=)](https://htmlpreview.github.io/?https://github.com/deepset-ai/haystack-core-integrations/blob/python-coverage-comment-action-data-supabase-combined/htmlcov/index.html) |
| [tavily-haystack](integrations/tavily/) | Websearch | [![PyPI - Version](https://img.shields.io/pypi/v/tavily-haystack.svg)](https://pypi.org/project/tavily-haystack) | [![Test / tavily](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/tavily.yml/badge.svg)](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/tavily.yml) | [![Coverage badge](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/deepset-ai/haystack-core-integrations/python-coverage-comment-action-data-tavily/endpoint.json&label=)](https://htmlpreview.github.io/?https://github.com/deepset-ai/haystack-core-integrations/blob/python-coverage-comment-action-data-tavily/htmlcov/index.html) | [![Coverage badge](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/deepset-ai/haystack-core-integrations/python-coverage-comment-action-data-tavily-combined/endpoint.json&label=)](https://htmlpreview.github.io/?https://github.com/deepset-ai/haystack-core-integrations/blob/python-coverage-comment-action-data-tavily-combined/htmlcov/index.html) |
| [togetherai-haystack](integrations/togetherai/) | Generator | [![PyPI - Version](https://img.shields.io/pypi/v/togetherai-haystack.svg)](https://pypi.org/project/togetherai-haystack) | [![Test / togetherai](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/togetherai.yml/badge.svg)](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/togetherai.yml) | [![Coverage badge](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/deepset-ai/haystack-core-integrations/python-coverage-comment-action-data-togetherai/endpoint.json&label=)](https://htmlpreview.github.io/?https://github.com/deepset-ai/haystack-core-integrations/blob/python-coverage-comment-action-data-togetherai/htmlcov/index.html) | [![Coverage badge](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/deepset-ai/haystack-core-integrations/python-coverage-comment-action-data-togetherai-combined/endpoint.json&label=)](https://htmlpreview.github.io/?https://github.com/deepset-ai/haystack-core-integrations/blob/python-coverage-comment-action-data-togetherai-combined/htmlcov/index.html) |
| [unstructured-fileconverter-haystack](integrations/unstructured/) | File converter | [![PyPI - Version](https://img.shields.io/pypi/v/unstructured-fileconverter-haystack.svg)](https://pypi.org/project/unstructured-fileconverter-haystack) | [![Test / unstructured](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/unstructured.yml/badge.svg)](https://github.com/deepset-ai/haystack-core-integrations/actions/workflows/unstructured.yml) | [![Coverage badge](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/deepset-ai/haystack-core-integrations/python-coverage-comment-action-data-unstructured/endpoint.json&label=)](https://htmlpreview.github.io/?https://github.com/deepset-ai/haystack-core-integrations/blob/python-coverage-comment-action-data-unstructured/htmlcov/index.html) | [![Coverage badge](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/deepset-ai/haystack-core-integrations/python-coverage-comment-action-data-unstructured-combined/endpoint.json&label=)](https://htmlpreview.github.io/?https://github.com/deepset-ai/haystack-core-integrations/blob/python-coverage-comment-action-data-unstructured-combined/htmlcov/index.html) |
Expand Down
Loading
Loading