From a536047f442eb4c9bbb3f547d2129aad130acb96 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 18 Jul 2026 21:11:43 +0300 Subject: =?UTF-8?q?immich:=20Stage=20A=20=E2=80=94=20migrate=20Postgres=20?= =?UTF-8?q?from=20pgvecto.rs=20to=20VectorChord?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Swap the hand-rolled immich-postgres image from tensorchord/pgvecto-rs:pg16-v0.3.0 to the official Immich bundle ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvector0.8.0-pgvectors0.3.0. This makes vchord.so available (still preloading vectors.so) so Immich can migrate smart-search/face vectors off the deprecated pgvecto.rs extension while still on the 2.x server, ahead of the 3.x bump (which drops pgvecto.rs entirely). Tag pins pgvecto.rs 0.3.0 to match the installed 'vectors' 0.3.0 catalog. Pre-upgrade ZFS snapshot taken: zdata/enc/nfsdata@immich-pre-3x-20260718 on f0. Co-Authored-By: Claude Opus 4.8 --- f3s/immich/helm-chart/templates/postgres.yaml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'f3s') diff --git a/f3s/immich/helm-chart/templates/postgres.yaml b/f3s/immich/helm-chart/templates/postgres.yaml index 07c0510..d117a4c 100644 --- a/f3s/immich/helm-chart/templates/postgres.yaml +++ b/f3s/immich/helm-chart/templates/postgres.yaml @@ -1,5 +1,13 @@ # PostgreSQL Deployment for Immich -# Requires PostgreSQL 16+ with pgvector extension +# Requires PostgreSQL 16 with the VectorChord (vchord) extension. Immich 3.x +# dropped pgvecto.rs, so we run the official Immich Postgres image which bundles +# VectorChord *and* pgvecto.rs (the "vectors"/pgvectors extension). Keeping the +# -pgvectors0.3.0 variant is mandatory during/after migration: our data dir was +# created by pgvecto.rs 0.3.0, so vectors.so must stay loadable to (a) read the +# existing catalog and (b) satisfy Immich 3.0.1, which preloads BOTH vchord.so +# and vectors.so. The image's entrypoint sets shared_preload_libraries from its +# own template (vchord.so, vectors.so); our previous tensorchord image set it via +# a command-line arg (not persisted in PGDATA), so the swap starts clean. apiVersion: apps/v1 kind: Deployment metadata: @@ -42,7 +50,7 @@ spec: readOnly: true containers: - name: postgres - image: tensorchord/pgvecto-rs:pg16-v0.3.0 + image: ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvector0.8.0-pgvectors0.3.0 ports: - containerPort: 5432 env: -- cgit v1.2.3