Ebooks in an S3 compatible storage bucket, metadata in a Postgres database. That has the huge advantage of being able to do full text search and kNN similarity right in the database, for example.
Colibri is built around a pretty solid data schema (I hope). Check out the migrations folder if you’re curious :-)
LLMs might make sense to interact with your collection, so that could find its way into the app at some point. Plus, I've been experimenting with generating llms.txt for all routes to point your own LLM to.
On the other hand, I'm concerned with LLMs quite intensely at work, so it's nice to spend some time with plain, honest-to-god SQL for now!