Leiten Sie Ihre kürzlich angesehenen Plex-Filme in eine RAG-basierte LLM-Kette ein, um Empfehlungen basierend auf Ihrem Wiedergabeverlauf zu erhalten.
Sie benötigen zwei Dinge:
preferences.xml
in Ihrem Installationspfad. Ich führe Plex auf einem Synology NAS mit Package Center aus, also habe ich meines in /PlexMediaServer/AppData/Plex Media Server/Preferences.xml
gefunden. Geben Sie beides an die Umgebungsvariablen PLEX_ADDRESS
und PLEX_TOKEN
an.
Beim ersten Start erkennt das System, ob Ihre Plex-Bibliothek in der Vektordatenbank gespeichert ist. Ist dies nicht der Fall, werden Ihre Medien abgerufen. Sie müssen die Standardbibliothek zum Herunterladen von Medien über die Umgebungsvariable PLEX_DEFAULT_LIBRARY_SECTION
bereitstellen. Sie müssen Plex selbst anfragen, um dies zu erhalten, aber für mich sind meine Filme in Abschnitt 3. Ich werde auf diesen Abschnitt zurückgreifen, wenn Sie keinen bereitstellen.
Diese Empfehlungsmaschine stellt eine Verbindung zu Ollama her. Sie können Ihre eigene Lösung mitbringen oder in der Cloud ausführen. Geben Sie einfach OLLAMA_ADDRESS
, OLLAMA_EMBEDDING_MODEL
und OLLAMA_LANGUAGE_MODEL
als Umgebungsvariablen an.
Sie finden die RAG-Eingabeaufforderung unter backend/internal/pkg/langchain/generate.go
. Dies ist auf meine spezifischen Bedürfnisse zugeschnitten. Wenn Ihre Bedürfnisse nicht meinen Bedürfnissen entsprechen, passen Sie die Erdungsaufforderung entsprechend an. Beachten Sie, dass bei einer sehr großen Mediensammlung diese möglicherweise das Kontextfenster des von Ihnen verwendeten Modells überschreitet. Sie können die Anzahl der Titel, die Sie abrufen, anpassen, indem Sie die an die Medien-Getter in backend/internal/pkg/plex/api.go
übergebenen Grenzwerte anpassen.
Laden Sie dieses Repository herunter und erstellen Sie die App mit go build -o recommendations .backend/cmd/main.go
. Dadurch wird eine Binärdatei namens recommendations
erstellt, die Sie mit ./recommendations
ausführen können.
Eine Postgres-Datenbank ist unter ./pg-data
angehängt und wird zum Zwischenspeichern von Empfehlungen verwendet. Die bereitgestellten Titel der zuletzt angesehenen Titel werden Base-64-kodiert und zusammen mit der normalisierten Empfehlung des LLM gespeichert. Dieser Cache wird vor der Anforderung einer LLM-Empfehlung durchsucht und so zurückgegeben, wie er ist, wenn einer gefunden wird.
Die Standard-Postgres-Umgebung ist wie folgt:
POSTGRES_PASSWORD=postgres
POSTGRES_USER=postgres
POSTGRES_DB=caches
POSTGRES_PORT=5432
POSTGRES_HOST=postgres
Sie können dies überschreiben, indem Sie diesen Umgebungsvariablen Ihre eigenen Werte bereitstellen
Im Stammverzeichnis dieses Repos befindet sich eine Datei docker-compose.yml
. Sie können die Recommendation Engine und die zugehörige Weaviate-Datenbank ausführen, indem Sie den Befehl TAG_VERSION=foo docker compose up --build
ausführen. Stellen Sie sicher, dass Docker und Docker Compose installiert sind.
In den internen Paketen gibt es mehrere Tests, die fast alle von einem LLM geschrieben wurden. Sie können dieses Programm mit go test ./...
im Stammverzeichnis dieses Repos testen. Diese Tests werden automatisch ausgeführt, wenn Sie mit Docker erstellen.
Das Open-Telemetry-Tracing ist im Backend instrumentiert. Um dies sofort zu verwenden, legen Sie OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=otlp://jaeger:4317
in der Umgebung fest und stellen Sie sicher, dass der Jaeger-Dienst von Docker Compose aus gestartet wird. Spuren werden in Jaeger gesammelt und sind unter http://localhost:16686
zugänglich. Metriken können durch Übergabe der telemetry.WithMeter
-Option telemetry.InitOtel()
erweitert werden. Sie müssen die Kennzahlen selbst instrumentieren.
Die Telemetrie kann deaktiviert werden, indem Sie in Ihrer Umgebung DISABLE_TELEMETRY=true
festlegen. Beachten Sie, dass bei Verwendung von docker compose up
der Jaeger-Container weiterhin gestartet wird.