summaryrefslogtreecommitdiff
path: root/f3s
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-07-18 21:11:43 +0300
committerPaul Buetow <paul@buetow.org>2026-07-18 21:11:43 +0300
commita536047f442eb4c9bbb3f547d2129aad130acb96 (patch)
treed9d0c22c4772b84da3970719c2e6403984a8bea7 /f3s
parent65b728742d07173b52cd714288b1aa3491b8316c (diff)
immich: Stage A — migrate Postgres from pgvecto.rs to VectorChord
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 <noreply@anthropic.com>
Diffstat (limited to 'f3s')
-rw-r--r--f3s/immich/helm-chart/templates/postgres.yaml12
1 files changed, 10 insertions, 2 deletions
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: