
如果你在 Mac 上找过东西,多半经历过这种拉扯:文件明明就在硬盘里,Spotlight 却死活搜不出来——因为它只会匹配文件名、文件里的文字和元数据。你记得的是「那张狗在沙滩上的照片」「播客里聊睡眠的那一段」,可这些内容,文件名里一个词都没有。
今天 GitHub Trending 上冒出来一个 1000 多星的新项目,专门解决这件事:DigUp。它的口号很直白——「Describe it. Dig it up.」(描述它,就把它挖出来)。你用自己的话描述想找什么,它把匹配的那张图、那一页 PDF、那一段录音、那一帧视频直接端到你面前,而且全部在你自己的 Mac 上完成,一个字节都不上传。
一个能「看懂内容」的本地搜索
DigUp 的技术底座是 Google DeepMind 在 2026 年 10 月发布的 EmbeddingGemma 2。这是一个多模态嵌入模型,把文字、图像、音频和视频塞进同一个「语义空间」里。它的效果可以这样理解:一张「狗在沙滩上」的照片,和「a dog on the beach」这句话,向量距离会非常近;一段有人聊睡眠的录音,会离「哪里在聊睡眠」很近。模型支持 100 多种语言,开源(Apache 2.0),参数量 7.4 亿——小到能舒服地跑在笔记本上。
DigUp 做的事,就是把这种能力套到你的本地文件上。你选定要搜索的文件夹,它把里面的图片、PDF、文档、录音、视频全部读一遍并建好索引;之后你随时描述一句,它就能找到对应的文件,并直接跳到那一页或那一刻。
它能「挖」出什么?
项目 README 里列了几组很实操的搜索例子,基本勾勒出了它的能力边界:
- 「视频里的斑马」——打开片段,直接定位到斑马出现的那一秒;
- 「哪里在聊睡眠」——跳到播客对应的那一分钟;
- 「租约里关于宠物的条款」——显示 PDF 的具体页,并把命中文字标出来;
- 「沙滩上的狗」找到照片,「payment declined error」找到那张报错截图;
- 跨语言检索:用英文搜,能找到用孟加拉语、阿拉伯语或模型支持的 100 多种语言写的笔记,反过来也一样;
- 「code: retry a failed call with backoff」——如果开启代码搜索,能直接找到项目里那个函数。
值得注意的是,它并不只做「模糊的语义匹配」。精确的词同样会被认真对待:发票号、错误码、人名会按字面匹配——无论是出现在文件名、文档正文,还是截图里的文字。这意味着一条搜索能同时兼顾「意思」和「字面」,这在纯向量检索里其实是个难点。
它是怎么做到的
README 里给了一张数据流图,把整条管线讲得很清楚。我把它整理成一张表:
| 阶段 | 做的事 |
|---|---|
| 读取 | 用 ImageIO、PDFKit、AVFoundation 读取文件,截图里的文字交给 Apple Vision 做 OCR |
| 嵌入 | EmbeddingGemma 2 跑在 llama.cpp(Metal)上,放在一个用完即退的辅助进程里 |
| 存储 | 落进一个 SQLite 文件:每张图、每页 PDF、每段文字、每帧视频、每 30 秒声音各对应一个向量,外加倒排关键词索引(代码搜索再单独一个) |
| 查询 | 用同一个模型的文本部分(约 250 MB,仅搜索时加载)编码你的话,再做最近向量 + 精确词匹配 |
关键点在于:所有向量都在同一个 768 维空间里。正因如此,一次查询才能把「一帧视频」和「一页 PDF」放在一起排序——它们本来就是同一种东西的不同表现。搜索时,你的话在毫秒级被编码,然后和索引里的全部向量比对;精确词命中会获得加权提升,毕竟没有任何嵌入能精确地记住一个发票号。
长音频和长视频怎么「挖」
处理时间维度是这类工具最容易翻车的地方,DigUp 的做法比较务实:
- 音频:模型一次只能「听」30 秒,于是 DigUp 用首尾重叠的 30 秒窗口切分,命中能精确指到某一刻;
- 视频:每隔几秒取一帧、每个镜头取一帧,音轨按音频同样处理;
- 长 PDF / 长文档:先出前 30 页,其余在后台补齐(单个文件上限 5000 页)。
代价是首次全量索引会有点重:几百个文件几分钟,一个塞满东西的「下载」文件夹可能要一小时。但这是一次性的,之后新文件落地一两秒就能被搜到,而且默认在电池供电时也照跑(可以设置成只在充电时跑),低电量模式下会自动暂停。
隐私:把「不上传」写进架构里
这个项目在隐私上的表态很硬:你索引的内容一个字节都不离开 Mac。它只在两种情况下联网——首次下载模型(一次),以及每天检查一次更新。更新检查不发送任何关于你文件的信息,而且可以关掉。没有账号,没有遥测。
它在读取范围上也做了明确约束:只读你选定的文件夹;在代码目录里只读源码和笔记本(不含输出),会跳过 git 忽略的内容、第三方与生成代码、数据文件,以及任何看起来像密钥或密码的东西;~/.ssh 这类隐藏目录、应用包、缓存一律不碰;不会下载只存在于 iCloud 云端、本地没有实体的文件。它只读你的文件,永不修改、移动或上传。
上手与体验细节
安装方式很 Mac:从 Releases 下 DMG 拖进「应用程序」,或者用 Homebrew:
brew install --cask arahim3/tap/digup
它常驻菜单栏,可以用一个全局快捷键在任何 App 里唤起搜索面板(默认 ⇧⌘Space,可在设置里改)。结果列表里,↩ 打开结果(视频/录音跳到那一刻,PDF 在「预览」里带词搜索,代码在编辑器里跳到那一行),Space 是 Quick Look,⌘O 则是在更大的窗口里看图片网格加筛选。
它需要 Apple Silicon 的 Mac 和 macOS 14 或更高(测试环境是 macOS 26)。想自己编译的话,源码在 GitHub 上:
git clone https://github.com/ARahim3/DigUp && cd DigUp
scripts/build-llama.sh # 按固定 tag 编译 llama.cpp,带一处小补丁
swift build -c release && swift test
./build.sh # 生成 build.noindex/DigUp.app
它和 Spotlight 是什么关系
README 里有一句回答很干脆:Spotlight 靠文件名、文字和元数据找文件;DigUp 则额外靠「内容展示或讲述了什么」来找,并把你带到那一页、那一刻。两者并不冲突,可以并排一起用——你既可以用 Spotlight 精确找文件名,也可以用 DigUp 描述着找「那件事」。
说到底,DigUp 有意思的地方不在于它用了多大的模型,而在于它把一个「云端大厂才能做的事」——跨模态、跨语言的语义检索——压缩进了一台笔记本的本地进程里,还顺手解决了精确词匹配、时间维度定位和隐私边界这些落地时最扎手的细节。项目在 GitHub 上开源,MIT 许可证,值得在你自己的文件堆里试一把。
项目地址:github.com/ARahim3/DigUp
模型:google/embeddinggemma-2 · 底层框架:llama.cpp
















cqlbgzs@163.com 1年前0
d好879445037@qq.com 2年前0
购买了 无法下载Alexcc 3年前0
强大Alexcc 3年前0
看不了教程Alexcc 3年前0
雷刺下载Alexcc 3年前0
下载Alexcc 3年前0
下载dsa456159 3年前0
下载