피드로 돌아가기
Building RAG Assistant: A I Built a Desktop RAG Chatbot From Scratch — Here's Everything I Learned
Dev.toDev.to
AI/ML

Chroma DB와 Recursive Chunking 기반의 로컬 RAG 시스템 구축

Building RAG Assistant: A I Built a Desktop RAG Chatbot From Scratch — Here's Everything I Learned

sydney muganda2026년 5월 16일10intermediate

Context

LLM의 Training Data Cutoff로 인한 최신 및 비공개 데이터 접근 불가 문제 해결 필요. 단순 튜토리얼 수준을 넘어 데이터 영속성과 모듈화된 백엔드를 갖춘 데스크톱 네이티브 RAG 애플리케이션 설계 지향.

Technical Solution

  • OpenAI text-embedding-3-small 모델을 통한 1,536차원 Dense Vector 변환으로 시맨틱 검색 구현
  • Chroma DB의 persist_directory 설정을 통한 로컬 데이터 영속화로 앱 재시작 시 Re-indexing 오버헤드 제거
  • RecursiveCharacterTextSplitter를 활용해 chunk_size 1,000 및 chunk_overlap 100 설정으로 문맥 단절 방지 및 검색 정밀도 향상
  • add_start_index 옵션 적용으로 원본 문서 내 정확한 위치 정보(Character Offset)를 메타데이터로 저장하여 Source Attribution 구현
  • Cosine Similarity 기반의 Top-K 검색 후 Relevance Score 0.4 미만 데이터를 필터링하여 답변의 근거 품질 확보
  • LangChain Orchestration을 통한 Document Loading, Chunking, Embedding, Generation의 파이프라인 모듈화

- Chunking 시 경계 지점의 정보 손실을 막기 위해 적절한 Overlap 비율 설정 검토 - 벡터 DB 선택 시 데이터 규모와 환경에 따라 Local Persistence 지원 여부 확인 - 검색 결과의 노이즈를 줄이기 위해 단순 Top-K 추출 외에 최소 유사도 임계값(Threshold) 필터링 적용 - 대량 데이터 처리 시 UI 프리징 방지를 위한 Indexing 프로세스의 Async 처리 및 Incremental Indexing 도입 고려

원문 읽기