Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Second Brain — 자동 수집형 개인 지식 플랫폼

폴더에 파일을 넣기만 하면 자동으로 감지 → 텍스트 추출 → LLM 분류 → 청킹 → 임베딩 → Teradata 저장 → 웹 채팅에서 검색되는 자동 수집형 지식 베이스.

inbox/ 에 파일 저장 → Watcher 감지 → processing/ 이동 → hash→parse→classify→chunk→embed→save→store
                                              → 성공: library/<카테고리>/<서브카테고리>/   실패: failed/

처리에 성공하면 원본 파일이 업무 분류 체계에 맞춰 library/ 아래로 자동 정리됩니다 (예: library/03_System_Config/Hardware_Sizing/tcore_cds_config.md). 분류 체계는 backend/app/ingestion/taxonomy.py에서 정의·수정하며, 폴더는 시작 시 자동 생성됩니다. LLM이 각 문서를 이 체계의 (카테고리 → 서브카테고리)로 매핑하고, 해당 없으면 99_Unsorted/로 보냅니다.

스택

  • Backend: FastAPI + watchdog(디렉토리 감시) + 백그라운드 워커, SSE 실시간 피드
  • AI: Ollama (분류·RAG 답변) + bge-m3 임베딩(1024-dim)
  • 저장소: Teradata 20 (SB_Document, SB_DocumentChunk, SB_IngestionFile, SB_IngestionLog, SB_DocumentCategory)
  • Frontend: Next.js 14 + Tailwind + Framer Motion + lucide-react (다크 우선 UI)

벡터 검색은 임베딩을 CLOB(JSON)으로 저장하고 인앱 코사인 유사도로 랭킹합니다 (app/llm/vector_search.py의 인터페이스 뒤에 있어 추후 네이티브 TD_VECTORDISTANCE로 교체 가능).

실행

Docker Compose 배포

cp .env.docker.example .env
# .env에 TD_HOST, TD_USER, TD_PASSWORD, TD_DATABASE 값을 입력

docker compose --profile init run --rm init-db  # 최초 1회: 테이블 생성 + 카테고리 시드
docker compose up -d --build
  • Frontend: http://localhost:3000
  • Backend API: http://localhost:8077
  • 로컬 second-brain/ 폴더가 컨테이너의 /data/second-brain으로 마운트됩니다.
  • Ollama를 호스트 머신에서 실행하는 경우 기본값 http://host.docker.internal:11434를 사용합니다.
  • 웹 프론트는 외부 CDN/Google Fonts를 호출하지 않도록 구성되어 폐쇄망에서도 렌더링됩니다.

중지:

docker compose down

1. Backend

cd backend
uv venv --python 3.12 && uv pip install -e .
# .env 에 Teradata/Ollama 접속정보가 설정되어 있어야 함 (.env.example 참고)
.venv/bin/python -m app.db.init_db          # 테이블 생성 + 카테고리 시드 (최초 1회)
.venv/bin/uvicorn app.main:app --port 8077  # API + 워커 + 워처 기동

2. Frontend

cd frontend
npm install
npm run dev    # http://localhost:3000

3. 사용

second-brain/inbox/ 폴더에 .md/.txt/.pdf/.docx/.pptx/.xlsx/.html/.url/.sql/.json/.yaml/.ini/.conf/.cfg/.toml/.xml 파일을 넣으면 자동으로 처리되어 Inbox Monitor에 실시간 표시되고, Chat에서 질문할 수 있습니다.

Phase 1 지식 모델

세컨드브레인 위키 기능을 위해 다음 테이블이 추가되었습니다.

  • SB_Note: 직접 편집하는 위키 노트
  • SB_KnowledgeLink: 노트·문서·프로젝트 간 연결/백링크
  • SB_Conversation, SB_ConversationTurn: 채팅 이력 저장

기존 DB에는 아래 명령을 한 번 다시 실행해 새 테이블을 생성합니다.

