@Morriz thanks for sharing.
I don’t have the full specifications or the usual number of products so forgive if I assume too much but for this type of workflow, personally I wouldn’t bother with the upsert. Just clear the vector store and reinsert everything. Reason being if pages or products are removed/deleted, it’s likely your vector store is going to get out of sync.
But here’s an alternative implementation which uses redis instead to keep track of modified items. It does add another component to the stack but you can also use the excellent KV storage community node instead.