개인 기록 습관 형성과 LLM 애플리케이션 개발을 목표로 개인 블로그 데이터를 활용한 RAG 기반 QA 시스템을 구축한 사이드 프로젝트를 다룬다. Obsidian으로 마크다운 문서를 관리하고 Langchain과 Milvus Vector DB를 조합해 개인 지식 베이스를 검색·질의할 수 있는 Streamlit 앱을 만들었다.
핵심 포인트- 웹 플랫폼(Obsidian + Vercel)과 LLM 앱(Streamlit + Langchain + Milvus) 두 레이어로 시스템을 구성한다.
- 개별 아티클 단위 업데이트 기능을 구현해 전체 임베딩 대비 토큰 비용을 약 1500→40 토큰으로 줄였다.
- Langchain의 과도한 추상화가 세밀한 제어를 어렵게 만드는 실제 문제를 경험했다.
- 외부 VectorDB 선택 기준과 프로덕션 RAG 시스템의 모니터링 지표 설계 필요성을 도출했다.
상세 정리- 배경: 개인 기록 습관 형성과 LLM 앱 개발 경험 습득을 동시에 달성하기 위한 사이드 프로젝트로 시작했다.
- 웹 플랫폼 구성: Obsidian으로 로컬에서 마크다운 문서를 작성하고 Vercel에 배포해 외부 접근 가능한 개인 블로그를 만들었다.
- LLM 앱 구성: 블로그 마크다운 데이터를 임베딩해 Milvus Vector DB에 저장하고 Streamlit UI에서 질의하는 RAG 파이프라인을 구축했다.
- 초기 비효율: 전체 파일을 다시 임베딩할 때마다 약 1500 토큰을 소비해 비용과 처리 시간이 비효율적이었다.
- 개별 업데이트 최적화: 변경된 아티클만 단독으로 임베딩·업데이트하는 기능을 구현해 단일 파일 처리 비용을 약 40 토큰으로 절감했다.
- Langchain 추상화 함정: 내부 체인 흐름과 프롬프트 제어가 추상화돼 세밀한 조정이 어렵다는 점을 직접 경험했고 이를 한계로 명시했다.
- VectorDB 선택 고민: Milvus를 외부 Vector DB로 채택했지만 운영 환경에서의 확장성, 성능, 관리 편의성 기준을 사전에 정립할 필요성을 느꼈다.
- 모니터링 지표: 검색 품질, 응답 지연, 임베딩 정확도 등 프로덕션 RAG 시스템을 위한 지표 설계가 구현 못지않게 중요한 과제임을 강조했다.
왜 읽나LangChain과 Milvus로 개인 지식 베이스 RAG 시스템을 처음 구축하며 만나는 추상화 함정, 비용 최적화, 모니터링 설계 고민을 실제 경험으로 배울 수 있는 사이드 프로젝트 케이스 스터디.