Database of images for jigsaw puzzle game?

I am rethinking the structure of my GUI for my jigsaw puzzle game. I’ve been creating separate folder “packs” of images based on categories like “landscape” or “animals” but I don’t like how clunky that feels and there are some obvious overlaps where some images fall in multiple categories. I’d much rather find a way to design a database with tags/metadata that will be able to pull thumbnails into the main window based on their tag selected by the user. I would also probably put a selection of randomly chosen images into the homepage to load until the user chooses a tag.
My question is how do I do this? I’ve been learning C++ and I’ve been using blueprint for a few years now. Is there a best practice for creating this sort of menu system?