pgvector is optional, not the system of record
Alex OS's semantic retrieval uses an optional Postgres/pgvector store — the CMS itself never left MySQL.
Content
Alex OS reads database_url for an optional Postgres connection with pgvector installed. When it's empty or unreachable, vectordb.py wraps every call in VectorDBError and retrieval.py falls back to keyword scoring instead of failing the request. I built it this way because I didn't want Alex OS's uptime to depend on a second database being healthy — the assistant should degrade to worse answers, not go down.
The CMS itself never moved off MySQL. It's easy to describe this as "the pgvector migration" in shorthand, but that overstates it — nothing about the CMS's system of record changed. Only Alex OS's embeddings store is Postgres, and only when configured.