피드로 돌아가기
Dev.toAI/ML
원문 읽기
추상화 레이어 제거를 통한 RAG 파이프라인의 완전한 가시성 확보
I Built RAG From Scratch in Python to Understand It. Here's What I Learned.
AI 요약
Context
LangChain의 RetrievalQA와 같은 고수준 라이브러리가 제공하는 블랙박스 구조로 인해 Chunking 누락 및 Cosine Similarity 기반 검색의 불투명성 발생. 특히 모델이 문서에 없는 내용을 생성하는 환각 현상과 잘못된 인용구 생성 시 원인 분석이 불가능한 설계 한계 직면.
Technical Solution
- 단일 책임 원칙 기반의 6개 독립 모듈(loaders, chunker, store, pipeline, llm)로 아키텍처 분리
- Whitespace Normalization을 통한 PDF 텍스트 정규화로 Chunk당 토큰 밀도 일관성 확보
- Sliding-window 기반 100자 Overlap 설계를 통해 Chunk 경계면에 위치한 문맥 손실 방지
- Original-offset Tracking으로 정규화된 텍스트와 원본 문서 간의 정확한 매핑 및 소스 하이라이팅 구현
- ChromaDB와 Ollama를 결합한 모듈형 구조 설계를 통해 Embedding 모델의 즉각적인 교체 및 테스트 가능성 확보
실천 포인트
1. Chunking 전략 수립 시 단순 길이 기반 분할이 아닌 Semantic Boundary와 Overlap 적용 여부 검토
2. PDF 추출 텍스트의 불규칙한 공백 및 줄바꿈을 제거하는 전처리 파이프라인 구축
3. LLM 응답의 근거 확인을 위해 Chunk의 원본 위치(Offset)를 저장하는 메타데이터 설계 적용
4. 프레임워크 의존성을 낮춘 최소 단위 모듈 테스트 환경 구축을 통한 검증 가능성 확보