
Notion RAG 검색 시스템 구축: Go로 구현하는 개인 지식 베이스 구축기
두줄요약
Go와 Gemini로 Notion 문서를 수집·임베딩해 로컬 RAG 검색 CLI를 구축했습니다.\n채널 기반 병렬 처리와 유사도 필터링으로 검색 정확도와 안정성을 보완했습니다.
구조와 흐름
- Notion API 페이지 수집·1,000자 단위 청킹·Gemini 임베딩·로컬 벡터 DB 저장 흐름
- 질의 임베딩 후 코사인 유사도 기반 문서 검색과 Gemini 컨텍스트 답변 생성
- CLI의 reload 명령어 기반 동기화와 검색 모드 진입
선택 이유
- Go의 Goroutine·Channel 기반 병렬 처리로 수집과 임베딩 동시 수행
- 외부 서버 없이 바이너리 내장 가능한 chromem-go 기반 로컬 벡터 DB
- 무료 또는 저렴한 Gemini API와 한국어 처리 성능 활용
성능/운영 포인트
- Producer-Consumer 워커 풀과 버퍼 채널 기반 Backpressure 제어
- 워커별 독립 Gemini 클라이언트와 429 응답 시 30초 대기 후 재시도
- 유사도 0.7 이상 문서만 컨텍스트에 포함해 검색 노이즈와 환각 위험 완화
적용해볼 점
- 대화 컨텍스트 전달, 변경 페이지 재임베딩, 모델 교체 기능 확장
- 키워드 검색 결합 하이브리드 검색과 GUI·웹 인터페이스 추가





