RAG Made Simple: 기술 설계와 아키텍처의 단순화 (Part 2)
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
- 대상자: RAG(Retrieval-Augmented Generation) 시스템 개발자, DevOps 엔지니어, AI/ML 모델 통합에 관심 있는 개발자
- 난이도: 중급 이상 (FastAPI, Hugging Face, 벡터 스토어, DevOps 기술 이해 필요)
핵심 요약
- 분리된 관심사 유지:
dto/
,models/
,rag/
등 폴더 구조로 고차원 코hesion과 저차원 결합 달성 - 하이브리드 검색 기법: 로컬 벡터 스토어와 ArXiv API 결합,
config.yml
에서 설정 가능 - 캐싱 최적화: ArXiv API 응답을 배경 스레드로 저장, 사용자 지연 최소화
- LLM 활용:
Mistral-7B
,Phi-2
등 Hugging Face 라이브러리를 통해 생성 모델 구현
섹션별 세부 요약
1. 폴더 구조 및 설계 원칙
dto/
: 요청/응답 데이터 구조 정의, 자동완성 지원models/
: Retrieval & Generator 시스템 모델 정의 (Hugging Face LLM 포함)prompt_templates/
: 다양한 프롬프트 템플릿 관리, 성능 비교 용이rag/
: 검색 → 생성 엔진의 전체 흐름 조율utils/
: 설정 로딩, 로깅, ArXiv API 연동 등 유틸리티 제공app.py
: FastAPI 서버 정의,config.yml
으로 시스템 설정 관리
2. 하이브리드 검색 메커니즘
- 로컬 벡터 스토어 우선: 문서 검색 시 최초로 로컬 스토어 사용
- ArXiv API 보완: 결과 부족 시 ArXiv에서 추출, 논문 초록을 핵심 문서로 사용
- 메타데이터 보존: 초록 외에도 저자, 논문 ID 등 정보 유지
- 링크 제공: 전체 논문 링크를 통해 사용자 접근성 개선
3. 캐싱 및 성능 최적화
- 캐싱 활성화: ArXiv 응답을 벡터 스토어에 저장, 재사용 가능
- 배경 스레드 처리: 사용자 지연 방지, 모델 처리 동시 진행
- 성능 영향 최소화: 초록 기반 인덱싱으로 검색 속도 빠름
4. 생성 모델 구현
- LLM 선택:
Mistral-7B
,Phi-2
,GPT-2
등 소형 모델 활용 - Hugging Face 통합:
transformers
라이브러리로 모델 및 토크나이저 로드 - 프롬프트 템플릿:
prompt_templates/
에서 설정, 생성 결과 품질 향상 - 튜닝 가능성: LoRA 기반 미세 조정 가능 (현재 범위 외)
5. 테스트 및 개발 효율화
- 모의 모드:
mock
설정으로 검색/생성 기능 테스트 가능 - 로컬 개발 용이: 실제 리소스 사용 없이 시스템 확인 가능
- 버그 수정 가속: 모의 응답으로 개발자 작업 시간 단축
결론
- 하이브리드 검색과 모의 모드를 통해 시스템 확장성 및 개발 효율성 확보
- FastAPI + Hugging Face 기반 아키텍처로 실시간 처리 및 테스트 지원
config.yml
에서 설정 관리, 성능 최적화와 유연한 배포 가능