【免费下载链接】DigUp
Search your Mac by what's in your files: photos, PDFs, recordings, videos and code. On-device, built on Google DeepMind's EmbeddingGemma 2.
如果你想在 Mac 上用一句英文找到一份孟加拉语写的食谱、或一个阿拉伯语的 PDF,DigUp 多语言搜索正是为此而生的。DigUp 是一款基于 Google DeepMind 的 EmbeddingGemma 2 嵌入模型的本地文件搜索工具,它把照片、PDF、录音、视频和文字统统"读"进同一个语义空间,因此用 A 语言描述、找到 B 语言的文件成为可能——而且所有计算都在你的 Mac 本地完成。
一、跨语言搜索的原理:一切内容都住进同一个"语义空间"
传统搜索(比如 Spotlight)靠文件名和字面文本匹配,换一种语言就无能为力。DigUp 的做法不同:
- 索引阶段:DigUp 用 EmbeddingGemma 2(8-bit 版,通过 llama.cpp 跑在 Mac 的 GPU/Metal 上)为每张图片、PDF 的每一页、文档的每个段落、视频的每个镜头、每 30 秒音频各生成一个向量。
- 搜索阶段:你输入的查询词被同一个模型的文本部分(约 250 MB,只在搜索时加载)变成向量,再与索引中的所有向量比对,找出"语义最近邻"。
关键在于:所有向量都落在同一个 768 维空间里。英文的 "a dog on the beach" 和一张海滩上狗的照片、阿拉伯语的 "طائر البطريق" 和一张企鹅照片,距离都很近。语言是"表面层",语义才是"坐标"——这就是为什么英文查询能命中孟加拉语文件。
实现细节可参考 Sources/DigUpKit/Vectors.swift(向量存储与 768 维定义)和 Sources/DigUpKit/Searcher.swift(语义向量 + 精确词双重打分)。
二、三种典型跨语言搜索场景(附真实评测用例)
DigUp 仓库自带一套多语言评测集 evals/multilingual.json,以下是其中真实生效的查询示例:
| 方向 | 你输入的查询 | 找到的文件 |
|---|---|---|
| 英文 → 孟加拉语 | hilsa fish in mustard sauce(芥末酱汁烧鲥鱼) | 孟加拉语食谱ইলিশ মাছের রেসিপি.md |
| 英文 → 孟加拉语 | apartment rent agreement(公寓租约) | 孟加拉语 PDF 合同বাড়ি ভাড়ার চুক্তি.pdf第 1 页 |
| 英文 → 阿拉伯语 | trip to Petra(去佩特拉的旅行) | 阿拉伯语 PDF 报告تقرير.pdf第 2 页 |
| 阿拉伯语 → 英文图片 | طائر البطريق(企鹅) | 英文素材库里的企鹅照片和企鹅视频片段 |
| 孟加拉语 → 英文文档 | টোকিও ভ্রমণ(东京旅行) | 英文行程单Tokyo itinerary.md |
| 英文 → 阿拉伯语语音 | rainy weather in Riyadh(利雅得下雨) | 阿拉伯语天气录音speech_weather_ar.wav |
注意两个亮点:
- 跨语言还能"定位到页/秒":PDF 精确到第几页,音频视频精确到那个时间段,而不是只给一个文件。
- 连"画面"都通语言:用阿拉伯语搜"支付被拒",能直接命中一张阿拉伯语报错截图——因为截图里的文字也参与了索引。
这些多语言测试文件的生成脚本是 scripts/testbed/make_lang.swift,里面包含了孟加拉语和阿拉伯语的笔记、PDF、截图与录音样本。
三、语义之外的"精确词"安全网:文本规范化层
向量搜索擅长理解"意思",但不擅长精确匹配发票号、错误码这类字面内容。DigUp 的关键词索引为此做了专门的多语言处理,核心在 Sources/DigUpKit/SearchText.swift:
- Unicode 规范化(NFKC):阿拉伯语的不同 alef 变体、孟加拉语的两种"ো"写法统一成同一种字符,避免"写法不同就搜不到"。
- 清理装饰性字符:阿拉伯语的 tatweel(拖长符)、短元音符号在普通人打字时根本不会出现,规范化后一并剔除;孟加拉语的零宽连接符(ZWNJ)和方向标记也被清除。
- 前缀匹配:孟加拉语、阿拉伯语这类词尾会发生变化的语言,搜
কুমির也能命中কুমিরও,搜مدرس能命中مدرسة。 - 双语"文件类型提示词":查询里说 "…in a video"、"ভিডিওতে"(孟加拉语:在视频里)、"فيديو"(阿拉伯语:视频),都会给对应类型的结果加分,见 Sources/DigUpKit/Searcher.swift。
最终排序是语义相似度 + 关键词覆盖度加权融合(命中一半以上查询词的文件也会被捞回来),所以搜索既"懂意思"又"认字面"。
四、快速上手:三步体验多语言搜索
- 安装:下载 DMG 拖入 Applications,或执行
brew install --cask arahim3/tap/digup(需要 Apple Silicon Mac、macOS 14+)。 - 选文件夹并建索引:首次启动会下载一次约 865 MB 的模型,同时选择要搜索的文件夹(支持只选部分子文件夹,并显示预计耗时)。
- 随处搜索:在任意应用按
⇧⌘Space呼出搜索面板,用你自己的话说出想找的内容即可。方向键切换结果,↩打开(视频跳到对应时刻、PDF 带高亮、代码定位到行)。
五、注意事项:两个"精确词"层面的限制
官方 README(README.md 的 FAQ 一节)如实列出了边界,值得知道:
- 模型覆盖 100+ 种语言,语义搜索在所有语言间都可用,但 Google 提示模型并非对每种语言都同样强。
- 截图内文字识别依赖 Apple 的文本识别能力,支持约 25 种语言——超出范围的语言截图只能按画面内容搜,按字面搜会受限。
- 中文、日文、泰文等"词之间没有空格"的语言,精确词匹配不做分词,字面搜索效果会打折扣;但语义搜索不受影响。
六、延伸阅读:相关模块路径
- 多语言评测用例:evals/multilingual.json
- 多语言测试文件生成器:scripts/testbed/make_lang.swift
- 文本规范化与前缀匹配:Sources/DigUpKit/SearchText.swift
- 语义 + 关键词融合排序:Sources/DigUpKit/Searcher.swift
- 向量维度与存储:Sources/DigUpKit/Vectors.swift
- 隐私与工作原理总览:README.md
总结一句话:DigUp 的多语言搜索不是"翻译后再搜",而是把所有语言的内容和查询都投影进同一个 768 维语义空间,让"意思"直接跨语言相遇——再加上针对阿拉伯语、孟加拉语等文字系统精细打磨的精确词匹配,跨语言找文件变得像翻自己口袋一样自然。
【免费下载链接】DigUp
Search your Mac by what's in your files: photos, PDFs, recordings, videos and code. On-device, built on Google DeepMind's EmbeddingGemma 2.
相关推荐
零失败小红书自动化实战指南:从入门到精通的新手必备教程
零失败小红书自动化实战指南:从入门到精通的新手必备教程 欢迎来到小红书自动化脚本的世界!本指南将带你从零开始掌握这个强大工具,无需复杂编程经验,只需跟随步骤操作
WeblogicScan核心功能深度解析:15个历史漏洞检测原理揭秘
WeblogicScan核心功能深度解析:15个历史漏洞检测原理揭秘 WeblogicScan是一款功能强大的Weblogic一键漏洞检测工具,能够帮助用户快速
网络安全漏洞扫描渗透测试应用安全华硕笔记本性能优化神器:G-Helper让你告别臃肿的Armoury Crate
华硕笔记本性能优化神器:G Helper让你告别臃肿的Armoury Crate 你的华硕ROG笔记本是不是每次开机都要等半天?后台是不是总有十几个Armour
桌面应用系统编程
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考