1 Azure RAG 파이프라인이란?
Azure RAG(Retrieval-Augmented Generation)은 Microsoft Azure 클라우드 서비스를 활용하여 구축하는 엔터프라이즈급 질의응답 시스템이다. 기존 로컬 환경의 RAG와 달리, Azure의 관리형 서비스들을 조합하여 확장 가능하고 안정적인 프로덕션 시스템을 구축할 수 있다.
핵심 가치:
- 완전 관리형: 인프라 관리 부담 없이 비즈니스 로직에 집중
- 엔터프라이즈급 보안: Azure AD, RBAC, Private Endpoint 등 기업용 보안 기능
- 글로벌 확장성: 전 세계 Azure 리전을 활용한 자동 스케일링
- 통합 생태계: Azure 서비스 간 네이티브 통합으로 빠른 개발
2 Azure RAG 아키텍처
전체 파이프라인은 문서 수집부터 질의응답까지 9단계로 구성된다:
graph TB
A[Azure Blob Storage<br/>비정형 문서 저장] --> B[Document Intelligence<br/>OCR & 레이아웃 분석]
B --> C[Azure OpenAI Embeddings<br/>문서 임베딩 생성]
C --> D[Azure AI Search<br/>벡터 스토어 저장]
D --> E[LangChain/LangGraph<br/>RAG 로직 구현]
E --> F[Azure OpenAI LLM<br/>컨텍스트 기반 응답 생성]
F --> G{배포 방식 선택}
G -->|서버리스| H[Azure Functions<br/>이벤트 기반 실행]
G -->|컨테이너| I[Azure Container Apps<br/>항시 실행]
H --> J[End-User]
I --> J
style A fill:#e1f5ff
style B fill:#fff4e1
style C fill:#ffe1f5
style D fill:#e1ffe1
style E fill:#f5e1ff
style F fill:#ffe1e1
style H fill:#e1e1ff
style I fill:#ffe1cc 3 주요 Azure 서비스 소개
3.1 Azure Blob Storage
역할: 비정형 문서 저장소
- PDF, Word, Excel, 이미지 등 다양한 형식의 문서 저장
- 계층형 스토리지(Hot/Cool/Archive)로 비용 최적화
- 대용량 파일 업로드 및 버전 관리
사용 이유:
- 안정적이고 확장 가능한 클라우드 스토리지
- Azure 서비스와의 완벽한 통합
- 저렴한 비용 (GB당 $0.018/월부터)
3.2 Document Intelligence (구 Form Recognizer)
역할: OCR 및 문서 레이아웃 분석
- 스캔 문서, 이미지에서 텍스트 추출
- 표, 제목, 단락 등 문서 구조 인식
- 한국어를 포함한 100개 이상 언어 지원
사용 이유:
- 높은 OCR 정확도 (한국어 95% 이상)
- 문서 레이아웃 유지로 컨텍스트 보존
- API 기반으로 쉬운 통합
3.3 Azure OpenAI Service
역할: 임베딩 생성 및 LLM 질의응답
Embeddings 모델:
- text-embedding-ada-002: 1536차원, 범용
- text-embedding-3-small: 512/1536차원, 빠른 속도
- text-embedding-3-large: 256~3072차원, 최고 성능
LLM 모델:
- gpt-4o: 최신 멀티모달 모델
- gpt-4-turbo: 빠른 속도, 128K 컨텍스트
- gpt-35-turbo: 비용 효율적
사용 이유:
- 엔터프라이즈 SLA 보장 (99.9% 가동률)
- 데이터 주권 준수 (한국 리전 사용 시 데이터가 한국에 유지)
- Azure AD 통합 인증
3.4 Azure AI Search (구 Azure Cognitive Search)
역할: 벡터 스토어 및 하이브리드 검색
- 벡터 검색 + 전문 검색 하이브리드 지원
- 시맨틱 랭킹으로 검색 품질 향상
- 자동 인덱싱 및 스케일링
사용 이유:
- 네이티브 하이브리드 검색 (키워드 + 벡터)
- 엔터프라이즈급 보안 및 규정 준수
- Azure 서비스와의 완벽한 통합
3.5 LangChain & LangGraph
역할: RAG 로직 구현 프레임워크
LangChain:
- 문서 로딩, 분할, 임베딩 파이프라인
- 체인 구성으로 복잡한 워크플로우 구현
- Azure 서비스 통합 커넥터 제공
LangGraph:
- 상태 기반 워크플로우 관리
- 멀티 에이전트 협업
- 조건부 분기 및 루프 처리
사용 이유:
- 검증된 RAG 구현 패턴
- Azure 네이티브 통합
- 활발한 커뮤니티와 풍부한 예제
3.6 Azure Functions
역할: 서버리스 RAG 배포
- 이벤트 기반 실행 (HTTP, Blob Trigger 등)
- 자동 스케일링 (0에서 수천 인스턴스까지)
- 종량제 과금 (실행 시간만 비용 청구)
사용 이유:
- 간헐적 사용 시 비용 효율적
- 인프라 관리 불필요
- 빠른 배포 및 업데이트
3.7 Azure Container Apps
역할: 컨테이너 기반 RAG 배포
- 항시 실행되는 API 서버 호스팅
- Kubernetes 기반 자동 스케일링
- 멀티 컨테이너 앱 지원
사용 이유:
- 지속적 트래픽 처리에 적합
- 복잡한 종속성 관리 용이
- 컨테이너 표준 활용
4 Azure RAG vs 로컬 RAG 비교
| 항목 | 로컬 RAG | Azure RAG |
|---|---|---|
| 인프라 관리 | 직접 관리 필요 | 완전 관리형 |
| 확장성 | 수동 스케일링 | 자동 스케일링 |
| 비용 | 고정 비용 (서버 구매) | 사용량 기반 (종량제) |
| 보안 | 자체 구현 | 엔터프라이즈급 내장 |
| 고가용성 | 직접 구성 | 99.9% SLA 보장 |
| 글로벌 배포 | 어려움 | 전 세계 리전 활용 |
| 모니터링 | 별도 도구 필요 | Azure Monitor 통합 |
| 비용 예측 | 명확 | 변동 가능 |
로컬 RAG가 적합한 경우:
- 데이터 외부 유출 절대 불가
- 고정적이고 예측 가능한 워크로드
- 클라우드 비용 부담
Azure RAG가 적합한 경우:
- 엔터프라이즈급 보안 및 규정 준수 필요
- 가변적인 트래픽 패턴
- 빠른 개발 및 배포
- 글로벌 서비스 제공
5 Azure RAG 구축 단계별 가이드
5.1 1단계: 문서 저장 (Azure Blob Storage)
- Storage Account 생성
- 컨테이너 설정 및 문서 업로드
- 액세스 정책 및 SAS 토큰 관리
5.2 2단계: 문서 분석 (Document Intelligence)
- Document Intelligence 리소스 생성
- Layout 또는 Read API를 통한 OCR
- 테이블, 제목, 단락 구조 추출
5.3 3단계: 임베딩 생성 (Azure OpenAI)
- Azure OpenAI 리소스 및 배포 생성
- Embeddings 모델 선택 (ada-002, text-embedding-3)
- 문서 청크 임베딩 생성
5.4 4단계: 벡터 저장 (Azure AI Search)
- Azure AI Search 서비스 생성
- 인덱스 스키마 정의 (벡터 필드 포함)
- 벡터 및 메타데이터 업로드
5.5 5단계: RAG 로직 구현 (LangChain/LangGraph)
- LangChain으로 기본 RAG 체인 구성
- LangGraph로 복잡한 워크플로우 구현
- 프롬프트 엔지니어링 및 최적화
5.6 6단계: 질의응답 생성 (Azure OpenAI LLM)
- GPT-4 또는 GPT-3.5 Turbo 배포
- 시스템 프롬프트 설정
- 스트리밍 응답 구현
5.7 7단계: 서버리스 배포 (Azure Functions)
- Python Function App 생성
- HTTP 트리거 함수 구현
- 환경 변수 및 시크릿 관리
5.8 8단계: 컨테이너 배포 (Azure Container Apps)
- Docker 이미지 빌드
- Container Registry 푸시
- Container Apps 배포 및 스케일링 설정
5.9 9단계: 전체 통합 (End-to-End)
- 전체 파이프라인 통합 테스트
- 모니터링 및 로깅 설정
- 성능 최적화 및 비용 관리
6 비용 예측
6.1 예제 시나리오: 월 10,000회 질의응답
Azure Blob Storage:
- 10GB 문서 저장: $0.18/월 (Hot tier)
- 10,000회 읽기: $0.004/월
- 소계: $0.18/월
Document Intelligence:
- 1,000페이지 OCR (초기 한 번): $1.50
- 소계: $1.50 (초기 비용)
Azure OpenAI Embeddings:
- 10,000 문서 청크 (초기 한 번): $0.40
- 소계: $0.40 (초기 비용)
Azure AI Search:
- Basic 계층 (15GB): $73.73/월
- 10,000회 검색 쿼리: 포함됨
- 소계: $73.73/월
Azure OpenAI LLM:
- GPT-4o: 10,000 요청 × (입력 1,000토큰 + 출력 500토큰)
- 입력: 10M 토큰 × $2.50/1M = $25
- 출력: 5M 토큰 × $10/1M = $50
- 소계: $75/월
Azure Functions (서버리스 배포):
- 10,000 실행: 무료 (월 100만 실행 무료)
- 실행 시간: $0.20/월
- 소계: $0.20/월
총 예상 비용: 초기 $1.90 + 월 $149.31
비용 최적화 팁:
- GPT-3.5-Turbo 사용 시 LLM 비용 80% 절감
- 캐싱 전략으로 중복 쿼리 비용 절감
- Azure AI Search Free 계층으로 시작 (개발/테스트)
7 보안 및 규정 준수
7.1 데이터 주권
- 리전 선택: 데이터가 물리적으로 저장되는 위치 제어
- 한국 리전: Korea Central, Korea South (데이터가 한국 내에만 유지)
- 데이터 레지던시: 금융권, 공공기관 규제 준수
7.2 인증 및 권한 관리
- Azure AD 통합: 기업 SSO 연동
- Managed Identity: 코드에 시크릿 노출 없이 안전한 인증
- RBAC: 세밀한 역할 기반 액세스 제어
7.3 네트워크 보안
- Private Endpoint: 인터넷 노출 없이 Azure 서비스 접근
- VNet 통합: 기업 내부 네트워크와 안전한 연결
- NSG: 네트워크 수준 트래픽 제어
7.4 규정 준수 인증
- ISO 27001, SOC 2, GDPR, HIPAA 등 준수
- 금융권 ISMS-P, 전자금융감독규정 대응 가능
- 정기 감사 및 취약점 스캔 자동화
8 모니터링 및 운영
8.1 Azure Monitor 통합
from azure.monitor.opentelemetry import configure_azure_monitor
from opentelemetry import trace
# Application Insights 연동
configure_azure_monitor(
connection_string="InstrumentationKey=xxx"
)
tracer = trace.get_tracer(__name__)
# RAG 실행 추적
with tracer.start_as_current_span("rag_query"):
# RAG 로직 실행
result = rag_chain.invoke({"query": question}) 8.2 주요 모니터링 메트릭
- 성능: 응답 시간, 처리량, 대기 시간
- 비용: 서비스별 비용 추적, 예산 알람
- 오류: 실패율, 예외 발생 빈도
- 사용자: 동시 사용자 수, 요청 패턴
8.3 로깅 전략
- 구조화 로깅: JSON 형식으로 검색 및 분석 용이
- 로그 수준: DEBUG, INFO, WARNING, ERROR, CRITICAL
- 민감 정보 마스킹: PII 데이터 자동 제거
9 참고 자료
9.1 공식 문서
9.2 아키텍처 가이드
9.3 샘플 코드
9.4 커뮤니티
10 다음 단계
- 문서 저장 시작하기 → 01-Azure-Blob-Storage.qmd
- 문서 OCR 알아보기 → 02-Document-Intelligence.qmd
- 임베딩 생성하기 → 03-Azure-OpenAI-Embeddings.qmd