Skip to content

Repository files navigation

Recall

링크·영상·팟캐스트·PDF를 던져 넣으면 알아서 읽고 정리해 두는 개인 지식 저장소.

저장 버튼을 누르는 순간 사용자는 기다리지 않는다. 본문 추출·전사·요약·태깅·임베딩은 백그라운드 파이프라인이 처리하고, 나중에 "그거 어디서 봤더라"를 검색하면 키워드와 의미 검색을 함께 돌려 원문 인용과 함께 답을 돌려준다.

Java Spring Boot PostgreSQL Redis nginx Docker


핵심 기능

기능 설명
비동기 캡처 POST /api/items는 INSERT 한 번 + XADD 한 번으로 끝난다. 무거운 처리는 전부 워커가 맡는다
원문 스냅샷 본문 HTML을 자산 인라인 상태로 보관 — link rot 방어
전사 + 타임스탬프 딥링크 영상·팟캐스트 자막을 구간별로 색인, 검색 결과에서 그 시각으로 점프
하이브리드 검색 Postgres FTS + pgvector HNSW를 단일 SQL에서 RRF 융합
인용 달린 RAG 질의 POST /api/ask — 근거 청크와 출처를 함께 반환
로그인 없는 데모 방문자마다 격리된 임시 계정에 시드 데이터를 복제, 48시간 후 자동 정리

실행

cp .env.example .env              # JWT_SECRET 등 시크릿 채우기 (최초 1회)
./scripts/gen-selfsigned-cert.sh  # gateway TLS 인증서 생성 (없으면 nginx 기동 실패)
docker compose up -d --build      # 애플리케이션 6개 + 모니터링 5개 컨테이너

python3 -m venv .venv && .venv/bin/pip install "psycopg[binary]"
.venv/bin/python db/seed/seed.py  # 데모 계정 + 샘플 아이템 7건

open http://localhost:8080        # SPA
open https://localhost:8443       # SPA (자체 서명 TLS — 브라우저 경고는 정상)
open http://localhost:3000        # Grafana

로그인 화면의 "로그인 없이 데모 체험"을 누르면 방문자별 격리 샌드박스가 생성된다. 스키마는 Flyway가 기동 시 자동 적용한다.

호스트 포트: gateway 8080/8443, postgres 55432, redis 56379, Grafana 3000, Prometheus 9090. gateway를 제외한 나머지는 127.0.0.1 전용이다.

검증

./scripts/e2e.sh              # 인증 → 캡처 → 파이프라인 → 검색 → RAG 전 구간 (13단계)
cd backend && mvn test        # 테스트 160개 / 25개 클래스 (postgres·redis 기동 필요)
k6 run scripts/load/mixed.js  # 혼합 트래픽 부하 테스트
./scripts/backup.sh           # pg_dump 백업

About

개인 지식 저장소(아카이빙 서비스).

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages