핵심 요약
- DigUp은 Google DeepMind의 EmbeddingGemma 2 모델로 사진, PDF, 문서, 녹음, 영상, 코드를 한 색인에 넣는 데스크톱 앱입니다. 파일 이름 대신 내용을 설명하는 문장으로 파일을 찾습니다.
- 검색 결과를 열면 PDF는 해당 페이지, 녹음과 영상은 해당 시점, 코드는 편집기의 해당 줄로 이동합니다. 송장 번호나 오류 코드 같은 정확한 문자열은 별도의 키워드 색인으로 찾습니다.
- 모델(865MB)을 처음 한 번 내려받는 것과 하루 한 번의 업데이트 확인 외에는 네트워크를 쓰지 않으며, 계정과 원격 측정(Telemetry)이 없습니다.
- Apple Silicon Mac(macOS 14 이상)용이 정식 버전이고 Windows와 Linux용은 2026년 10월 14일에 공개된 베타입니다. 첫 릴리스가 10월 9일인 초기 프로젝트라 버그 보고와 기능 요청 이슈가 많이 열려 있습니다.
DigUp 소개
팟캐스트에서 수면 이야기가 나온 대목이나 영상에서 얼룩말이 나온 장면을 다시 찾으려 할 때, 기억나는 것은 파일 이름이 아니라 내용인 경우가 많습니다. DigUp 개발자는 운영체제의 기본 검색인 Spotlight와 Windows Search가 파일을 이름, 텍스트, 메타데이터로 찾는다고 설명합니다. 녹음 속 대화나 영상 속 장면처럼 파일이 보여 주거나 들려주는 내용으로 찾고, 그 페이지나 시점까지 바로 여는 것이 DigUp이 기본 검색과 다른 점입니다. 이번에 소개하는 DigUp은 내 컴퓨터의 파일을 내용 기준으로 색인하는 로컬 검색 앱입니다. 찾고 싶은 것을 문장으로 설명하면 파일 종류와 상관없이 맞는 결과를 보여 줍니다.
DigUp은 Google DeepMind가 2026년 10월 공개한 멀티모달 임베딩 모델 EmbeddingGemma 2를 사용합니다. 임베딩(Embedding) 모델은 입력을 고정 길이의 벡터로 바꾸고, 뜻이 가까운 입력끼리 벡터도 가깝게 놓는 모델입니다. EmbeddingGemma 2는 텍스트, 이미지, 오디오, 영상을 하나의 768차원 공간에 담기 때문에, 해변의 강아지 사진은 "a dog on the beach" 라는 문장 근처에 놓입니다. Hugging Face 모델 카드에 따르면 전체 크기는 740M 파라미터로 노트북에서도 실행할 수 있고, 100개 이상의 언어를 다룹니다. DigUp은 이 모델로 사용자가 고른 폴더의 파일과 검색어를 모두 기기 안에서 벡터로 바꿉니다. 그래서 영어로 검색해도 벵골어나 아랍어로 쓴 메모가 찾아지고, 그 반대도 됩니다.
아래 데모는 Mac, Windows, Linux에서 DigUp의 검색 패널을 연 화면입니다. 영상 속 얼룩말, 팟캐스트의 한 대목, 임대 계약서의 반려동물 조항, 영어와 벵골어, 아랍어로 찾은 해변의 강아지 사진, Zed 편집기로 열리는 코드 검색까지 차례로 보여 줍니다:

