项目概述
Movie Agent 是一款面向电影发烧友的 AI 驱动的智能影视管理工具,将 AI 对话、智能推荐、4K 播放
与本地影视库管理能力整合于一个桌面应用中,支持纯本地部署,保护用户数据隐私。注意: 与本项
目同名的“MovieAgent”学术项目(新加坡国立大学 Show Lab 研究团队开发)专注于 AI 自动生成
电影视频,而本项目定位为影视内容管理工具,两者方向不同。
一、核心功能模块
电影库智能管理
功能 说明
多磁盘扫描 支持扫描 NAS 共享磁盘(如 \\192.168.1.11\disk),自动发现视频文件
智能文件名解析 从文件名中提取中文/英文标题、年份、分辨率、音视频编码等信息
元数据自动补全 通过 TMDB API 自动获取电影海报、简介、演职员、评分等元数据
增量扫描 仅处理新增或修改的文件,避免重复扫描
多维度筛选 按类型、年份、分辨率、评分、观看状态等条件筛选电影库
AI 智能对话
功能 说明
自然语言推荐 用户可通过日常语言提问,如“推荐一部诺兰导演的烧脑科幻片”
语义搜索 支持模糊语义检索,如“那部关于虫洞穿越的电影”精准定位《星际穿越》
对话上下文记忆 支持多轮对话,Agent 能记住用户偏好和历史交流内容
智能标签生成 根据电影简介自动生成情感标签(如“治愈”“烧脑”)和场景标签
混合搜索 结合向量语义检索与关键词精确匹配(BM25),兼顾搜索广度与精度
智能检索系统
功能 说明
向量化检索 使用 nomic-embed-text-v2-moe 嵌入模型(支持中英文及约100种语言),将电影简介转换为768维向量
LanceDB 向量数据库 本地嵌入式向量存储,零运维,支持毫秒级相似度检索
元数据过滤 支持在向量检索前按导演、年份、类型等条件预过滤
RRF 融合排序 采用倒数排名融合算法,综合向量检索与关键词检索结果
4K 高清播放
功能 说明
多格式支持 支持 4K、蓝光原盘、杜比视界(Profile 5/7/8)、HEVC/H.265 编码
硬件加速解码 支持 D3D11VA/CUDA/QSV 等硬件解码,充分利用 GPU 性能
NAS 网络播放 直接播放 NAS 共享目录中的视频文件,无需拷贝到本地
外部播放器调用 支持调用 PotPlayer、mpv 等专业播放器,保留完整播放体验
字幕自动下载
功能 说明
OpenSubtitles API 集成 根据 IMDb ID 或文件名哈希自动搜索匹配字幕
多语言支持 支持中文字幕、双语字幕等多种语言选择
智能缓存 搜索结果本地缓存,减少重复 API 调用
二、技术架构
2.1 技术栈概览
层级 技术选型
运行时 .NET 10
UI 框架 Blazor Hybrid + WPF 宿主
后端服务 ASP.NET Core(内嵌)
主数据库 SQLite + EF Core(电影元数据)
向量数据库 LanceDB(语义检索)
AI 编排 Semantic Kernel
对话模型 Ollama + Llama 3.2 3B
嵌入模型 nomic-embed-text-v2-moe(768维,多语言)
播放引擎 外部 PotPlayer / LibVLC
2.2 架构图
text
┌─────────────────────────────────────────────────────────────┐
│ 用户界面 (Blazor Hybrid) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ AI对话 │ │ 海报墙 │ │ 搜索筛选 │ │ 设置界面 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 后端服务 (ASP.NET Core) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Semantic │ │ 电影库管理 │ │ 播放控制 │ │
│ │ Kernel │ │ Service │ │ Service │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ 数据层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ SQLite │ │ LanceDB │ │ 文件系统 │ │ 元数据 │ │
│ │ (元数据) │ │ (向量) │ │ (媒体) │ │ 缓存 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Ollama │ │ 外部播放器│ │ TMDB API │
│ (AI服务) │ │ PotPlayer│ │ (元数据) │
└──────────┘ └──────────┘ └──────────┘
三、特色亮点
本地 AI 优先
所有 AI 能力在本地运行,数据永不离开用户设备。对话模型(Llama 3.2)和嵌入模型(nomic-embed-text)均
通过 Ollama 在本地部署,无需联网即可完成智能推荐与语义搜索。
隐私保护设计
无云端 API 依赖(除 TMDB 元数据获取和 OpenSubtitles 字幕下载外)
观影记录、私人评分、标签数据全部存储在本地
开源代码,透明可审计
性能优化策略
批量向量生成:采用 Ollama /api/embed 批量接口,将多部电影的简介一次性提交,大幅减少 HTTP 请求开销
增量扫描:仅处理新增或修改的电影文件
硬件解码:优先使用 D3D11VA/CUDA/QSV 等 GPU 硬解方案,4K 视频解码延迟可控制在 10ms 以内
RRF 融合搜索:结合向量语义检索与 BM25 关键词检索,兼顾召回率与精确度
四、适用场景
场景 价值
个人影音发烧友 管理数百 TB 本地电影库,快速检索并智能推荐
家庭媒体中心 部署在家庭 NAS 上,支持多人共享观影记录
影视内容创作者 利用智能标签和语义搜索快速检索参考素材
五、项目开源
开源协议:LGPL-2.1
代码仓库:https://github.com/lingyi624/MovieAgent
技术栈总结:Movie Agent 采用 Blazor Hybrid + Semantic Kernel + Ollama + LanceDB 的技术组合,将本地 AI
推理能力与专业影视管理功能深度整合,在用户隐私保护与智能体验之间取得了平衡。