From 12d0ebeb840d389322c3ccc029be17e164e3fbb0 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Tue, 26 May 2026 21:01:23 -0400 Subject: [PATCH] =?UTF-8?q?migration:=20clear=20note=5Fembeddings=20for=20?= =?UTF-8?q?fastembed=20swap=20(768d=20=E2=86=92=20384d)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit JSONB column so no type change needed — just wipe and let the startup backfill regenerate at the new dimension. --- ...052_clear_note_embeddings_for_fastembed.py | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 alembic/versions/0052_clear_note_embeddings_for_fastembed.py diff --git a/alembic/versions/0052_clear_note_embeddings_for_fastembed.py b/alembic/versions/0052_clear_note_embeddings_for_fastembed.py new file mode 100644 index 0000000..e60eac0 --- /dev/null +++ b/alembic/versions/0052_clear_note_embeddings_for_fastembed.py @@ -0,0 +1,33 @@ +"""clear note_embeddings for fastembed swap + +Revision ID: 0052 +Revises: 0051 +Create Date: 2026-05-26 + +Embeddings stored in `note_embeddings.embedding` (JSONB) were generated by +Ollama's nomic-embed-text model (768-dim). The fastembed swap uses +BAAI/bge-small-en-v1.5 (384-dim). Mixed-dim vectors would break the +Python-side cosine similarity (length mismatch), so we wipe the table. + +The startup hook `services.embeddings.backfill_note_embeddings` regenerates +everything at the new dimension on next boot. There's no column-type change +because the column is JSONB — dimensionless on the storage side. + +Downgrade is the same operation: a fresh deployment of the prior code would +backfill with the old model. No data is lost that the next boot won't restore. +""" +from alembic import op + + +revision = "0052" +down_revision = "0051" +branch_labels = None +depends_on = None + + +def upgrade() -> None: + op.execute("DELETE FROM note_embeddings") + + +def downgrade() -> None: + op.execute("DELETE FROM note_embeddings")