Skip to content

feat: add Dakera document store integration#3519

Open
ferhimedamine wants to merge 1 commit into
deepset-ai:mainfrom
ferhimedamine:feat/dakera-document-store
Open

feat: add Dakera document store integration#3519
ferhimedamine wants to merge 1 commit into
deepset-ai:mainfrom
ferhimedamine:feat/dakera-document-store

Conversation

@ferhimedamine

Copy link
Copy Markdown

Related Issues

New integration — no prior issue. Happy to open a tracking issue if the team prefers.

Proposed Changes

This PR adds a new integration, dakera-haystack (integrations/dakera/), that lets Haystack pipelines store and retrieve documents from Dakera — a self-hosted memory server that provides persistent, decay-weighted vector recall.

Components

  • DakeraDocumentStore (sync + async) — implements the standard document-store surface (count_documents, write_documents, filter_documents, delete_documents, plus _embedding_retrieval) and their _async counterparts. It drives Dakera's raw vector-namespace API (upsert / query / delete / get_namespace / configure_namespace), so embeddings are supplied by any Haystack embedder while Dakera handles storage and similarity search — the same model as the other cloud/self-hosted vector-store integrations.
  • DakeraEmbeddingRetriever — a @component for dense retrieval with run / run_async and full FilterPolicy support.

Design notes

  • Connection is self-hosted: url (default http://localhost:3000, the port used by the dakera-deploy docker-compose stack) plus an api_key Secret from DAKERA_API_KEY. No metered/hosted secret.
  • Namespace lifecycle: on first use the store adopts the dimension of an existing namespace, or creates it via configure_namespace (upsert semantics) when absent.
  • Filters: filters.py converts Haystack's filter syntax into Dakera's MongoDB-style DSL ({"field": {"$eq": ...}}, $and/$or, $in/$nin, comparison operators), mirroring the approach used by the Pinecone/Qdrant document stores.
  • Metadata-only filtering reuses the established dummy-vector query pattern, and content is stored as a content metadata field.
  • Registered in .github/labeler.yml, .github/workflows/CI_coverage_comment.yml, the root README.md inventory table, and a per-integration .github/workflows/dakera.yml.

How did you test it?

  • 48 unit tests (mocked DakeraClient) covering init/lazy-init, namespace adoption vs. creation, to_dict/from_dict round-trips, metadata validation, document↔vector conversion, dummy-vector handling, the full filter converter, and the retriever. All green.
  • Integration tests (test_integration.py) exercise a real write → count → embedding-retrieval → filter → delete round-trip against a live server; they auto-skip unless DAKERA_URL is set (start a server with dakera-deploy).
  • Local run against haystack-ai 2.30.2 and dakera 0.12.8: hatch run test:unit → 48 passed, hatch run test:types → clean, ruff check/ruff format --check → clean.

Notes for the reviewer

  • The integration folder is dakera (no hyphen) per the format check; the PyPI package name is dakera-haystack.
  • Integration tests need the Dakera server + MinIO (via dakera-deploy), so the dakera.yml integration step is a no-op skip in CI until a DAKERA_URL is provided — unit tests, lint, and types run on every PR.

Checklist

  • I have read the contributors guidelines and the code of conduct
  • I added unit tests and updated the docstrings
  • I've used a conventional commit type for my PR title (feat:)

Adds `dakera-haystack` under integrations/dakera/: a DakeraDocumentStore
(sync + async) backed by Dakera's vector-namespace API, plus a
DakeraEmbeddingRetriever. Registers the integration in the labeler, coverage
workflow, README inventory, and a per-integration CI workflow.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ferhimedamine ferhimedamine requested a review from a team as a code owner July 1, 2026 23:33
@ferhimedamine ferhimedamine requested review from julian-risch and removed request for a team July 1, 2026 23:33
@CLAassistant

CLAassistant commented Jul 1, 2026

Copy link
Copy Markdown

CLA assistant check
All committers have signed the CLA.

@github-actions github-actions Bot added topic:CI type:documentation Improvements or additions to documentation labels Jul 1, 2026
@ferhimedamine

Copy link
Copy Markdown
Author

I have read the CLA Document and I hereby sign the CLA

@socket-security

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addedpypi/​dakera@​0.12.8100100100100100

View full report

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

topic:CI type:documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants