RAG Made Simple: Simplifying Technical Design and Architectu

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-2Hugging 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에서 설정 관리, 성능 최적화와 유연한 배포 가능