피드로 돌아가기
Dev.toAI/ML
원문 읽기
Chroma DB와 Recursive Chunking 기반의 로컬 RAG 시스템 구축
Building RAG Assistant: A I Built a Desktop RAG Chatbot From Scratch — Here's Everything I Learned
AI 요약
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 도입 고려