JuliaLM: 개인 지식 기반을 위한 독립형 RAG 시스템
개발자들은 종종 PDF, YouTube 강의, 웹 페이지 등 대량의 문서를 처리하는 과제에 직면합니다. ChatGPT와 같은 표준 챗봇은 여러 소스를 다룰 때 문맥을 잃어버리고, 기성 RAG 프레임워크는 스캔 문서와 비디오 처리에 어려움을 겪습니다. JuliaLM은 맞춤형 파이프라인으로 이 문제를 해결합니다: 일회성 소스 로딩, 다중 전략 검색, 컨텍스트 예산 관리. 이 시스템은 Nuxt.js, FastAPI, SurrealDB를 기반으로 구축되어 벡터 검색, 채팅, 플래시카드 생성을 제공합니다.
기술 스택 아키텍처와 SurrealDB 선택
Nuxt.js 프론트엔드는 REST와 SSE를 통해 백엔드와 통신합니다. FastAPI는 LangGraph로 AI를 오케스트레이션하고, 작업 큐를 관리하며, SurrealDB와 통합합니다. 이 데이터베이스는 관계형 테이블, 그래프 연결, 벡터 검색을 단일 서비스로 결합하여 Postgres + Redis + Pinecone을 대체합니다.
프론트엔드 (Nuxt.js)
↕ REST + SSE
백엔드 (FastAPI)
├── LangGraph (AI 오케스트레이션)
├── 백그라운드 명령 (작업 큐)
├── SurrealDB (데이터 + 벡터 + 그래프)
├── Gotenberg (문서 변환)
└── MiniMax / 임베딩 API (LLM + 벡터화)
작업 큐는 SurrealDB 위에 재시도(최대 5회)와 지수 백오프로 구현됩니다. 가벼운 소스의 경우—동기 처리(5–10초); 무거운 PDF의 경우—상태 폴링을 통한 비동기 처리.
계단식 소스 파싱
문서 처리는 안정성을 위해 폴백을 사용합니다:
- PDF 및 오피스 파일: 구조 보존(제목, 표)이 가능한 Docling for Markdown. 폴백—LibreOffice 기반 Gotenberg for PPTX/XLSX.
- YouTube: 1) youtube-transcript-api(언어별 자막: RU→EN→ES→PT); 2) pytubefix(Android 클라이언트); 3) Firecrawl/Jina.
- 웹 페이지: Playwright(JS 렌더링, UA/뷰포트 무작위화) + readability; 폴백—Jina Reader, HTTP.
- 이미지: 손글씨 텍스트 OCR을 위한 비전 모델.
이를 통해 YouTube API 실패나 CAPTCHA가 있어도 텍스트 추출이 보장됩니다.
벡터화와 다중 전략 검색
텍스트는 약 500 토큰(15% 중첩)의 청크로 분할되며, 우선순위 구분자: 이중 줄바꿈 → 단일 줄바꿈 → 마침표. 과학 텍스트의 정확도와 컨텍스트 간 경험적 균형.
소스 검색은 네 가지 전략을 병렬로 결합합니다:
- 벡터 검색—임베딩을 통한 의미론적 검색(코사인 ≥ 0.15).
- 텍스트 검색—전체 텍스트에 대한 BM25.
- 제목 검색—제목에 대한 검색.
- 인사이트 검색—요약과 인사이트에 대한 검색.
중복 제거: 매치당 점수 +0.05. 상위 5개 결과.
장문 문서를 위한 컨텍스트 예산 관리
전체 제한—300,000 문자(75K 토큰). 소스별: 최소 5,000, 최대 40,000.
- 짧은 소스: 전체 포함.
- 긴 소스 + 알려진 쿼리: 인사이트 + 관련 청크(내부 벡터 검색).
- 긴 소스 + 알 수 없는 쿼리: 인사이트 + 텍스트 시작 부분.
이 접근 방식은 책 작업 시 컨텍스트 오버플로를 방지합니다.
FSRS를 활용한 플래시카드
검증이 포함된 JSON 형식의 "질문-답변" 쌍 생성. FSRS를 통한 간격 반복: 안정성, 난이도, 상태 매개변수(새로운/학습 중/복습). 1–4점 평가로 일정 재계산. 노트북 통합으로 Anki로의 내보내기 불필요.
고급 데이터베이스 검색
두 가지 기본 모드: BM25와 벡터 검색. "데이터베이스에 질문하기"—LangGraph 그래프:
- 지침과 함께 최대 5개의 하위 쿼리 생성.
- 병렬 검색(쿼리당 최대 10개 결과).
- 중간 답변 합성.
핵심 요약
- 계단식 파싱은 자막 없는 YouTube를 포함한 모든 소스에서 텍스트 추출을 보장합니다.
- 네 가지 검색 전략은 단일 벡터 검색 대비 재현율을 20–30% 향상시킵니다.
- 컨텍스트 예산은 관련성을 잃지 않고 1000페이지 이상의 코퍼스를 처리할 수 있게 합니다.
- FSRS 통합은 간격 반복 자동화로 학습을 단순화합니다.
- SurrealDB는 배포를 간소화합니다: 세 개의 데이터베이스 대신 하나의 컨테이너.
— Editorial Team
아직 댓글이 없습니다.