728x90
지금까지 우리는 LangChain 기반 RAG 시스템을 구축하며,
문서 로딩부터 임베딩, 검색, GPT 응답 생성, 대화 메모리, 요약 전략까지 모두 다뤘습니다.
이제는 이 기능들을 하나로 통합하여:
- 📦 운영 가능한 RAG API 서버 구성
- 🐳 Docker로 컨테이너화
- 🧪 개발 → 운영 환경 이관을 위한 설정 전략까지 정리합니다.
실무 배포를 고려한 구조로, 팀에서 공유 가능한 RAG 플랫폼을 구축하는 것이 목표입니다.
🎯 목표
- RAG 서버 기능 통합 및 구조 정리
- Dockerfile 작성 및 실행
- 운영 환경 배포 전략 (예: 포트 구성, API Key 관리, 볼륨 마운트)
🗂️ 전체 프로젝트 구조 (예시)
rag-iceberg/
├── chroma_db/ # 벡터 DB 저장 디렉토리
├── docs/ # 원본 문서 (Iceberg 메타데이터 등)
├── src/
│ ├── rag_server.py # FastAPI 메인 서버
│ ├── conversational_chain.py # 대화형 체인 로직
│ ├── table_classifier.py # GPT 기반 테이블 분류
│ ├── utils.py # 유틸 함수
│ └── auth.py # API 인증 미들웨어
├── requirements.txt # 패키지 의존성
├── Dockerfile # Docker 컨테이너 정의
└── README.md
⚙️ Step 1. Dockerfile 작성
# 베이스 이미지: Python + 필요한 빌드 도구 포함
FROM python:3.10-slim
# 작업 디렉토리 설정
WORKDIR /app
# 로컬 파일 복사
COPY . /app
# 필수 패키지 설치
RUN pip install --upgrade pip && \
pip install -r requirements.txt
# FastAPI 앱 실행
CMD ["uvicorn", "src.rag_server:app", "--host", "0.0.0.0", "--port", "8000"]
⚙️ Step 2. requirements.txt 예시
fastapi
uvicorn
openai
langchain
chromadb
pydantic
tiktoken
python-dotenv
httpx
⚙️ Step 3. .env 설정 예시
OPENAI_API_KEY=sk-xxxxx
VALID_API_KEYS=my-secret-key
※ Python 내에서는 os.getenv()를 사용해 불러옵니다.
※ 민감 정보는 절대 Git에 커밋하지 않습니다!
🚀 Step 4. 로컬 Docker 실행
# 이미지 빌드
docker build -t rag-server .
# 컨테이너 실행
docker run -d -p 8000:8000 -v $(pwd)/chroma_db:/app/chroma_db rag-server
📎 운영 환경 고려사항 정리
항목 | 운영 전략 설명 |
API 인증 | Authorization 헤더 기반, .env로 키 관리 |
포트 구성 | 8000 → 80, 리버스 프록시 구성 (예: Nginx) |
TLS | Nginx + certbot 또는 API Gateway 사용 |
문서 스토리지 | S3 or NFS로 외부 볼륨 마운트 |
벡터 DB 위치 | EBS or 마운트된 디스크로 데이터 지속성 확보 |
LLM 키 관리 | .env 또는 Vault / Secret Manager 사용 권장 |
로깅 및 모니터링 | FastAPI + Prometheus + Grafana 연동 가능 |
📎 요약 및 핵심 정리
- 지금까지 구현한 모든 RAG 기능을 FastAPI 서버로 통합하고
- Docker 컨테이너로 배포 가능한 형태로 구조화했습니다.
- 운영 환경에서는 인증, 저장소, LLM 키 관리, TLS, 로그 구성 등 다양한 요소를 고려해야 합니다.
- 이로써 LangChain 기반 RAG 시스템을 팀 단위로 실서비스에 활용할 수 있는 기반이 마련됩니다.
728x90
'LLM & Generative AI > RAG in Practice' 카테고리의 다른 글
📚 LangChain 기반 RAG 구축 시리즈 총정리 (1) | 2025.04.05 |
---|---|
[LangChain RAG 구축 시리즈 Ep.28] 🧵 멀티 테이블 + 대화형 흐름을 위한 Memory 설계 전략 (1) | 2025.04.05 |
[LangChain RAG 구축 시리즈 Ep.27] 🔄 GPT를 활용한 질문 → 테이블 자동 매핑 고도화 전략 (1) | 2025.04.05 |
[LangChain RAG 구축 시리즈 Ep.26] 🧩 멀티 테이블 구조에 맞춘 자동 컬렉션 선택 및 태깅 전략 (1) | 2025.04.05 |
[LangChain RAG 구축 시리즈 Ep.25] 🛡️ 사용자 인증이 포함된 RAG API 구성 전략 (1) | 2025.04.05 |