There are two databases, and they are not equals. MySQL, behind the CMS, is the system of record: every content type, field, page, setting and relationship lives there, and only the CMS writes to it. Alex OS never touches it; it reads published content over the CMS's internal HTTP API.
Alex OS keeps its own PostgreSQL database with pgvector for one thing: chunk embeddings, derived from that published content. Everything in it can be thrown away and rebuilt from the CMS. That's what makes it optional. If the vector store isn't configured or isn't reachable, retrieval falls back to keyword scoring instead of failing, and the assistant still answers with citations.
Keeping the split this way means there's never a question about which database is right. If MySQL and the vectors disagree, MySQL wins and the vectors get rebuilt.
Semantic retrieval became an optional layer over the content rather than a second source of truth: embeddings sit in Alex OS's own PostgreSQL + pgvector store, and a keyword fallback covers the case where it is absent.
One system of record is easy to reason about, back up and restore. Derived data that can be rebuilt can also be lost without losing anything that matters.