爱意满满的作品展示区。
Joker2Man

给照片和视频素材做了个完全离线的 AI 搜索:一句话跳到视频里的那一秒, v0.4.1 加了全局快捷键

  •  
  •   Joker2Man · Oct 13 · 948 views

    Vixel 演示:一句话搜到视频里的那一刻

    半年前开始做的本地媒体搜索工具 Vixel 更新到 v0.4.1 了,继续完全离线、免费开源( MIT )。

    它做的事:把你现有的文件夹(照片、视频、音频、SVG/PSD/PDF/AI 设计文件)原地只读索引, 然后用一句话去找——「海边的日落」「火箭发射」「等一列车」。视频按 32 秒切段,画面和声音 一起编码,搜到直接跳到命中的那一段;截图、票据、视频画面里出现过的字也能搜( PaddleOCR v5 + 结巴分词,中文很稳)。

    0.4.1 的主要变化:

    • 全局快速搜索:任何应用里按 ⇧⌘Space ( Windows:Alt+Shift+Space )呼出一个 Spotlight 式面板, ↩ 打开直接跳到命中片段,Space 快速查看,⌘C 把文件本身拷进剪贴板(不是路径文字), 结果还能直接拖进剪辑软件的时间轴。
    • 笔记本更省电:接电池 / 低电量模式 / 机器过热时,大批量的回填索引自动等待(新文件照常即时索引), 状态栏会写清楚在等什么。
    • 爬虫更懂分寸:永远不读密钥 / 凭证类文件;跳过 node_modules 、应用包、照片图库包; 识别并跳过机器生成的数据集目录( frame_000042 那种,相机命名 IMG_1234 不受影响); iCloud / OneDrive 的云端占位文件不会被触发下载。
    • 搜索质量:整词命中(文件名 / 图中文字 / 标签)优先;同一视频几段都像时选更早的那段; "火车的视频"这类带媒体类型词的查询不再被稀释。公开评测集上 demo 库 top-1 1.00 、 素材库 0.94 (评测脚本在仓库 evals/,npm run eval 可复现)。
    • 修了 Windows 退出残留进程、Ctrl+C 拷贝文件在资源管理器里粘不出来、快速搜索抢输入法按键三个麻烦事。

    隐私这块还是老规矩:模型( EmbeddingGemma 2 ,经 LiteRT-LM 跑 GPU )全部打包在安装包里, 装好断网就能用;没有账号、没有遥测,渲染进程的网络请求在代码里被整体拦截。 不想信口说,可以断网用,或者看源码里的 enforceOfflinePolicy。

    安装包约 600 MB (模型内置的代价),macOS ( Apple Silicon )和 Windows ( x64 )。 暂时没买签名证书:macOS 第一次打开要在 系统设置 → 隐私与安全性 里点「仍要打开」, Windows 在 SmartScreen 里点「更多信息 → 仍要运行」。介意的话可以从源码自己编译。

    演示 GIF 是公有领域素材库录的( Immich test-assets + 公有领域影像),没有私人照片。 欢迎试用、欢迎挑刺,搜不准的例子对我最有价值。

    7 replies  •  2026-10-30 12:15:06 +08:00
    yuanshuai1995
    1
    如果在服务器上可以部署就好了,手机/电脑网页端访问感觉更爽
    myderr
    myderr
    Oct 13
    2
    等一个服务器版本的,装到群晖上
    yuanshuai1995
    3
    @myderr #2 我跟你想法一样的
    yukminnie
    yukminnie
    Oct 15
    4
    @yuanshuai1995 我看了一下开源项目,已经支持部署了。
    yukminnie
    yukminnie
    Oct 15
    5
    感谢分享,已 star 。在 Mac 笔记本上尝试了一下,视频类型都报错了,错误信息为 spawn ENOTDIR ,不知道为什么。
    Joker2Man
    Joker2Man
    OP
    Oct 16
    6
    @yukminnie 感谢反馈,已修复:安装版调用 ffmpeg 的路径有问题,所有视频都会报 spawn ENOTDIR 。0.5.1 已发布,更新后之前失败的视频会自动重新索引: https://github.com/RGB-loop/Vixel/releases/latest

    @yuanshuai1995 @myderr 服务器 / NAS 版也发了,Docker 一条命令,手机和电脑浏览器都能用:
    docker run -d -p 8080:8080 -e VIXEL_PASSWORD='你的口令' -v /path/to/photos:/photos:ro -v vixel-data:/data ghcr.io/rgb-loop/vixel:latest
    群晖步骤和支持的机型: https://github.com/RGB-loop/Vixel/blob/main/docs/server/README.md ( J4125 这类没有 AVX 的机型,如 DS920+ / DS220+,用不了语义搜索,其他功能正常)
    wangyimu
    wangyimu
    Oct 30
    7
    Error: LiteRT:failed to create cpu engine 描述无法搜索到 跟 win 上 Digup 一样似的 模型在但是加载不了

    推荐 EmbeddingGemma 相关参考 https://github.com/lattifai/awesome-EmbeddingGemma/
    未收录的还有来自 B 站 UP 的 https://github.com/NINE-99-nine/prism-knowledge-base

    lap 修改下能用其它模型 支持动态图 图片描述可以搜索到 标签搜索不到 https://github.com/julyx10/lap

    ReFra 交互流畅 动态图有时间轴和关键帧 不过文件只有重命名无描述与标签 换模型应该比 lap 麻烦 https://github.com/IacobIonut01/ReFra
    支持多维度层级标签就好了 ( MAC 上 文件夹夹)

    以下是胡言乱语
    例如分类学标签
    动物
    └── 节肢动物
    └── 昆虫
    └── 鳞翅目
    └── 凤蝶科
    搜索「节肢动物」时,系统自动返回标记为「昆虫」「鳞翅目」或「凤蝶科」的照片。

    注释标签
    属性 值
    出现记录的证据 可选项 卵 排泄物 构造物 潜道 生物 虫瘿 蜕皮 足迹
    性别
    活体或死亡
    生命阶段 可选项 卵 幼体 成体 蛹
    不同生物有不同的注释标签

    观察字段标签
    访花 XX 植物 Interaction->Visited flower of
    吃 XX 植物 Eating / Host
    被 XX 捕食 Interaction->Preyed upon by
    附近植物 Name of Associated Plant
    附近昆虫
    观察个体数量
    温湿度 拍摄设备 海拔等等
    这只是一种分类方式 套用别的分类标签也适用吧 其实还是有些麻烦
    更好的是带上眼镜 图片自动跟随到景物上交互 要 0 学习成本的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1025 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 22:49 · PVG 06:49 · LAX 14:49 · JFK 17:49
    ♥ Do have faith in what you're doing.