用語意理解搜尋 Mac 本地檔案:開源工具 DigUp 技術架構與運作解析
DigUp 是一款專為 Apple Silicon Mac 設計的開源本機搜尋工具,結合 Google DeepMind 的多模態模型 EmbeddingGemma 2 與 llama.cpp。使用者只要以自然語言描述畫面或對話內容,就能快速定位圖片、PDF、影音與程式碼片段。
在日常使用電腦的過程中,尋找檔案往往受限於檔名或純文字關鍵字。若忘記簡報確切名稱,或是想找影片中某個特定畫面、錄音檔裡的一句發言,傳統的系統搜尋功能往往難以直接命中。
近期在 GitHub 上開源的 DigUp 專案,嘗試以端到端本機運算解決這個問題。它讓使用者直接用白話描述尋找目標,無論是「海灘上的狗」、「影片中斑馬出現的段落」還是「合約中關於寵物的條款」,系統都能透過多模態向量比對,將檔案與精確時間點或頁碼呈現在讀者眼前。
多模態向量空間:EmbeddingGemma 2 的底層支援
DigUp 之所以能跨越文字與圖像的藩籬,核心在於 Google DeepMind 推出的開源模型 EmbeddingGemma 2。該模型參數量為 740M,採用 Apache 2.0 授權,足以在筆記型電腦上順暢執行。
這套模型將文字、圖片、語音與視訊影格映射至同一個 768 維度的向量空間。這項特性的實際效果在於:
一張海灘狗兒的照片,在數學空間中的位置會非常接近文字「a dog on the beach」;一段談論睡眠的語音片段,也會落在「where they talk about sleep」的語意範圍附近。模型本身具備多語言理解能力,涵蓋超過 100 種語言,因此即使輸入英文查詢,也能檢索到以其他語言撰寫的筆記內容。
本機隱私與技術運作流程
許多使用者對 AI 搜尋工具最關心的問題是資料隱私。DigUp 採取純本機運算(Local-first)架構,除了首次啟動時下載模型檔案以及每日一次的自動更新檢查之外,不會對外傳輸任何檔案內容與索引資料。使用者也可以手動關閉每日更新檢查,完全杜絕聯網行為。
索引與比對架構
DigUp 在背景的運作流程可拆解為三個主要階段:
- 檔案讀取:透過 macOS 系統原生的 ImageIO、PDFKit、AVFoundation 讀取多媒體與文件,並使用 Apple Vision 框架辨識截圖內的文字。
- 向量產生:透過以 Metal 加速的 llama.cpp 執行 8-bit 量化版 EmbeddingGemma 2,計算出各片段的向量。這個輔助程序只在索引時運作,建立完成後即自動釋放記憶體。
- 本機儲存與混合檢索:所有向量資料與關鍵字索引皆寫入單一 SQLite 資料庫。
當使用者按下快捷鍵發起查詢時,系統僅載入約 250 MB 的文字編碼器,在數毫秒內將搜尋詞轉換為向量,並與資料庫進行相似度比對。此外,考量到發票號碼、錯誤代碼或特定人名等精確字串難以完全依賴向量表徵,DigUp 同時保留了精準字詞比對機制,提高專有名詞搜尋的準確率。
支援格式與檢索行為細節
DigUp 僅會處理使用者主動指定的資料夾,並根據檔案類型採取不同的讀取策略。
在圖片方面,支援 HEIC、JPEG、PNG、RAW 與 WebP 等常見格式。對於截圖,除了辨識圖像內容,也會同步提取文字資訊。
文件與 PDF 的處理則著重效率。對於多頁 PDF,系統會先建立前 30 頁的索引供立即查詢,待其餘檔案處理完畢後,再繼續索引後續頁面,單一檔案支援上限為 5,000 頁。若遇到純文字、Markdown、Word 文件中以數字為主的表格資料,系統則自動切換為精準文字比對。
音訊與視訊的處理方式相當細緻。音訊檔案會被切割為 30 秒的重疊音訊片段進行分析;視訊則依照鏡頭切換每隔數秒擷取影格,並搭配音軌同步建立向量。當使用者在搜尋結果中點選影片時,macOS 會透過 QuickTime Player 自動跳轉至符合描述的具體秒數。
選擇性開啟的程式碼檢索
針對開發者需求,DigUp 提供了獨立的程式碼搜尋功能,此功能預設關閉,需手動選取特定專案目錄。
使用者在搜尋時加入 code: 前綴,即可透過自然語言描述函式行為或直接輸入變數名稱進行查詢。搜尋結果能直接連動 Zed、VS Code、Cursor、Xcode、Sublime Text 或 JetBrains 系列編輯器,並精準跳至定義該行。系統在讀取程式碼時會自動略過 .gitignore 排除項目、依賴套件、編譯產物,以及私鑰或憑證等敏感檔案。
安裝與日常操作方式
DigUp 目前支援搭載 Apple Silicon 晶片並運行 macOS 14 以上版本的 Mac 電腦。
使用者可從 GitHub Releases 頁面 下載 DMG 安裝檔,或透過 Homebrew 指令安裝:
brew install --cask arahim3/tap/digup
應用程式本身容量約 20 MB,首次啟動時需額外下載約 865 MB 的模型檔,包含 310 MB 的文字模組與 555 MB 的影像與語音模組。
安裝完成後,工具常駐於選單列。預設快捷鍵為 ⇧⌘Space(Shift-Command-Space),可隨時呼叫搜尋面板。在搜尋面板中,按 Enter 可直接開啟檔案並跳轉至對應頁面或時間點,按空白鍵可使用 Quick Look 預覽,按 ⌘Enter 則在 Finder 中顯示原檔。如果需要更寬廣的檢視畫面與過濾選項,可使用 ⌘O 開啟大視窗模式。
常見問題
DigUp 與 macOS 內建的 Spotlight 有何不同?
Spotlight 主要依賴檔案名稱、系統中繼資料與可辨識的純文字進行字串搜尋。DigUp 則利用多模態向量理解圖片內容、視訊影格畫面以及音訊發言內容,並能直接指示出影片的秒數或 PDF 的特定頁次。兩者在系統中可平行使用,互不衝突。
建立索引是否會佔用過多電腦資源?
只有首次索引需要計算大量現有檔案,幾百個檔案約需數分鐘,若是龐大的下載資料夾則可能耗時一小時。首次建立完成後,新檔案在寫入磁碟後一到兩秒內即可完成增量索引。此外,在未連接電源或處於低耗電模式時,背景索引會自動暫停,搜尋專用的記憶體空間也只在查詢觸發時載入。
支援哪些語言的搜尋?
語意理解部分依賴 EmbeddingGemma 2,支援超過 100 種語言,且具備跨語言檢索能力。但是在截圖文字的精確字串比對方面,受限於 Apple 系統文字辨識支援的語系範圍(約 25 種)。另外,中文、日文、泰文等非空格分詞語言,在精確關鍵字加權比對上的處理機制與歐美語系有所不同。
如何完整移除 DigUp?
結束應用程式後,刪除 /Applications/DigUp.app,並清理位於 ~/Library/Application Support/DigUp 的模型與資料庫檔案,以及位於 ~/Library/Preferences/com.abdurrahim.DigUp.plist 的設定檔。若使用 Homebrew 安裝,執行 brew uninstall --cask --zap digup 即可自動清除所有相關檔案。
結語
DigUp 專案 透過開源小模型與現代硬體加速技術,將原本依賴雲端的多模態語意搜尋完整搬移至個人電腦本機。對於經常需要整理大量多媒體素材、錄音筆記與技術文件的 Mac 使用者而言,這項工具提供了一種無需妥協隱私的本機資料檢索方案。