linuxrebel/DocuBrowser

A local AI powered Document search engine. That turns that pile of documents on your system into a manageable searchable info store.

DocuBrowse – 로컬 AI 기반 문서 검색

무엇인가요

  • PDF, Word, 전자책, 코드 등 다양한 파일 형식을 인덱싱하고, 로컬에서 실행되는 AI 모델(Ollama)을 사용해 키워드와 의미적 의미로 검색할 수 있는 데스크톱/웹 앱입니다.
  • 모든 처리는 귀하의 기기에서 이루어지며, 클라우드 서비스, API 키, 또는 쿼리당 비용이 필요하지 않습니다.

주요 기능

  • 이중 검색 모드 – 빠른 SQLite FTS5 키워드 검색, AI 생성 임베딩을 통한 의미 검색, 두 가지를 결합한 하이브리드 모드.
  • 딥 링크 – 검색 결과를 찾은 후, 재인덱싱 없이 문서 내 정확한 위치(페이지/라인/섹션)로 바로 이동 가능.
  • AI 요약 – 필요 시 AI가 작성한 문서 요약(첫 생성 후 캐시됨).
  • 광범위한 형식 지원 – PDF, DOCX, PPTX, XLSX, ODT/ODS/ODP, Visio, draw.io, PlantUML, Mermaid, HTML/Markdown, 전자책(EPUB, MOBI, AZW3), DjVu, 이메일, RTF, CSV/TSV, 설정 파일, 그리고 많은 마크업 언어.
  • PII 보호 – 새로 인덱싱된 파일에서 일반적인 개인정보 패턴을 스캔하고 일치하는 문서를 제거.
  • 크로스 플랫폼 – Linux(RPM/DEB/tar), Windows(zip), macOS(dmg)용 패키지 제공. Docker 실험 브랜치도 존재하지만, 프로덕션 환경에서는 추천하지 않음.

작동 방식

  1. 인덱싱 – pdfplumber, python-docx, openpyxl, ebooklib 등 라이브러리를 사용해 지원되는 파일에서 텍스트와 메타데이터를 추출하고, 전체 텍스트 검색 테이블이 포함된 SQLite 데이터베이스에 저장.
  2. 임베딩 – Ollama를 통해 nomic-embed-text:latest 모델을 실행하여 각 문서에 대한 벡터 임베딩 생성.
  3. 검색 – 키워드 쿼리는 FTS5 인덱스에 검색; 의미 검색 쿼리는 쿼리의 임베딩을 계산하고 저장된 벡터와 코사인 유사도로 검색. 하이브리드 모드는 두 점수를 병합.
  4. 결과 UI – 관련성 점수, 딥 링크 버튼, "AI 요약" 버튼을 표시. 결과를 클릭하면 시스템 기본 뷰어에서 파일이 열림.

일반적인 워크플로우

# 설치 (Ubuntu 예시)
sudo apt install python3-pip calibre libvisio-tools djvulibre
pip install -r requirements.txt   # pdfplumber, python-docx 등 포함
# 서버 시작 (기본 포트 8000)
python -m docubrowse
# 브라우저에서 http://localhost:8000 열고 디렉터리 추가 후 검색 시작.

제한 사항 및 알려진 문제

  • 최소 8GB RAM 필요. GPU 가속은 선택 사항이지만 요약 생성 속도를 향상시킴.
  • 32비트 CPU는 지원되지 않음 (Ollama가 32비트 빌드를 제공하지 않음).
  • 일부 레거시 형식(예: 오래된 Visio .vsd 또는 이미지만 포함된 PDF/DjVu)은 선택적 외부 도구 설치 시 제외하고는 메타데이터만 인덱싱됨.
  • 실험용 Docker 빌드는 컨테이너의 사전 브라우저에서 파일을 열 수 없음.

로드맵 주요 사항

  • 데스크톱 통합을 포함한 완전한 Docker 지원.
  • 더 빠른 증분 인덱싱 및 백그라운드 재임베딩.
  • 다국어 요약을 위한 추가 언어 모델.

라이선스

  • 오픈소스. 자세한 내용은 리포지토리의 LICENSE 파일 참조.

DocuBrowse는 진정한 로컬 실행 AI 애플리케이션으로, 개인 문서 컬렉션에 의미 검색과 AI 생성 요약을 제공하며, AI/LLM 툴링 분야에 명확히 자리 잡고 있습니다.

관련

  • Dispatch
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트