DigUp은 개인 개발자 Abdur Rahim이 만들었고, 유료 버전이나 클라우드 서비스 없이 무료로 공개되어 있습니다. 검색 엔진은 모든 운영체제에서 같은 Swift 코드를 씁니다. Mac에서는 macOS 자체 프레임워크(ImageIO, PDFKit, AVFoundation, 그리고 스크린샷 속 글자를 읽는 Vision)로 파일을 읽고 앱은 SwiftUI로 만들었습니다. Windows와 Linux에서는 PDFium, FFmpeg, stb, miniz로 파일을 읽고, 앱은 Tauri로 만들었습니다. 모델은 llama.cpp로 실행하고, 색인은 SQLite 파일 하나에 저장합니다.
DigUp vs. Spotlight, Windows Search 및 로컬 시맨틱 검색 도구
PyTorchKR에서 소개한 로컬 검색 도구와 운영체제 기본 검색을 함께 놓으면 다음과 같습니다. 각 행의 내용은 해당 프로젝트의 README와 DigUp README의 FAQ를 기준으로 정리했습니다:
| 도구 | 형태 | 찾는 기준 | 주 대상 | 플랫폼 |
|---|---|---|---|---|
| Spotlight, Windows Search | 운영체제 기본 검색 | 파일 이름, 텍스트, 메타데이터 | 운영체제가 색인한 파일 | macOS, Windows |
| QMD | CLI 검색 엔진 | BM25 전문 검색 + 벡터 검색 + LLM 재정렬 | 마크다운 노트, 회의록, 문서 | Node.js 또는 Bun |
| Jina Grep | CLI | Jina Embeddings v5 기반 의미 검색 | 텍스트 파일과 코드 | Apple Silicon Mac |
| DigUp | 데스크톱 앱 (단축키로 여는 검색 패널) | EmbeddingGemma 2 벡터 검색 + 정확한 단어 일치 | 사진, PDF, 문서, 녹음, 영상, 코드 | Apple Silicon Mac, Windows 10/11, Linux (x86-64) |
위 표를 통해 DigUp과 다른 도구의 차이를 2가지로 알아볼 수 있습니다. 첫째, QMD (
QMD(Query Markup Documents): 로컬 환경을 위한 의미 기반의 작고 가벼운 지식 검색 엔진)와 Jina Grep (
Jina Grep: Jina AI가 공개한 Apple Silicon 기반의 고속 로컬 시맨틱 검색 CLI 도구)은 터미널에서 텍스트를 찾는 도구로, QMD는 마크다운 노트와 문서를, Jina Grep은 텍스트 파일과 코드를 다룹니다. 반면 DigUp은 사진과 녹음, 영상까지 같은 검색창에서 찾는 그래픽 앱입니다. 둘째, DigUp은 결과를 파일 단위로 돌려주는 데서 끝나지 않고 PDF의 페이지와 녹음, 영상의 시점까지 가리킵니다. Spotlight와 DigUp은 함께 써도 된다는 것이 개발자의 설명입니다.
DigUp을 사용하면 좋을 사용자
DigUp은 사진, 스크린샷, 스캔한 PDF, 녹음 파일이 많고 그 내용을 클라우드에 올리고 싶지 않은 Apple Silicon Mac 사용자에게 가장 잘 맞습니다. Mac 버전이 정식 릴리스이고, 스크린샷 속 글자 인식과 오래된 Word .doc, RAW 사진, SVG 읽기도 아직 Mac에서만 동작합니다. 여러 저장소의 코드를 자연어로 찾고 싶은 개발자에게도 코드 검색 기능이 쓸모가 있습니다.
반대로 Intel Mac 사용자에게는 DigUp이 아직 선택지가 아닙니다. 앱이 Apple Silicon만 지원하고, Intel Mac 이식을 시도한 기여자가 Intel 내장 GPU의 Metal 경로에서 벡터가 잘못 계산되는 문제를 이슈 #28로 보고했습니다. 파일 대부분이 iCloud나 OneDrive의 필요 시 다운로드 폴더에 있는 경우도 맞지 않습니다. DigUp은 클라우드에만 있는 파일을 내려받지 않습니다. 그래서 이런 폴더는 거의 색인되지 않습니다(이슈 #61). Windows와 Linux 버전은 베타이고 Windows 설치 파일은 아직 코드 서명이 없으므로, 업무용 PC에 바로 배포하기에는 이릅니다.
한국어 사용자라면 확인할 점이 하나 더 있습니다. 개발자는 평가를 영어, 벵골어, 아랍어로만 했다고 밝히고 있고, Google도 모델 카드에서 언어마다 성능이 같지 않다고 적어 두었습니다. 한국어 검색 품질은 개발자가 측정하지 않았으므로 직접 써 보고 판단해야 합니다. 다만 Mac 버전 0.6.1에서 한국어 관련 문제 2가지가 고쳐졌습니다(0.6.1 릴리스 노트). 하나는 한국어 입력기로 검색어를 칠 때 자모가 흩어지던 문제이고, 다른 하나는 내 드라이브처럼 한글 이름이 들어간 폴더에서 색인이 멈추던 문제입니다.
DigUp의 동작 원리
DigUp README의 동작 흐름 그림은 다음과 같습니다:
your folders ─► readers that turn files into pictures, text and sound
─► EmbeddingGemma 2 on llama.cpp, in a helper process that quits when it's done
─► one SQLite file: a vector for every picture, page, passage, video frame and 30 s of sound,
plus a keyword index (code search keeps a second one, for code)
your words ─► the same model's text part (~250 MB, only while you search) ─► nearest vectors + exact words
DigUp은 먼저 각 파일 형식의 리더(Reader)로 파일을 그림, 텍스트, 소리로 바꿉니다. 그다음 별도의 도우미 프로세스에서 EmbeddingGemma 2로 벡터를 만들고, 작업이 끝나면 이 프로세스를 종료합니다. 사진, PDF 페이지, 텍스트 구간, 영상 프레임, 30초 분량의 소리가 각각 벡터 하나가 되어 SQLite 파일에 들어갑니다. 같은 파일에 키워드 색인도 함께 저장하고, 코드 검색은 코드용 색인을 따로 둡니다.
검색할 때는 같은 모델의 텍스트 부분(약 250MB)만 메모리에 올려 검색어를 벡터로 바꾸고, 색인 전체와 비교합니다. 모든 벡터가 같은 768차원 공간에 있으므로 검색어 하나로 영상 프레임과 PDF 페이지를 같은 기준으로 순위를 매길 수 있습니다. 개발자는 검색어를 벡터로 바꾸는 데 몇 밀리초가 걸린다고 설명합니다. 여기에 정확히 일치하는 단어가 있는 결과는 점수를 더 받습니다. 개발자는 어떤 임베딩도 송장 번호 같은 문자열을 정확히 담지 못하기 때문에 이 보정을 넣었다고 설명합니다.
모델 파일은 ggml-org가 변환한 8비트 GGUF를 씁니다. GGUF는 llama.cpp가 읽는 모델 파일 형식입니다. 내려받는 865MB는 텍스트 부분(310MB)과 이미지, 오디오 인코더(555MB)로 나뉩니다. Mac에서는 Metal로 GPU에서 실행합니다. Windows와 Linux에서는 설치 단계에서 Vulkan GPU 실행이 프로세서보다 빠르고 결과도 같은지 확인한 뒤, 그런 경우에만 GPU를 씁니다.
DigUp의 색인은 어느 모델 버전이 벡터를 만들었는지 기록해 둡니다. 그래서 벡터가 바뀌지 않는 업데이트는 기존 색인을 그대로 씁니다. 또 llama.cpp를 업데이트할 때마다 저장해 둔 기준 벡터와 결과를 비교하는 테스트를 통과해야 배포합니다.
DigUp이 읽는 파일과 읽지 않는 파일
DigUp은 사용자가 고른 폴더만 읽습니다. 파일 종류별로 읽는 방식은 다음과 같습니다:
- 사진과 스크린샷: JPEG, PNG, HEIC, WebP 등을 찍힌 내용으로 찾습니다. Mac에서는 스크린샷 속 글자도 읽습니다.
- PDF: 스캔본을 포함해 페이지 단위로 읽습니다. 긴 PDF는 앞 30페이지를 먼저 읽고 나머지는 다른 파일을 다 읽은 뒤에 읽으며, 파일 하나에 5,000페이지까지 처리합니다.
- 문서: txt, md, rtf, docx, odt, html을 읽고, Mac에서는 doc도 읽습니다. 데이터 내보내기처럼 숫자가 대부분인 텍스트는 정확한 문자열로만 찾습니다.
- 오디오: 길이에 제한이 없습니다. 개발자에 따르면 모델이 한 번에 30초씩 듣기 때문에, DigUp은 30초 창을 겹쳐 가며 나누고 일치한 결과가 그 시점을 가리키게 합니다.
- 영상: 몇 초마다 프레임 하나, 장면마다 하나를 뽑고, 사운드트랙은 오디오와 같은 방식으로 읽습니다.
읽지 않는 범위도 정해져 있습니다. 코드 검색용으로 고른 폴더가 아니면 코드를 읽지 않고, .git이나 package.json이 있는 코드 프로젝트 안에서는 스크린샷만 읽습니다. 키와 인증서, 비밀번호 파일, .ssh 같은 숨김 폴더, 앱, 캐시는 읽지 않고 데이터셋으로 보이는 폴더도 건너뜁니다. DigUp은 파일을 읽기만 하고 바꾸거나 옮기거나 업로드하지 않습니다.
첫 색인에는 시간이 걸립니다. 개발자에 따르면 Mac에서는 파일 수백 개에 몇 분, 큰 다운로드 폴더에는 한 시간까지 걸립니다. GPU 없이 프로세서만 쓰는 Windows와 Linux 환경에서는 사진 한 장에 몇 초(2017년 노트북의 Core i5에서 약 5초)가 걸려, 사진이 많으면 몇 시간이 걸릴 수 있습니다. 그래서 설치 단계에서 폴더별 예상 시간을 그 컴퓨터에서 측정해 먼저 보여 줍니다. 첫 색인이 끝난 뒤에는 새 파일이 들어오고 몇 초 뒤에 검색할 수 있습니다.
개발자는 첫 색인 이후에는 새 파일만 읽어 부담이 작다고 설명하지만, Mac에서 첫 색인 뒤에도 에너지 사용량이 높다는 사용자 보고가 이슈 #68에 열려 있습니다. 0.6.1부터는 설정의 Folders 항목에서 정해진 시간에만 색인하도록 지정할 수 있습니다.
정확한 단어 일치에는 언어 제약이 2가지 있습니다. 스크린샷 속 글자는 Mac에서만, Apple의 텍스트 인식이 지원하는 약 25개 언어로 읽습니다. 또 중국어, 일본어, 태국어처럼 띄어쓰기가 없는 언어는 단어 단위로 나누지 않습니다. 이 제약은 정확한 단어 일치에만 해당하고 의미 검색에는 해당하지 않습니다.
DigUp의 코드 검색
EmbeddingGemma 2는 코드도 읽기 때문에 DigUp으로 내 프로젝트의 코드를 찾을 수 있습니다. 코드 검색은 기본으로 꺼져 있고, 설정의 Code 항목이나 설치 단계에서 고른 폴더에만 켜집니다. 검색어 앞에 code:를 붙이고 코드가 하는 일을 설명하거나 코드 안의 이름을 입력합니다:
code: retry a failed call with backoff: 함수 이름과 상관없이 해당 함수를 찾습니다.code: refreshAccessToken: 그 이름을 호출하는 곳이 아니라 정의한 줄로 이동합니다.code: plot how many examples each class has: 해당하는 노트북 셀을 찾습니다.
결과는 Zed, VS Code, Cursor, Sublime Text, JetBrains IDE 등 설정에서 고른 편집기의 해당 줄로 열립니다. 코드는 별도 색인에 저장되어 다른 검색 결과에 섞이지 않습니다. DigUp은 소스 파일, 출력을 뺀 노트북, 저장소 자체 문서를 읽고, git이 무시하는 파일과 벤더링하거나 생성한 코드, 데이터 파일, 키나 비밀번호로 보이는 파일은 건너뜁니다. 코드를 고치는 동안에는 변경이 멈추고 1분 뒤에 색인을 갱신합니다. 개발자에 따르면 Mac에서 작은 앱은 약 20초, llama.cpp 저장소 전체는 약 20분이 걸리고 색인은 130MB를 차지합니다.
DigUp 설치와 사용
운영체제별 설치 방법은 다음과 같습니다.
Mac은 Apple Silicon과 macOS 14 이상이 필요합니다. 릴리스 페이지에서 DMG를 받아 응용 프로그램 폴더로 옮기거나, Homebrew로 설치합니다:
brew install --cask arahim3/tap/digup
Windows는 64비트 Windows 10 또는 11이 필요합니다. 베타 릴리스에서 DigUp_x.y.z_x64-setup.exe를 받아 실행합니다. 관리자 권한 없이 현재 사용자에게만 설치됩니다. 설치 파일에 아직 서명이 없어 Windows가 인식할 수 없는 앱이라고 경고하면, 추가 정보(More info)를 누른 뒤 실행(Run anyway)을 고릅니다.
Linux는 64비트 Intel, AMD 프로세서와 Ubuntu 22.04, Debian 12, Mint 21 이상에서 동작합니다. Ubuntu, Debian, Mint 계열에서는 .deb 파일을 받아 설치합니다. Debian에 같은 이름의 다른 패키지가 있어서 패키지 이름은 dig-up입니다:
sudo apt install ./DigUp_x.y.z_amd64.deb
다른 배포판에서는 AppImage를 받아 실행 권한을 주고 실행합니다. 설치한 뒤에는 운영체제와 상관없이 다음 순서로 시작합니다:
- DigUp을 엽니다. 모델(865MB)을 한 번 내려받는 동안 검색할 폴더를 고릅니다. 폴더 전체를 고르거나 하위 폴더 일부만 고를 수 있고, 폴더마다 첫 색인에 걸릴 시간이 표시됩니다.
- 아무 앱에서나 단축키(Mac은 ⇧⌘Space, Windows와 Linux는 Ctrl+Shift+Space)를 누르고 찾는 내용을 설명합니다.
검색 패널의 주요 단축키는 다음과 같습니다:
| Mac | Windows와 Linux | 동작 |
|---|---|---|
| ⇧⌘Space | Ctrl+Shift+Space | 아무 앱에서나 검색 패널 열기 (변경 가능) |
| Enter | 결과 열기: PDF는 해당 페이지, 녹음과 영상은 해당 시점, 코드는 편집기의 해당 줄 | |
| Space | Space | 해당 페이지나 시점의 큰 미리보기 |
| ⌘O | Ctrl+O | 같은 검색을 사진 격자와 필터가 있는 큰 창에서 보기 |
Mac에서는 영상을 QuickTime Player나 IINA에서 해당 시점으로 열고, PDF는 미리보기 앱에서 검색어가 입력된 상태로 엽니다. Windows와 Linux에서 PDF는 Edge, Chrome, Firefox, Acrobat, SumatraPDF, Evince, Okular처럼 페이지를 지정할 수 있는 뷰어에서만 해당 페이지로 열립니다. 녹음과 영상은 VLC, mpv, MPC-HC에서만 해당 시점으로 열리고, 다른 앱에서는 처음부터 열립니다. 큰 미리보기는 어느 경우든 해당 페이지나 시점부터 보여 줍니다. GNOME과 KDE의 Wayland 환경에서는 앱이 자체 단축키를 등록할 수 없어서, DigUp이 설치 단계에서 데스크톱 키보드 설정에 단축키를 추가합니다.
소스에서 직접 빌드하려면 Mac에서는 Xcode 26, git, 그리고 llama.cpp 빌드용 CMake(또는 uv)가 필요합니다. README의 빌드 명령은 다음과 같습니다:
git clone https://github.com/ARahim3/DigUp && cd DigUp
scripts/build-llama.sh # llama.cpp at a pinned tag, with a one-line patch (a few minutes)
swift build -c release && swift test
./build.sh # → build.noindex/DigUp.app
빌드하면 터미널에서 색인, 검색, 평가를 실행하는 명령줄 도구 .build/release/digup도 함께 만들어집니다(digup --help). 검색 순위를 바꿀 때 측정에 쓰는 질의는 저장소의 evals/ 디렉토리에 있습니다(이미지, 문서, 오디오 등 37개, 벵골어와 아랍어 48개, 코드 41개). README와 릴리스 노트에는 평가 점수가 실려 있지 않습니다. Windows와 Linux 빌드에는 Swift 6.4, Rust, Node가 필요하고, 전체 단계는 packages 워크플로에 정리되어 있습니다.
DigUp의 라이선스
DigUp은 MIT 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다. 앱이 내려받는 EmbeddingGemma 2 모델은 별도로 Apache 2.0 라이선스를 따릅니다.
DigUp 프로젝트 GitHub 저장소
DigUp이 사용하는 EmbeddingGemma 2 모델 카드
더 읽어보기
-
Google, 텍스트 전용이던 EmbeddingGemma를 이미지, 영상, 음성까지 넓힌 EmbeddingGemma 2 공개
-
EmbeddingGemma: Google이 공개한, On-Device Embedding을 위한 308M 규모의 소형 모델
-
Jina AI, 텍스트와 이미지, 오디오, 비디오를 하나의 임베딩 공간에 담는 jina-embeddings-v5-omni 공개
-
QMD(Query Markup Documents): 로컬 환경을 위한 의미 기반의 작고 가벼운 지식 검색 엔진
-
Jina Grep: Jina AI가 공개한 Apple Silicon 기반의 고속 로컬 시맨틱 검색 CLI 도구
이 글은 GPT 모델로 정리한 초안을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 댓글로 알려주시기를 부탁드립니다. ![]()
파이토치 한국 사용자 모임
은 이런 글들을 한국어로 정리해 나누고 있습니다. 회원으로 가입하시면 주요 글들을 이메일
로 보내드리고, 텔레그램(Telegram)과 Slack/Discord/Teams/Dooray/GoogleChat 등으로도 새 글 알림을 받으실 수 있습니다. ![]()
아래
쪽에 좋아요
를 눌러주시면 다음 글을 정리하는 데 힘이 됩니다~ ![]()
