Introduzca sus películas Plex vistas recientemente en una cadena LLM impulsada por RAG para obtener recomendaciones basadas en su historial de reproducciones.
Necesitarás dos cosas:
preferences.xml
en su ruta de instalación. Ejecuto Plex en un Synology NAS usando el Centro de paquetes, así que encontré el mío en /PlexMediaServer/AppData/Plex Media Server/Preferences.xml
. Proporcione ambos a las variables de entorno PLEX_ADDRESS
y PLEX_TOKEN
.
En el arranque inicial, el sistema detectará si su biblioteca Plex está almacenada en la base de datos vectorial. Si no es así, se recuperarán sus medios. Debe proporcionar la biblioteca predeterminada desde la que descargar medios a través de la variable de entorno PLEX_DEFAULT_LIBRARY_SECTION
. Deberá consultar Plex usted mismo para obtener esto, pero para mí, mis películas están en la sección 3. Volveré a esta sección si no proporciona una.
Este motor de recomendaciones se conecta con Ollama. Puedes traer el tuyo propio o ejecutarlo en la nube. Simplemente proporcione OLLAMA_ADDRESS
, OLLAMA_EMBEDDING_MODEL
y OLLAMA_LANGUAGE_MODEL
como variables de entorno.
Puede encontrar el mensaje RAG en backend/internal/pkg/langchain/generate.go
. Esto está escrito para mis necesidades específicas. Si sus necesidades no son las mías, ajuste el aviso de conexión a tierra en consecuencia. Tenga en cuenta que si tiene una colección de medios muy grande, puede exceder la ventana de contexto del modelo que está utilizando. Puede ajustar la cantidad de títulos que recupera ajustando los límites pasados a los captadores de medios en backend/internal/pkg/plex/api.go
.
Descargue este repositorio y cree la aplicación usando go build -o recommendations .backend/cmd/main.go
. Esto crea un binario llamado recommendations
que puede ejecutar con ./recommendations
.
Se adjunta una base de datos de Postgres en ./pg-data
y se utiliza para almacenar en caché las recomendaciones. Los títulos proporcionados por los vistos recientemente se codifican en base 64 y se almacenan junto con la recomendación normalizada proporcionada por el LLM. Este caché se busca antes de solicitar la recomendación de LLM y se devuelve tal cual si se encuentra uno.
El entorno predeterminado de Postgres es el siguiente:
POSTGRES_PASSWORD=postgres
POSTGRES_USER=postgres
POSTGRES_DB=caches
POSTGRES_PORT=5432
POSTGRES_HOST=postgres
Puede anular esto proporcionando sus propios valores a estas variables de entorno
Hay un archivo docker-compose.yml
en la raíz de este repositorio. Puede ejecutar el motor de recomendación y la base de datos Weaviate asociada emitiendo el comando TAG_VERSION=foo docker compose up --build
. Asegúrese de tener Docker y Docker Compose instalados.
Hay varias pruebas en los paquetes internos y casi todas fueron escritas por un LLM. Puede probar este programa usando go test ./...
desde la raíz de este repositorio. Estas pruebas se ejecutan automáticamente cuando compila con Docker.
El seguimiento de Open Telemetry está instrumentado en el backend. Para usar esto de forma inmediata, configure OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=otlp://jaeger:4317
en el entorno y asegúrese de que el servicio Jaeger se inicie desde Docker Compose. Los rastros se recopilan en Jaeger y se puede acceder a ellos en http://localhost:16686
. Las métricas están disponibles para ampliar pasando la opción telemetry.WithMeter
telemetry.InitOtel()
. Tendrá que instrumentar las métricas usted mismo.
La telemetría se puede desactivar configurando DISABLE_TELEMETRY=true
en su entorno. Tenga en cuenta que si usa docker compose up
, el contenedor Jaeger aún se iniciará.