For my projects I typically lean towards avoiding server components at all costs just because I prefer the ease of setup and it is one less thing to break for users. Though it has some annoyances like you're encountering.
Maybe at some point I (or someone) can create a server version repo so people have the option to choose.
I toyed with embedding, and still have an implementation laying around in a branch locally, but that would require a readily available dataset of embedded movies and shows to do comparisons against right?
I'm pretty new to embedding so my understanding may be a off.
The “cool” thing about embeddings is that you can use a generic one that can even support multiple languages. Just with the plot/description of the movie you could see “similar” ones in different aspects such as movies that also talk about dogs or more complex relations. Here is a short post about how it works: https://blog.sgn.space/posts/embeddings_based_recommendation...
yeah I mentioned in another comment I've never found recommendation systems to work very well for me. I've gone through many of them and the reason I decided to start using LLMs was because I was out of options...and after I tried it I ended up much preferring the recommendations given.
You can also specify more granular in human words what you're looking for which is a big bonus for me personally.
I haven't looked into it too deep if I'm honest, I built this app solely because I find LLM TV and Movie recommendations to be leaps and bounds better than any other recommendation service I've ever used, I find most of them terrible unfortunately.
I just got tired of manually inputting the data and wanted a more automated approach. This recommendations system isn't extracting loads of data yet (like how often things are watched etc..) but instead a more birds eye view of your library and watch history to analyze.
I'm definitely not opposed to adding Lidarr support, I've never personally used it so I may tinker around with it here soon and think on how to structure prompts for that etc...
It's hard to really explain how the LLM decides what to recommend if I'm honest.
The general idea is I generate a prompt to feed into the LLM with specific instructions to use the Sonarr (for example) library info which is passed in as a list of series titles. I also provide some general guidelines on what it should take into account when choosing media to suggest.
After that it's in the hand of the LLM, it will internally analyze and recommend shows based on what it believe someone might enjoy based on their media library...Given that every LLM model is different, how they internally decide what shows to recommend will be unique to them. So if you have bad suggestions etc..It's best to try a different model.
it provides nice flexibility but in reality my control of the actual recommendations are limited to the initial prompt that is passed in.
Does this mean it is limited to the model's internal memory? Meaning newer shows won't be in the recommendations because they're past the training cut-off?
That is a likely true to an extent, though it's hard to say at what point it cuts off.
If a model was trained 6 months ago for example it will likely have some info on shows that came out this month due to various data points talking about that show as "upcoming" but not released. Due to that it may still recommend "new" shows that have just released.
All that being said, I have to imagine that suggesting shows that have just now been released is likely the weak point of the system for sure.
Hopefully it works well for you! I just pushed up changes for adding Jellyfin integration as well, so that should be available through the docker hub here soon as well.
Tautulli proved troublesome in my first attempt at integrating it and got put on the back-burner unfortunately. I would really like to get it integrated properly so per user recommendations could become a thing.
I haven't looked at integrating Overseer yet but that is a good idea as well and worth a try at implementing. I'll be adding that to my list, thanks for suggestion!
Interesting, I've never used Trakt before but that looks pretty cool. I could see adding support for that. I'll definitely be looking into it.
As for the largest library, I only really know of my own which is around 250 series and 250 movies. Not small but not huge. Passing all of that info is fine enough, but I'm also curious how truly massive libraries or watch histories are handled.
I imagine you would hit the LLM token input limit first if you had thousands of series and movies. Definitely need some further testing in those cases.
Ahh ya. Big libraries can have over 30k movies. Emby, jellyfin, and plex can also integrate into Trakt. So it’s already being used in these apps for many users.
That's good to know, there are ways around the limit of course by breaking up the prompt into multiple messages and then you're at the mercy of the models context window which can be anywhere from 4k to millions.
At some point though like you say, it's going to become ineffective and you'd probably want to use the "Sampling" mode that is available to only send a random subset of your library to model as a general representation. Though how well this works on massive library remains to be seen.
Maybe at some point I (or someone) can create a server version repo so people have the option to choose.