1 프로젝트 개요
과제명: AI Agent 기반 지능형 기술 지식 플랫폼 구축
1.1 문제 배경
- 지식 파편화(사일로화), 정보 탐색 비효율, 인력 이탈로 인한 업무 병목
- 암묵지 의존으로 인수인계 부하 및 기술 부채 증가
1.2 3가지 핵심 개발 목표
| # | 기능 | 지표 |
|---|---|---|
| 1 | 지식 QnA Chatbot - 기존 문서 행간 해석 AI | 데이터 표준화 원칙 100% 명시화 |
| 2 | 데이터 표준화 도우미 Agent - 메타데이터 자동화 | 물리명/설명/데이터타입 3종 추천 |
| 3 | 인실리코 알고리즘 분석 Agent - 코드 투명성 확보 | 인실리코 코드 분석 100% 커버 |
1.3 시스템 아키텍처
[FE] → [LB] → [Backend/Java] → [AI Engine (K8s/Docker)]
↓
RAG (FastAPI)
├── Azure OpenAI Embeddings
├── Azure Document Intelligence (문서 파싱)
├── Vector Store (Azure AI Search)
├── Rule-Based Engine (AST/CFG Parser 등)
└── Data-Driven Engine (DL/ML 모델)
↓
LLM (Azure OpenAI, OpenAI, HuggingFace 등)
↓
Data Storage (SQL DW, MySQL, Data Lake)
[Monitoring] Azure Monitor + Log Analytics + Cost Management
1.4 현재 워크스페이스와의 연관성
이 아키텍처의 Streamlit 기반 프로토타입으로 독립적으로 개발하고 후에 추상화하여 통합할 예정: - 1_QnA_Chatbot.py → 목표 1 (지식 QnA) - 2_Data_Standardizer.py → 목표 2 (데이터 표준화 Agent) - 3_Code_Analyzer.py → 목표 3 (인실리코 분석 Agent)
2 과제 규모 추정
중대형 엔터프라이즈 AI 프로젝트 (6~18개월, 팀 5~10명 수준)
2.1 개발 범위
- 3개 AI Agent (QnA Chatbot, 데이터 표준화, 코드 분석)
- Full-Stack: FE + Java Backend + AI Engine(Python) + Data Pipeline
- 현재 프로토타입 → 프로덕션 전환 수준의 작업
3 필요 인프라
3.1 Azure 핵심 서비스
| 서비스 | 용도 | 예상 티어 |
|---|---|---|
| Azure OpenAI | LLM + Embeddings (text-embedding-3-large) | PTU 또는 Standard |
| Azure AI Search | Vector Store (RAG 근거 검색) | Standard S1+ |
| Azure Document Intelligence | PDF/문서 파싱 | S0+ |
| Azure Kubernetes Service (AKS) | AI Engine 컨테이너 오케스트레이션 | Standard B/D 시리즈 |
| Azure Container Registry | Docker 이미지 관리 | Basic/Standard |
| Azure SQL / Synapse | Data Warehouse | General Purpose |
| Azure Data Lake Storage | 비정형 데이터 저장 | Gen2 |
| Azure Monitor + Log Analytics | 모니터링 | Pay-as-you-go |
| Azure Cost Management | 비용 추적 | 무료 |
3.2 추가 인프라
Apache Airflow - 데이터 파이프라인 오케스트레이션
Load Balancer - 트래픽 분산 (Azure Application Gateway)
Java Backend - Spring Boot 기반 API Gateway
FastAPI - AI Engine REST API
MySQL - 운영 DB (메타데이터 등)
4 리소스 요구사항
4.1 컴퓨팅 (AKS 기준)
| 컴포넌트 | 스펙 | 이유 |
|---|---|---|
| AI Engine Pod | CPU 4코어 / 16GB RAM | FastAPI + RAG 처리 |
| Rule-Based Engine | CPU 8코어 / 32GB RAM | 메타데이터 파싱 부하 |
| Data-Driven Engine | GPU (A100/T4) | DL 모델 추론 |
| Backend (Java) | CPU 2코어 / 8GB RAM | API 처리 |
4.2 비용 추정 (월간, Azure Korea 기준)
Azure OpenAI (GPT-4o) ~$500~2,000 (사용량에 따라 변동)
Azure AI Search (S1) ~$250
AKS 클러스터 ~$300~800
Azure SQL / ADLS ~$200
Document Intelligence ~$150
기타 (모니터링, 네트워크 등) ~$200
─────────────────────────────────────
총계 (추정) ~$1,600~3,600/월
5 현재 PoC 상태 vs 목표 Gap
| 항목 | 현재 (프로토타입) | 목표 (프로덕션) |
|---|---|---|
| UI | Streamlit | React/Vue FE + Java Backend |
| 배포 | 로컬 | AKS (K8s + Docker) |
| LLM | 단일 Provider | Multi-LLM (OpenAI, HuggingFace 등) |
| 문서 파싱 | 기본 | Azure Document Intelligence |
| 파이프라인 | 없음 | Apache Airflow |
| 모니터링 | 없음 | Azure Monitor + Log Analytics |
5.1 현재 PoC 상태
(2026-02-20 기준)
src/agent/ ├── app.py ✅ 완성 (메인 진입점, Streamlit multipage) ├── styles.css ✅ 완성 ├── config/ ✅ 완성도 높음 │ ├── settings.py ✅ RAG 실험 설정 전체 구현 (461줄) │ ├── env_loader.py ✅ Azure/Local 환경변수 중앙 관리 │ └── llm_config.py ✅ ├── shared/ ✅ 핵심 인프라 완성 │ ├── llm/provider.py ✅ Azure OpenAI ↔︎ Local(Ollama) 추상화 │ ├── rag/ │ │ ├── chatbot_retriever.py ✅ 문서 로더(PDF/Markdown), 청킹, 검색 (331줄) │ │ └── vectorstore_provider.py ✅ Azure AI Search ↔︎ FAISS 추상화 │ ├── metrics/experiment_metrics.py ✅ RAG 성능 측정 메트릭 구현 (394줄) │ ├── ui/ ❌ 비어있음 │ └── utils/ ❌ 비어있음 ├── pages/ │ ├── 1_QnA_Chatbot.py ✅ 가장 완성도 높음 (1306줄) - RAG 완전 구현 (추상화 전) │ ├── 2_Data_Standardizer.py ❌ UI 껍데기만 (분석 기능 미구현) │ └── 3_Code_Analyzer.py ❌ UI 껍데기만 (분석 기능 미구현) ├── agent_qna_chatbot/ │ └── modules/ │ └── docstring-generator.py ❌ 빈 파일 ├── prompts/ ✅ │ ├── chatbot_data_standardization_rules.yml ✅ │ ├── data_standardizer.yml ✅ │ └── code_analyzer.yml ✅ └── tests/ ❌ init.py만 존재 (테스트 없음)
5.2 기능별 완성도
| 기능 | 완성도 | 상태 |
|---|---|---|
| 인프라 (LLM/VectorStore 추상화) | 90% | Azure/Local 전환 가능, 잘 설계됨 |
| QnA Chatbot (Page 1) | 70% | RAG 동작, 실험 메트릭 수집, 문서 선택 UI |
| 데이터 표준화 (Page 2) | 5% | UI 껍데기만, 로직 전무 |
| 코드 분석기 (Page 3) | 5% | UI 껍데기만, 로직 전무 |
| Docstring Generator | 0% | 빈 파일 |
| 테스트 코드 | 0% | 없음 |
| shared/ui, shared/utils | 0% | 없음 |
6 개발 로드맵
| 원칙 | 의미 |
|---|---|
| POC 우선 | 추상화는 나중에, 지금은 기능 검증 |
| 계약 기반 확장 | Phase 2 계약대로 agent를 찍어냄 |
| Multi-repo Monolithic | repo는 분리, 각 repo 내부는 monolithic |
| Sub-agent 허용 | main agent 아래 evaluator/helper 다수 가능 |
| 오버스펙 방지 | 실제 필요한 것만 공통화 |
6.1 Phase 1 - POC (현재 ~ 3개월)
- 3개 Agent 독립적으로 개발 (공유 의존성 최소화)
- 공유 자원: Streamlit UI만
- 목표: 기능 검증, 오버스펙 방지
pages/ ← UI만 공유
├── 1_QnA_Chatbot ← 독립 POC
| └── sub-agents (evaluator, helper 등)
├── 2_Data_Std ← 독립 POC
| └── sub-agents (evaluator, helper 등)
└── 3_Code_Analyzer ← 독립 POC
└── sub-agents (evaluator, helper 등)
6.2 Phase 2 - 추상화 (POC 결과 기반)
- 3개 POC에서 실제로 반복된 패턴만 공통 모듈로 추출
- Agent 생애주기(lifecycle) 계약 정의
- 성능 평가 지표 표준화
contract/
├── BaseAgent ← 모든 Agent가 따르는 계약
├── AgentLifecycle ← 공통 생애주기
└── EvalMetrics ← 공통 성능 평가
6.3 Phase 3 - Multi-Repo Monolithic 확장
repo: agent-qna/ ← Main Agent 1
└── sub-agents/
├── retriever-agent
├── reranker-agent
└── evaluator-agent
repo: agent-data-std/ ← Main Agent 2
└── sub-agents/
└── validator-agent
repo: agent-code-analyzer/ ← Main Agent 3
└── sub-agents/
├── ast-agent
└── docstring-agent
repo: agent-commons/ ← Phase 2에서 추출한 공통 계약/모듈
7 현재 PoC기준 Azure 자원 이용 현황
7.1 Resource Group:
rg-aipoc-test-krc-001 (테스트 구독)
7.1.1 구축된 리소스 전체 목록
| 리소스명 | 타입 | 리전 | 용도 |
|---|---|---|---|
test-agent |
VM (D8as v5) | Korea Central | Streamlit 앱 실행 서버 |
aipoc-code-analyzer-krc-001 |
Azure OpenAI | Korea Central | LLM (주) |
aipoc-code-analyzer-krc-002 |
Azure OpenAI | Sweden Central | LLM (백업/분산) |
aipoc-code-analyzer-krc-003 |
Azure OpenAI | East US | LLM (백업/분산) |
di-aipoc-test-krc-001 |
Document Intelligence | Korea Central | 문서 파싱 |
vdb-aipoc-test-krc-001 |
Search service | Korea Central | Vector DB (Azure AI Search) |
saaipoctestkrc001 |
Storage account | Korea Central | 파일 저장 |
privatelink.openai.azure.com |
Private DNS zone | Global | OpenAI Private 통신 |
pe-aipoc-code-analyzer-krc-001 |
Private endpoint | Korea Central | OpenAI 보안 접속 |
pe-aipoc-code-analyzer-krc-003 |
Private endpoint | East US | OpenAI 보안 접속 |
vnet-aipoc-test-krc-insilico-001 |
Virtual network | Korea Central | 주 네트워크 |
vnet01~vnet01-4 |
Virtual networks | 다중 리전 | 리전간 네트워크 피어링 |
7.2 아키텍처
인터넷
│
▼
[VM: test-agent] Public IP: 20.196.144.16
│ (Ubuntu 24.04, 8vCPU/32GB)
│ → Streamlit 앱 구동
│
└── Private Network (172.16.0.4)
│
├── [Private Endpoint] → Azure OpenAI (KRC) ← 주 LLM
│ → Azure OpenAI (EUS) ← 분산 (특정 LLM의 배포유형이 서비스 지역에 따라 배포 제한이 있음)
│ (Sweden는 Public 접속)
│
├── [Azure AI Search] → Vector DB (RAG용)
├── [Document Intelligence] → 문서 파싱
└── [Storage Account] → 파일/데이터 저장
7.3 핵심 포인트 설명
1. Azure OpenAI를 3개 리전에 배포한 이유 - Azure OpenAI는 리전별 TPM(분당 토큰) 쿼터 제한이 있는 것으로 파악됨 - Korea Central 할당량이 부족하거나 너무 지연시간이 길면 Sweden/East US로 분산 - provider.py의 LLM_PROVIDER 환경변수로 전환 가능하게 설계할 것
2. Private Endpoint를 쓰는 이유 - Azure OpenAI를 인터넷 노출 없이 VM → Private IP로 직접 통신 - privatelink.openai.azure.com DNS zone이 이를 내부 라우팅 처리 - 보안 강화 + 네트워크 트래픽 비용 절감
3. VM 스펙 (D8as v5: 8vCPU/32GB) - Streamlit + RAG 파이프라인 동시 처리에 충분한 스펙 - GPU는 없음 → 현재는 Azure OpenAI API 호출만, 로컬 모델 추론은 불가
7.4 POC 관점에서 이 인프라 평가
| 항목 | 평가 |
|---|---|
| LLM 다중화 | ✅ 3리전으로 쿼터 문제 대비 |
| 보안 | ✅ Private Endpoint 적용 |
| VM 스펙 | ✅ POC에 충분 |
| Vector DB | ✅ Azure AI Search 준비 완료 |
| 문서 파싱 | ✅ Document Intelligence 준비 완료 |
| GPU | ❌ 없음 (로컬 모델 불가, API 전용) |
| K8s/AKS | ❌ 없음 (향후 필요) |