将您最近观看的 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 容器仍会启动。