Files
Nicolò Boschi 4cd260b691 feat(api): add ParadeDB pg_search as Citus-compatible BM25 backend (#1755)
* feat(api): add ParadeDB pg_search as Citus-compatible BM25 backend

Adds a fourth value (`pg_search`) for `HINDSIGHT_API_TEXT_SEARCH_EXTENSION`
alongside the existing `native`, `vchord`, and `pg_textsearch`. ParadeDB
pg_search is the only true-BM25 backend that works on a Citus distributed
Postgres cluster, so this unblocks horizontally scaled deployments.

The retrieval arm builds the @@@ predicate via paradedb.boolean(should =>
ARRAY[paradedb.match('text', $4), ...]) since @@@ on the key_field requires
field-qualified terms; this preserves multi-field coverage (text + context
+ text_signals) without needing query string interpolation.

Includes a docker-compose example under docker/docker-compose/pg_search/
based on the official paradedb/paradedb:latest-pg17 image.

Closes #1754

* fix: accept pgroonga in n9i0 migration; clarify consolidator search_vector comment

- n9i0 (learnings + pinned_reflections) validation now permits 'pgroonga',
  treating it as native at this migration stage. ensure_text_search_extension()
  at startup converts the reflections table (renamed from pinned_reflections in
  p1k2l3m4n5o6) to pgroonga structures; the learnings table is dropped in the
  same later migration so its transient native column never reaches steady state.
  Without this, pgroonga users hit ValueError on a fresh install.

- consolidator.py single-observation INSERT: the previous comment claimed
  search_vector was GENERATED ALWAYS, but migration p4q5r6s7t8u9 dropped that
  expression. Updated to reflect current behavior and flag the resulting gap
  for native (observations land with NULL search_vector and are not BM25-
  searchable until reflected/re-ingested) so a follow-up can address it.

* chore: regenerate hindsight-docs skill after rebase

Rebasing onto main pulled in hindsight-docs/ changes from #1704
(Codex OAuth embeddings) and #1538 (pgroonga). Re-run the
generate-docs-skill.sh generator so the cached
skills/hindsight-docs/references/developer/configuration.md mirror
matches the current developer docs and verify-generated-files passes.
2026-05-26 16:45:16 +02:00

8 lines
343 B
Docker

# PostgreSQL with pgvector and ParadeDB pg_search extensions.
#
# The official ParadeDB image ships PostgreSQL with pg_search and pgvector
# already installed, so no build steps are required. We pin to the PG17
# variant for parity with the other Hindsight docker-compose examples
# (vchord, pg_textsearch).
FROM paradedb/paradedb:latest-pg17