Decouple memory.type from storage tier: standalone must support pgvector #1398

Open
opened 2026-08-24 21:49:19 +00:00 by orch-01 · 2 comments
Contributor

The tier concept currently conflates topology (single instance vs federated) with memory capability (keyword vs vector): standalone hard-writes memory.type=keyword and vector memory is reachable only via the federated tier. These are orthogonal. Vector storage is a property of the storage backend, not of how many sites participate: a single-site deployment with its own Postgres running the pgvector image has everything vector memory needs and is denied it only by config validation.

Operator ruling driving this (USC operator, 2026-08-24): even federated instances need their OWN LOCAL vector storage (federation is a sync/query concern above local storage, not a substitute for it), so every tier ends up needing the same local vector capability anyway.

Ask: make memory.type an independent knob (keyword | pgvector) valid on standalone and federated alike, with a pgvector-extension preflight where selected.

Evidence base: T63 greenfield (see 1389/1393 context): standalone install on a pgvector-image Postgres, memory silently keyword.

Reported by usc/fred during T63 greenfield deployment. Filed by orch-01. Tag: T63.

The tier concept currently conflates topology (single instance vs federated) with memory capability (keyword vs vector): standalone hard-writes memory.type=keyword and vector memory is reachable only via the federated tier. These are orthogonal. Vector storage is a property of the storage backend, not of how many sites participate: a single-site deployment with its own Postgres running the pgvector image has everything vector memory needs and is denied it only by config validation. Operator ruling driving this (USC operator, 2026-08-24): even federated instances need their OWN LOCAL vector storage (federation is a sync/query concern above local storage, not a substitute for it), so every tier ends up needing the same local vector capability anyway. Ask: make memory.type an independent knob (keyword | pgvector) valid on standalone and federated alike, with a pgvector-extension preflight where selected. Evidence base: T63 greenfield (see 1389/1393 context): standalone install on a pgvector-image Postgres, memory silently keyword. Reported by usc/fred during T63 greenfield deployment. Filed by orch-01. Tag: T63.
Author
Contributor

Operator ruling update: homelab operator (Jason, 2026-08-24) CONCURS with the USC operator ruling. Joint operator backing: memory.type becomes an independent knob (keyword | pgvector) valid on standalone and federated tiers alike, with a pgvector-extension preflight where selected. Design proceeds on that basis.

Operator ruling update: homelab operator (Jason, 2026-08-24) CONCURS with the USC operator ruling. Joint operator backing: memory.type becomes an independent knob (keyword | pgvector) valid on standalone and federated tiers alike, with a pgvector-extension preflight where selected. Design proceeds on that basis.
Author
Contributor

Additional evidence (USC web1, 2026-08-24, relayed by orch-01): standalone with memory.type=keyword still initializes EmbeddingService, which WARNs 'Embedding dimensions (768) differ from pgvector schema (1536)' on every start. Two implications for the decoupling work: (1) the embedding path is not actually gated off on keyword tiers, so the tier/memory conflation already leaks at runtime; (2) the schema hard-codes vector(1536) while the embedder produces 768 - the pgvector knob needs a dimension config (or schema derived from the embedder) as part of this change, not a fixed 1536.

Additional evidence (USC web1, 2026-08-24, relayed by orch-01): standalone with memory.type=keyword still initializes EmbeddingService, which WARNs 'Embedding dimensions (768) differ from pgvector schema (1536)' on every start. Two implications for the decoupling work: (1) the embedding path is not actually gated off on keyword tiers, so the tier/memory conflation already leaks at runtime; (2) the schema hard-codes vector(1536) while the embedder produces 768 - the pgvector knob needs a dimension config (or schema derived from the embedder) as part of this change, not a fixed 1536.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mosaicstack/stack#1398