將您最近觀看的 Plex 電影輸入 RAG 支援的 LLM 鏈,以根據您的觀看歷史記錄獲得推薦。
你需要兩件事:
preferences.xml
檔案中找到Plex 金鑰。我使用套件中心在 Synology NAS 上運行 Plex,因此我在/PlexMediaServer/AppData/Plex Media Server/Preferences.xml
中找到了我的套件。將這兩者提供給PLEX_ADDRESS
和PLEX_TOKEN
環境變數。
首次啟動時,系統將偵測您的 Plex 庫是否儲存在向量資料庫中。如果不是,您的媒體將被收回。您需要提供預設程式庫以透過PLEX_DEFAULT_LIBRARY_SECTION
環境變數下載媒體。您需要自己查詢 Plex 才能獲得此信息,但對我來說,我的電影位於第 3 部分。
此推薦引擎連接到Ollama。您可以自備或在雲端運行。只需提供OLLAMA_ADDRESS
、 OLLAMA_EMBEDDING_MODEL
和OLLAMA_LANGUAGE_MODEL
作為環境變數。
您可以在backend/internal/pkg/langchain/generate.go
中找到 RAG 提示字元。這是根據我的具體需求而寫的。如果你的需求不是我的需求,請相應調整接地提示。請注意,如果您有一個非常大的媒體集合,它可能會超出您正在使用的模型的上下文視窗。您可以透過調整傳入backend/internal/pkg/plex/api.go
中媒體 getter 的限制來調整檢索的標題數。
下載此儲存庫並使用go build -o recommendations .backend/cmd/main.go
建置應用程式。這會建立一個名為recommendations
的二進位文件,您可以使用./recommendations
運行該二進位檔案。
Postgres 資料庫附加在./pg-data
處,用於快取推薦。最近查看的標題經過 Base-64 編碼並與法學碩士提供的標準化推薦一起儲存。在請求 LLM 推薦之前會查找此緩存,如果找到則按原樣返回。
預設的Postgres環境如下:
POSTGRES_PASSWORD=postgres
POSTGRES_USER=postgres
POSTGRES_DB=caches
POSTGRES_PORT=5432
POSTGRES_HOST=postgres
您可以透過為這些環境變數提供自己的值來覆寫它
該儲存庫的根目錄中有一個docker-compose.yml
檔案。您可以透過發出TAG_VERSION=foo docker compose up --build
指令來執行推薦引擎和關聯的 Weaviate 資料庫。確保已安裝 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 容器仍會啟動。