cd backend
.venv/bin/python -m app.db.init_db

Phase 2에서는 위키 노트 작업 흐름이 추가되었습니다.

  • /wiki: 위키 노트 생성·검색·편집
  • 노트 본문에 [[다른 노트 제목]]을 쓰면 저장 시 자동 링크/백링크 생성
  • 문서 상세의 위키 노트 버튼으로 문서를 편집 가능한 노트로 전환
  • 채팅 답변의 위키 노트로 저장 버튼으로 답변과 근거 문서를 노트로 저장

Phase 3에서는 검색 품질을 개선했습니다.

  • RAG 검색이 문서 청크와 위키 노트를 함께 검색합니다.
  • 문서 청크는 임베딩 유사도와 키워드 매칭을 결합한 하이브리드 점수를 사용합니다.
  • 위키 노트는 제목·요약·본문 키워드 매칭으로 검색에 포함됩니다.
  • 채팅 출처에는 semantic, keyword, wiki keyword 점수 근거가 표시됩니다.
  • 노트 출처를 클릭하면 /wiki?note=<id>로 이동합니다.

Phase 4에서는 문서에서 작업 지식 항목을 자동 추출합니다.

  • SB_KnowledgeItem: FACT, DECISION, TASK, RISK 저장
  • 수집 파이프라인이 문서별 핵심 사실, 결정사항, 액션 아이템, 리스크를 추출합니다.
  • /briefing: 추출 항목을 브리핑 형태로 확인합니다.
  • /tasks: 작업과 리스크 상태를 추적합니다.

Phase 5에서는 재발견과 반추 흐름을 추가했습니다.

  • /review: 데일리 리뷰, 미분류/실패/오래된 지식/열린 작업 점검
  • /graph: 노트·문서·프로젝트 연결 그래프
  • /api/review/daily: 리뷰 집계
  • /api/review/graph: 지식 그래프 노드/엣지

주요 엔드포인트

Method Path 설명
GET /api/stats 대시보드 지표
GET /api/ingestion/files 수집 파일 목록
GET /api/ingestion/files/{id} 파일 상세 + 단계 로그
POST /api/ingestion/files/{id}/retry 실패 파일 재처리
GET /api/ingestion/stream SSE 실시간 상태
GET /api/documents, /api/documents/{id} 문서 목록/상세
GET /api/categories 카테고리 + 문서 수
POST /api/chat SSE RAG 답변 스트리밍
GET/POST/PATCH /api/notes 위키 노트 관리
GET/POST/DELETE /api/links 지식 객체 연결/백링크
GET /api/conversations 저장된 채팅 이력
GET/PATCH /api/items Fact/Decision/Task/Risk 항목
GET /api/review/daily, /api/review/graph 데일리 리뷰와 지식 그래프

스킬 기반 자료 생성 (Templates)

특정 주제에 대해 엑셀 양식을 지식베이스 참조로 자동 채워 생성합니다. 웹 UI의 Templates 메뉴에서 스킬 선택 → 파라미터 입력 → 생성(KB 자동 채움) → 셀 수동 보완 → 엑셀 다운로드.

스킬은 backend/skills/<id>/ 폴더로 정의하며, 폴더만 추가하면 새 스킬이 자동 등록됩니다(코드 재배포 불필요):

  • skill.json — 메타데이터 + 입력 파라미터 + 출력 skeleton(표 구조)
  • instructions.md — LLM 채움 지시문

첫 스킬 system_config는 두 가지 표를 생성합니다:

  • 하드웨어 BOM 표 (구분/P/N/Description/수량, 노드별 셀 병합·하이라이트)
  • DBMS 사이징 비교 매트릭스 (지표 × 구성안)

엔드포인트: GET /api/skills, POST /api/skills/{id}/generate(미리보기 JSON), POST /api/skills/{id}/render(xlsx 다운로드).

설계 문서: docs/IMPLEMENTATION_PLAN.md

About

Second Brain 에이전트 나만을 위한

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages