LLM에 RAG 설정 도전기 (결론은 어려움)
PDF 기반 RAG 시스템 구축 기록
1. 시작 단계: 목표와 초기 구성
- 목표: 대량 PDF 과학 논문을 기반으로 LLM이 질의응답, 요약, 통계 기능 수행
- 초기 환경:
- OS: Mac Studio M1 Max 64GB (테스트), 이후 Ubuntu 24.04 서버
- CPU/GPU: Mac Studio M1 Max 10코어 CPU + 32코어 GPU, 서버: Threadripper 2920X + RTX 3090 24GB
- 저장소: 수만~십만 PDF 파일, 경로: /8TB/arxiv_papers
- 기본 전략:
- PDF 텍스트 추출
- 이미지 및 도표 OCR 처리
- 임베딩 후 벡터 DB(ChromaDB)에 저장
- LLM 연동하여 RAG 구성
2. 초기 시도와 문제점
- PDF 텍스트 추출: PyMuPDF, pdfplumber 사용 → 도표, 수식, 캡션 누락
- 이미지/표 OCR: PaddleOCR, EasyOCR → GPU 활용률 낮음, CPU 의존도 높음
- 임베딩: OpenAI, HuggingFace → 깨진 문자, 임베딩 품질 낮음 → 검색 정확도 저하
- 병목: 멀티프로세싱 시 CUDA 초기화 문제, 대량 PDF 처리 시 메모리 과부하
3. Mac Studio 64GB 기반 테스트
- Mac Studio M1 Max 64GB 모델에서 초기 OCR, PDF 텍스트 추출, 임베딩 테스트
- LLaVA-Next 모델 로컬 실행 가능 여부 검증
- PDF 샘플 임베딩 후 ChromaDB 연동, 자동화 스크립트(ai_pipeline.py) 초기 버전 테스트
- 성공적인 기능 검증 후, 대규모 처리와 GPU 최적화를 위해 Ubuntu + RTX 3090 서버 환경으로 확장
- 교훈: Mac Studio는 소규모 테스트 및 모델 검증에 적합, 대규모 운영은 RTX 3090 서버 필수
4. 개선과 성공 사례
4-1. OCR + 이미지 분석 개선
- 멀티프로세싱 구조를
spawn방식으로 변경하여 GPU 활용률 개선 - LLaVA-Next 모델로 이미지 캡셔닝 + 도표 해석 → 텍스트와 함께 저장
- EasyOCR로 표와 수식 추출 보완
4-2. PDF 텍스트 처리
- 텍스트 추출 시 구조적 정보 유지: 섹션, 캡션, 표 헤더 포함
- 깨진 문자 처리: 정규식 + 문장 단위 클린징
4-3. 임베딩 및 RAG
- 임베딩 모델: LLaMA 계열 + HuggingFace 모델
- 벡터 DB: ChromaDB
- RAG 성공 사례:
- 논문 질의응답 정확도 80% 이상
- 도표, 수식 질의 가능
- 연속 학습 없이도 최신 PDF 추가 가능
5. 사용 장비 및 환경
| 항목 | 상세 |
|---|---|
| OS | Mac Studio M1 Max 64GB (테스트), Ubuntu 24.04 서버 |
| CPU | Mac Studio 10코어 CPU, Threadripper 2920X |
| GPU | Mac Studio 32코어 GPU, RTX 3090 24GB, RTX 2060 8GB (보조) |
| 저장소 | 8TB 이상 PDF 파일 |
| DB | ChromaDB |
| 모델 | LLaVA-Next 7B, LLaMA 계열, HuggingFace 임베딩 모델 |
| OCR | EasyOCR, PaddleOCR |
| 기타 | 멀티프로세싱, spawn 초기화 구조, Docker 기반 서비스 |
6. 최근 진행 상황
- PDF + 이미지 + 도표 + 수식 통합 분석 가능
- 자동화 스크립트: PDF → OCR → 임베딩 → ChromaDB → LLM 연동
- WordPress 업로드 자동화 테스트 진행 중
- GPU 최적화 완료 → RTX 3090 100% 활용 가능
7. 실패와 교훈
- CPU 중심 OCR → 처리 속도 느림
- 멀티프로세싱 시 CUDA 충돌 → spawn 구조로 해결
- PDF 구조 다양성 → 구조 유지 전처리 필요
- 교훈: GPU 활용 최적화 없이는 대규모 PDF 분석 불가, OCR+LLM 조합 시 데이터 정합성 중요
8. 결론
- PDF 기반 RAG는 텍스트 + 이미지 + 도표 통합 처리 필수
- 멀티프로세싱 + GPU 최적화 필수
- ChromaDB + LLaVA 연동으로 질의응답, 요약, 자동 통계 가능
- 현재 시스템은 수십만 논문 처리 가능하며, 새로운 PDF 추가 시 자동 RAG 갱신 가능