EmbeddingGemma 2를 로컬로 구동해 파일 내용으로 검색하는 오픈소스 Mac 앱 DigUp 공개
원문 제목 — Open-source Mac app that runs EmbeddingGemma 2 locally to search your files by what’s in them
📄 전문 번역
DigUp은 Google DeepMind의 새로운 EmbeddingGemma 2를 자신의 파일 위에서 로컬로 구동하는 무료 Mac 앱이다. 이 모델은 텍스트, 이미지, 오디오, 영상을 하나의 공간에 넣으므로 기억나는 내용을 말로 표현하면 해당 파일로 이동한다. '영상 속 얼룩말'은 해당 장면이 나오는 순간에 클립을 열고, '잠에 대해 이야기하는 부분'은 팟캐스트의 그 순간으로 건너뛰며, '임대 계약의 반려동물 조항'은 해당 단어가 표시된 PDF 페이지를 보여준다. '해변의 개'는 사진을 찾아내고, 벵골어나 아랍어로 같은 검색을 해도 찾아낸다. 코드 검색을 켜면 'code: retry with backoff'가 편집기에서 해당 함수를 연다.
ggml-org의 Q8_0 GGUF(865MB, 한 번만 다운로드)를 llama.cpp와 Metal 위에서 구동하며, 네이티브 Swift 앱 안에 담겨 있고 Python은 없다. 검색 시에는 텍스트 인코더(약 250MB)만 로드하며 입력을 멈추면 약 0.1초 후에 결과를 보여준다. 인덱싱은 피크 시 2GB 미만이고, 헬퍼는 작업이 끝나면 종료된다.
길이에 상관없는 오디오와 영상은 30초 창과 샷당 한 프레임으로 들어간다. 모든 것이 로컬에서 실행되며, 모델 다운로드와 끌 수 있는 업데이트 확인 때만 온라인에 접속한다. 무료이며 MIT 라이선스다. Apple Silicon과 macOS 14 이상이 필요하다.
저장소와 다운로드(서명 및 공증된 빌드)는 GitHub에서 제공되며, 제작자는 피드백을 요청했다.
💬 주요 댓글 번역 (4)
🔍 루키 분석
DigUp은 Google DeepMind의 EmbeddingGemma 2를 llama.cpp와 Metal 위에서 구동해 텍스트, 이미지, 오디오, 영상을 하나의 임베딩 공간에서 검색하는 MIT 라이선스 오픈소스 Mac 앱이다. ggml-org의 Q8_0 GGUF(865MB)를 한 번 내려받아 쓰며 검색 시에는 약 250MB의 텍스트 인코더만 로드해 입력 종료 후 약 0.1초 만에 결과를 보여주고, 인덱싱은 피크 시 2GB 미만이다. 제작자는 시맨틱 검색만이 아닌 키워드 검색과의 점수 융합을 채택했으며, 합성 평가 top-1에서 RRF 방식의 0.73보다 0.88로 우수했다고 밝혔다. 약 380개 파일과 111개 쿼리 규모의 테스트베드로 검증했으며 Apple Silicon과 macOS 14 이상이 요구된다.
— 루키 · glm-5.3-flash:cloud
몇 달 전에 나도 비슷한 것을 만들고 있었다. 내가 직면한 문제는 다음과 같다. 첫째, 인간이 추상적으로 기억하는 파일에는 시맨틱 검색만으로는 대체로 잘 작동하지 않는다. 둘째, 몇 개의 파일(문서)과 음성(긴 오디오 메모)으로 테스트했는가. 내 것은 텍스트가 들어간 이미지, 즉 그 안의 스크린샷에서 실패했었다. 셋째, 그리고 가장 어려운 핵심은 pdf, excel, pptx, word, zip, rar 파일, 모델 가중치, 긴 mp4 영상, 음악이나 영화처럼 파일의 대다수를 차지하는 것들에 특수 처리가 필요하다는 것이다. 아직 없다면 파이프라인에 추가하는 것을 고려하라.
안녕하세요, 저도 이 문제 대부분을 겪었습니다. DigUp의 처리 방식은 이렇습니다. 시맨틱 검색만 쓰지 않습니다. 파일 이름, OCR 텍스트, 페이지와 문서 텍스트에 대한 키워드 검색이 모델과 함께 실행되고 점수가 결합됩니다. 제 평가에서 모델만으로는 오류 코드 같은 정확한 조회 9개 중 5개를 찾았지만 키워드를 더하면 9개 모두 찾았습니다. 약 380개 파일(146개 스크린샷, 최대 463페이지 PDF 30개, 1시간 분량 오디오, 영상 8개)의 테스트베드와 코드용 68개를 포함한 111개 쿼리, 그리고 일상적으로 쓰는 제 폴더로 테스트했습니다. 스크린샷은 모델이 그 안의 텍스트를 읽으므로 이미지 벡터를 받고, 정확한 단어를 위해 Apple의 OCR도 함께 씁니다. 실제 폴더의 14개 쿼리 중 12개가 (이하 원문 잘림)
시맨틱 전용이 아니고 파일 이름에 키워드 검색을 한다면, 그럼 검색을 융합하는 건가요? RRF인가요?
RRF가 아닙니다. 처음에 시도했지만 밀렸습니다. 합성 평가에서 top-1이 0.73 대 0.88, 실제 파일에서는 0.82 대 0.86이었습니다. 랭크 융합은 각 매치가 얼마나 강한지를 버리기 때문에 터미널 스크린샷의 흔한 단어 하나가 의미로 일치한 실제 차트를 이기는 일이 생겼습니다. 그래서 점수 융합을 씁니다. 의미 점수는 코사인 값에서 이 쿼리에 대한 해당 모달리티의 평균을 뺀 뒤 쿼리 전체 점수의 퍼짐으로 나눈 값, 즉 쿼리별 z-점수입니다. 여기에 2 × (파일에서 발견된 쿼리 단어 비율)^1.5를 더하고, 쿼리가 종류를 명시하면('영상에서') 1을 더합니다. 의미 점수가 기준을 충족하면 파일이 포함되는데 (이하 원문 잘림)