우리는 타인의 클라우드가 아닌 브라우저 탭에서 실행되는 GraphRAG, Nebula를 구축했습니다
요약
Nebula는 클라우드 서버 없이 브라우저 탭 내에서 완전히 실행되는 로컬 우선(local-first) GraphRAG 기반 AI 지식 베이스입니다. WebGPU와 WebLLM을 활용해 온디바이스 채팅과 시맨틱 검색을 지원하며, 데이터 유출 걱정 없는 강력한 프라이버시를 제공합니다.
핵심 포인트
- WebGPU 및 WebLLM을 통한 온디바이스 LLM 실행
- GraphRAG 기술을 활용한 엔티티 간 관계 기반 지식 그래프 구축
- 서버와 계정 없이 브라우저 저장소만 사용하는 로컬 우선 아키텍처
- bge-m3 모델 기반의 다국어 시맨틱 검색 지원
대부분의 AI 노트 앱은 사용자의 노트를 클라우드 벡터 데이터베이스(vector database)와 호스팅된 모델로 전송한 뒤, 개인정보 보호 정책을 신뢰해 달라고 요청합니다. 우리가 수행하는 업무(규제 산업, 민감한 데이터)의 특성상 이는 시작조차 할 수 없는 문제입니다. 그래서 우리는 그 반대의 개념을 구축하여 오픈 소스로 공개했습니다. 바로 Nebula입니다. 이는 브라우저 탭 내부에서 완전히 실행되는 프라이빗하고 로컬 우선(local-first) 방식인 AI 지식 베이스입니다. 백엔드도, 계정도, 서버도 없습니다. 이 서비스의 슬로건은 명확합니다: '생각하는 노트, 당신의 기기를 벗어나는 것은 아무것도 없습니다.'
Repo: https://github.com/beevr-labs/Nebula (Apache-2.0). 가입 없이 이용 가능한 라이브 데모: https://beevr-labs.github.io/Nebula/. 우리가 왜 완전히 온디바이스(on-device) 방식을 선택했는지, 그리고 그 대가는 무엇이었는지 설명하겠습니다.
약속이 아닌 아키텍처를 통한 프라이버시
일반적인 프라이버시 홍보 방식은 '우리는 당신의 데이터를 보지 않겠습니다'라는 정책을 내세우는 것입니다. Nebula의 방식은 구조적입니다. 데이터가 갈 곳이 아예 없습니다. 모든 것이 브라우저에서 실행됩니다. 노트, 임베딩(embeddings), 그리고 검색 인덱스(search index)는 로컬 브라우저 저장소에 존재합니다. 동기화 서비스도, 계정 시스템도 없으므로 해킹당할 서버나 데이터 처리 계약(data-processing agreement)을 맺어야 할 서버도 없습니다. 민감한 노트(고객 기록, 건강 정보, 클라우드 챗봇에 붙여넣고 싶지 않은 모든 것)를 다루는 데 있어 이것이 핵심입니다.
무엇이 어디에서 실행되는가
이 앱은 브라우저에서 실제 머신러닝 (ML)을 수행하는 SvelteKit 싱글 페이지 애플리케이션(single-page app)입니다:
- 온디바이스 채팅 (On-device chat): WebLLM을 통해 수행되며, WebGPU로 GPU 가속화됩니다. 아주 작고 빠른 모델부터 크고 정확한 모델까지 직접 선택할 수 있으며, Nebula는 확정하기 전에 다운로드 크기를 보여줍니다. Qwen 및 Llama 모델이 지원됩니다.
- 시맨틱 검색 (Semantic search): bge-m3 (Apache-2.0)를 기반으로 하며, 첫 사용 시 약 570 MB가 필요하지만 이후에는 캐싱되어 완전히 오프라인으로 작동합니다. 베트남어를 포함한 다국어를 지원하므로 혼합 언어로 작성된 노트에서도 작동합니다.
- WebAssembly: 연산 집약적인(compute-heavy) 부분들을 처리합니다.
- 첫 모델 다운로드 이후에는 전체 시스템이 오프라인으로 작동합니다.
왜 단순한 벡터가 아닌 그래프인가
단순한 벡터 검색 (Flat vector search)은 유사한 노트를 찾아낼 뿐입니다. "화요일 통화에서의 고객"과 "Acme Corp"가 서로 다른 10개의 노트에 걸쳐 동일한 엔티티 (entity)라는 사실을 이해하지 못합니다. Nebula는 엔티티 지식 그래프 (entity knowledge graph, 사람, 프로젝트, 고객 등)를 자동으로 구축하며, GraphRAG를 사용하여 이러한 관계들을 따라가며 질문에 답하고, 모든 답변을 소스 노트로 다시 연결합니다. 사용자는 키워드를 통해 단절된 파일들을 뒤지는 대신, 일상적인 언어로 질문하고 추적 가능한 답변을 얻을 수 있습니다.
또한 훌륭한 노트 앱이기도 합니다
기반이 되는 노트 앱이 제대로 작동하지 않는다면 AI는 무용지물입니다. 따라서 Nebula는 마크다운 (Markdown), 위키링크 (wikilinks) 및 백링크 (backlinks), 탭, 퀵 스위처 (quick switcher), 데일리 노트 (daily notes), 템플릿, 태그, 폴더 기능을 갖추고 있습니다. 사용자는 자신의 파일 (PDF, CSV, 텍스트)을 가져올 수 있으며, 원할 때마다 전체 보관함 (vault)을 일반 .md 파일로 내보낼 수 있습니다. 종속성 (lock-in)은 없습니다. 사용자의 노트는 휴대 가능한 마크다운 형태로 자유롭게 드나듭니다. 로컬 우선 (local-first) 방식이 취약함을 의미하지 않도록, 코드베이스에는 430개 이상의 자동화된 테스트가 포함되어 있습니다.
어려운 부분들 (우리가 배운 것들)
- 온디바이스 모델 (On-device models)은 크기가 더 작으므로, 구조가 더 많은 비중을 차지해야 합니다. 지식 그래프는 작은 로컬 모델 단독으로는 놓칠 수 있는 문맥 (context)을 복구해 줍니다. 이것이 우리가 모델의 크기에 의존하는 대신 그래프 우선 (graph-first) 방식을 택한 큰 이유 중 하나입니다.
- 설명 가능한 검색 (Explainable retrieval)은 정확도만큼 중요합니다. 그래프를 통해 소스 노트로 돌아가는 경로를 보여주는 것이 답변의 신뢰성을 높이며, 규제 대상인 구매자들에게 이러한 추적 가능성 (traceability)은 있으면 좋은 기능이 아니라 필수적인 요소입니다.
- 2026년의 브라우저는 놀라울 정도로 유능한 런타임 (runtime)입니다. WebGPU와 WebAssembly의 결합은 "설치할 필요 없음, 오프라인 작동, GPU 가속"이 단순한 과학 실험 수준이 아니라 실제로 달성 가능한 영역임을 의미합니다.
오픈 소스를 선택한 이유
우리가 가장 공들인 다른 작업들을 오픈 소스로 공개한 것과 같은 이유입니다. AI 분야에서는 "나를 믿으라"는 말보다 "검증 가능함 (verifiable)"이 더 강력합니다. 민감한 데이터를 다루기 위해 우리를 평가하는 구매자는 검색이 정확히 어떻게 작동하는지 직접 읽어볼 수 있으며, 우리의 말을 그대로 믿는 대신 아무것도 기기를 떠나지 않는다는 사실을 스스로 확인할 수 있습니다.
Nebula는 **https://github.com/beevr-labs/Nebula**에서 Apache-2.0 라이선스로 제공되며, 라이브 데모는 **https://beevr-labs.github.io/Nebula/**에서 확인할 수 있습니다. 민감하거나 규제 대상인 데이터를 기반으로 구축된 AI가 필요하시다면(온디바이스 여부와 상관없이, 단순한 데모를 넘어 감사를 견뎌낼 수 있도록 제작된 AI), 저희의 작업 방식은 여기에서 확인하실 수 있습니다.
브라우저에서 RAG를 완전히 실행하고 있는 다른 분이 계신가요? 어떤 모델과 하드웨어 조합이 실제로 잘 작동하고 있나요?
원문은 beevr.ai에 게시되었습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기