Skip to content

Add DuckDB embedding backend - #61

Merged
gkennos merged 13 commits into
mainfrom
34-duckdb-support
Nov 5, 2026
Merged

gkennos merged 13 commits into
mainfrom
34-duckdb-support

Conversation

@nicoloesch

@nicoloesch nicoloesch commented Oct 16, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Changes

  • Adds a DuckDB embedding backend (duckdbvss) with HNSW indexes through the DuckDB VSS extension.
  • Supports filtered and unfiltered nearest-neighbour search, and upserts onto indexed rows.
  • INSTALL vss needs network access once.
  • Reader connections are read-only at the database level.
  • Opening a reader on a missing file uses an empty in-memory database instead of creating the file.
  • The model registry and maintenance CLI work with the new backend.
  • The embedding backend config accepts DuckDB.

Checklist

  • Applied exactly one label (breaking, feature, fix, dependencies, or chore)
  • Tests pass locally (uv run pytest -q)
  • Lint passes (uv run ruff check .)

@nicoloesch nicoloesch added the feature New backwards-compatible functionality. MINOR: x.y+1.z label Oct 16, 2026
@gkennos
gkennos self-requested a review November 3, 2026 08:03
nicoloesch and others added 6 commits November 5, 2026 02:14
Reloading a persisted HNSW index desyncs it from the table on the next
write, undercounting later searches. upsert/delete now resync it after
each write; bulk upserts defer until the end.
@gkennos
gkennos merged commit 5642667 into main Nov 5, 2026
4 checks passed
@gkennos
gkennos deleted the 34-duckdb-support branch November 5, 2026 21:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature New backwards-compatible functionality. MINOR: x.y+1.z

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support DuckDB backend

2 participants