From 78de142660cf2d862ad8f0c811eb64ac8eaa3d81 Mon Sep 17 00:00:00 2001 From: marius Date: Wed, 3 Jun 2026 17:13:40 +0200 Subject: [PATCH 1/2] fix(migrations): derive embedding dimenstions from settings instead of hardcoded values Replace hardcoded Vector(1536) with Vector(settings.EMBEDDING.VECTOR_DIMENSTIONS) in three migration files so the database schema automatically matches the configured EMBEDDING_VECTOR_DIMENSTIONS value from .env. --- .../versions/119a52b73c60_support_external_embeddings.py | 5 +++-- .../versions/917195d9b5e9_add_messageembedding_table.py | 2 +- migrations/versions/a1b2c3d4e5f6_initial_schema.py | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/migrations/versions/119a52b73c60_support_external_embeddings.py b/migrations/versions/119a52b73c60_support_external_embeddings.py index ea8aed97c..cc5117f90 100644 --- a/migrations/versions/119a52b73c60_support_external_embeddings.py +++ b/migrations/versions/119a52b73c60_support_external_embeddings.py @@ -25,6 +25,7 @@ from pgvector.sqlalchemy import Vector from migrations.utils import column_exists, constraint_exists, get_schema, index_exists +from src.config import settings # revision identifiers, used by Alembic. revision: str = "119a52b73c60" @@ -42,7 +43,7 @@ def upgrade() -> None: op.alter_column( "message_embeddings", "embedding", - existing_type=Vector(1536), + existing_type=Vector(settings.EMBEDDING.VECTOR_DIMENSIONS), nullable=True, schema=schema, ) @@ -50,7 +51,7 @@ def upgrade() -> None: op.alter_column( "documents", "embedding", - existing_type=Vector(1536), + existing_type=Vector(settings.EMBEDDING.VECTOR_DIMENSIONS), nullable=True, schema=schema, ) diff --git a/migrations/versions/917195d9b5e9_add_messageembedding_table.py b/migrations/versions/917195d9b5e9_add_messageembedding_table.py index 4eb737390..4fe710bcc 100644 --- a/migrations/versions/917195d9b5e9_add_messageembedding_table.py +++ b/migrations/versions/917195d9b5e9_add_messageembedding_table.py @@ -28,7 +28,7 @@ def upgrade() -> None: "message_embeddings", sa.Column("id", sa.BigInteger(), sa.Identity(), nullable=False), sa.Column("content", sa.Text(), nullable=False), - sa.Column("embedding", Vector(1536), nullable=False), + sa.Column("embedding", Vector(settings.EMBEDDING.VECTOR_DIMENSIONS), nullable=False), sa.Column("message_id", sa.Text(), nullable=False), sa.Column("workspace_name", sa.Text(), nullable=False), sa.Column("session_name", sa.Text(), nullable=True), diff --git a/migrations/versions/a1b2c3d4e5f6_initial_schema.py b/migrations/versions/a1b2c3d4e5f6_initial_schema.py index cafa43cac..94650fa32 100644 --- a/migrations/versions/a1b2c3d4e5f6_initial_schema.py +++ b/migrations/versions/a1b2c3d4e5f6_initial_schema.py @@ -363,7 +363,7 @@ def upgrade() -> None: server_default="{}", ), sa.Column("content", sa.Text(), nullable=False), - sa.Column("embedding", Vector(1536), nullable=True), # pyright: ignore + sa.Column("embedding", Vector(settings.EMBEDDING.VECTOR_DIMENSIONS), nullable=True), # pyright: ignore sa.Column( "created_at", sa.DateTime(timezone=True), From 5d31cb7aaaf81ead4592df511746eaa682a10c18 Mon Sep 17 00:00:00 2001 From: marius Date: Wed, 3 Jun 2026 21:22:56 +0200 Subject: [PATCH 2/2] fix(llm): add model "mistral-embed" to known models rejecting dimenstions parameter --- src/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config.py b/src/config.py index b435daa02..0a89aa6f9 100644 --- a/src/config.py +++ b/src/config.py @@ -28,7 +28,7 @@ # OpenAI-compatible models that reject the `dimensions=` request parameter. _EMBEDDING_KNOWN_REJECTING_MODELS: frozenset[str] = frozenset( - {"text-embedding-ada-002"} + {"text-embedding-ada-002", "mistral-embed"} )