Загрузите недавно просмотренные фильмы Plex в цепочку LLM на базе RAG, чтобы получить рекомендации, основанные на вашей истории просмотра.
Вам понадобятся две вещи:
preferences.xml
в пути установки. Я запускаю Plex на Synology NAS с помощью Центра пакетов, поэтому нашел свой в /PlexMediaServer/AppData/Plex Media Server/Preferences.xml
. Укажите оба этих параметра в переменных среды PLEX_ADDRESS
и PLEX_TOKEN
.
При первоначальной загрузке система определит, хранится ли ваша библиотека Plex в базе данных векторов. Если это не так, ваши медиафайлы будут восстановлены. Вам необходимо предоставить библиотеку по умолчанию для загрузки мультимедиа через переменную среды PLEX_DEFAULT_LIBRARY_SECTION
. Чтобы получить это, вам нужно будет самостоятельно запросить Plex, но для меня мои фильмы находятся в разделе 3. Я вернусь к этому разделу, если вы его не предоставите.
Этот механизм рекомендаций подключается к Олламе. Вы можете принести свой собственный или запустить его в облаке. Просто укажите OLLAMA_ADDRESS
, OLLAMA_EMBEDDING_MODEL
и OLLAMA_LANGUAGE_MODEL
в качестве переменных среды.
Вы можете найти приглашение RAG в backend/internal/pkg/langchain/generate.go
. Это написано с учетом моих конкретных потребностей. Если ваши потребности не совпадают с моими, отрегулируйте подсказку о заземлении соответствующим образом. Обратите внимание: если у вас очень большая медиа-коллекция, она может превышать контекстное окно используемой вами модели. Вы можете настроить количество получаемых заголовков, регулируя ограничения, передаваемые в средства получения мультимедиа в backend/internal/pkg/plex/api.go
.
Загрузите этот репозиторий и создайте приложение, используя go build -o recommendations .backend/cmd/main.go
. При этом создается двоичный файл, называемый recommendations
, который вы можете запустить с помощью ./recommendations
.
База данных Postgres прикреплена по адресу ./pg-data
и используется для кэширования рекомендаций. Заголовки, предоставленные из недавно просмотренных материалов, кодируются в формате Base64 и сохраняются вместе с нормализованными рекомендациями, предоставленными LLM. Этот кеш просматривается перед запросом рекомендации LLM и возвращается в том виде, в котором он найден.
Среда Postgres по умолчанию выглядит следующим образом:
POSTGRES_PASSWORD=postgres
POSTGRES_USER=postgres
POSTGRES_DB=caches
POSTGRES_PORT=5432
POSTGRES_HOST=postgres
Вы можете переопределить это, указав свои собственные значения для этих переменных среды.
В корне этого репозитория находится файл docker-compose.yml
. Вы можете запустить механизм рекомендаций и связанную с ним базу данных Weaviate, введя команду TAG_VERSION=foo docker compose up --build
. Убедитесь, что у вас установлены Docker и Docker Compose.
Во внутренних пакетах есть несколько тестов, почти все из которых были написаны LLM. Вы можете протестировать эту программу, используя go test ./...
из корня этого репозитория. Эти тесты автоматически запускаются при сборке с помощью Docker.
Трассировка открытой телеметрии реализована на серверной стороне. Чтобы использовать это по умолчанию, установите OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=otlp://jaeger:4317
в среде и убедитесь, что служба Jaeger запускается из Docker Compose. Трассировки собираются в Jaeger и доступны по адресу http://localhost:16686
. Метрики можно расширить, передав параметр telemetry.WithMeter
telemetry.InitOtel()
. Вам придется самостоятельно определять метрики.
Телеметрию можно отключить, установив DISABLE_TELEMETRY=true
в вашей среде. Обратите внимание, что при использовании docker compose up
контейнер Jaeger все равно запустится.