Introduisez vos films récemment visionnés Plex dans une chaîne LLM alimentée par RAG pour obtenir des recommandations basées sur votre historique de visionnage.
Vous aurez besoin de deux choses :
preferences.xml
dans votre chemin d'installation. J'exécute Plex sur un NAS Synology à l'aide de Package Center, j'ai donc trouvé le mien dans /PlexMediaServer/AppData/Plex Media Server/Preferences.xml
. Fournissez ces deux éléments aux variables d'environnement PLEX_ADDRESS
et PLEX_TOKEN
.
Au démarrage initial, le système détectera si votre bibliothèque Plex est stockée dans la base de données vectorielle. Si ce n'est pas le cas, vos médias seront récupérés. Vous devez fournir la bibliothèque par défaut à partir de laquelle télécharger les médias via la variable d'environnement PLEX_DEFAULT_LIBRARY_SECTION
. Vous devrez interroger Plex vous-même pour obtenir cela, mais pour moi, mes films sont dans la section 3. Je reviendrai à cette section si vous n'en fournissez pas.
Ce moteur de recommandation se connecte à Ollama. Vous pouvez apporter le vôtre ou l'exécuter sur le cloud. Fournissez simplement OLLAMA_ADDRESS
, OLLAMA_EMBEDDING_MODEL
et OLLAMA_LANGUAGE_MODEL
comme variables d'environnement.
Vous pouvez trouver l'invite RAG dans backend/internal/pkg/langchain/generate.go
. Ceci est écrit pour mes besoins spécifiques. Si vos besoins ne sont pas les miens, ajustez l'invite de mise à la terre en conséquence. Notez que si vous disposez d'une très grande collection multimédia, elle peut dépasser la fenêtre contextuelle du modèle que vous utilisez. Vous pouvez ajuster la quantité de titres que vous récupérez en ajustant les limites transmises aux getters multimédias dans backend/internal/pkg/plex/api.go
.
Téléchargez ce référentiel et créez l'application à l'aide go build -o recommendations .backend/cmd/main.go
. Cela crée un binaire appelé recommendations
que vous pouvez exécuter avec ./recommendations
.
Une base de données Postgres est attachée à ./pg-data
et est utilisée pour mettre en cache les recommandations. Les titres fournis récemment sont codés en base 64 et stockés avec la recommandation normalisée fournie par le LLM. Ce cache est recherché avant de demander une recommandation LLM et est renvoyé tel quel s'il en est trouvé.
L'environnement Postgres par défaut est le suivant :
POSTGRES_PASSWORD=postgres
POSTGRES_USER=postgres
POSTGRES_DB=caches
POSTGRES_PORT=5432
POSTGRES_HOST=postgres
Vous pouvez remplacer cela en fournissant vos propres valeurs à ces variables d'environnement
Il existe un fichier docker-compose.yml
à la racine de ce dépôt. Vous pouvez exécuter le moteur de recommandation et la base de données Weaviate associée en exécutant la commande TAG_VERSION=foo docker compose up --build
. Assurez-vous que Docker et Docker Compose sont installés.
Il existe plusieurs tests dans les packages internes qui ont presque tous été écrits par un LLM. Vous pouvez tester ce programme en utilisant go test ./...
à partir de la racine de ce dépôt. Ces tests sont automatiquement exécutés lorsque vous construisez avec Docker.
Le traçage Open Telemetry est instrumenté dans le backend. Pour l'utiliser immédiatement, définissez OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=otlp://jaeger:4317
dans l'environnement et assurez-vous que le service Jaeger est démarré à partir de Docker Compose. Les traces sont collectées dans Jaeger et accessibles sur http://localhost:16686
. Les métriques peuvent être étendues en passant l'option telemetry.WithMeter
telemetry.InitOtel()
. Vous devrez instrumenter vous-même les métriques.
La télémétrie peut être désactivée en définissant DISABLE_TELEMETRY=true
dans votre environnement. Notez que si vous utilisez docker compose up
, le conteneur Jaeger démarrera toujours.