"μλΌ"λ νκ΅κ³΅ν곡μ¬(KAC) μμ±ν AI κΈ°λ° κ³ κ°μλ΄ μ±λ΄ κ³ λν μ¬μ μμ μκ°μ λ°μ κ°λ°λ μΈμ²κ³΅ν AI μ±λ΄ μλΉμ€μ λλ€.
- π§ AI κΈ°λ° μλ λΆμ: KoBERT λͺ¨λΈμ νμ©ν 99.7% μ νλμ μλ μΈμ
- β‘ μ€μκ° λ°μ΄ν° μ°λ: 곡곡λ°μ΄ν° API μ€μκ° μ‘°νλ‘ μ΅μ μ 보 μ 곡
- π― λ³΅ν© μ§λ¬Έ μ²λ¦¬: κΈ°μ‘΄ ν€μλ λ§€μΉ λ°©μμ λμ΄μ λ§₯λ½μ μ΄ν΄
- π¬ μμ°μ€λ¬μ΄ λν: GPT-4o-mini κΈ°λ° κ³΅ν μ§μ νλ₯΄μλ μ μ©
flowchart TB
subgraph ai["AI μλ λΆμ & μ²λ¦¬"]
B["KoBERT<br/>μλ λΆμ"]
C["λ³΅ν© μ§λ¬Έ<br/>λΆλ¦¬"]
D["μ§λ¬Έ μ νλ³<br/>μ²λ¦¬"]
E["GPT-4o<br/>fallback"]
end
subgraph data["λ°μ΄ν° κ²μ"]
F["μ€μκ° API<br/>μ‘°ν"]
G["MongoDB RAG<br/>κ²μ"]
end
A["μ¬μ©μ μ§λ¬Έ"] --> B
H["μ΅μ’
μλ΅ μμ±<br/>GPT-4o-mini"]
B --> C
B --> D
B --> E
C --> D
E --> D
D --> F
D --> G
F --> H
G --> H
classDef userStyle fill:#FFEBEE,stroke:#E53E3E,stroke-width:3px,color:#000
classDef aiStyle fill:#E3F2FD,stroke:#1976D2,stroke-width:3px,color:#000
classDef processStyle fill:#E8F5E8,stroke:#4CAF50,stroke-width:3px,color:#000
classDef dataStyle fill:#F3E5F5,stroke:#9C27B0,stroke-width:3px,color:#000
classDef outputStyle fill:#FFF3E0,stroke:#FF9800,stroke-width:3px,color:#000
class A userStyle
class B aiStyle
class C,D,E processStyle
class F,G dataStyle
class H outputStyle
- μλ μΈμ μ νλ: 99.7% (5,396κ° κ³΅ν μ§λ¬Έ λ°μ΄ν° νμ΅)
- μ§μ μλ μΉ΄ν κ³ λ¦¬: 17κ° (ν곡νΈ, μ£Όμ°¨μ₯, μμ€, λ μ¨ λ±)
- μ€μκ° λ°μ΄ν° μ°λ: 곡곡λ°μ΄ν°ν¬νΈ API
π μ¬μ©μ μΈν°νμ΄μ€
βββββββββββββββββββ
β β’ μΉ λΈλΌμ°μ β
β β’ μ€μκ° μ±ν
β
βββββββββββ¬ββββββββ
β
βΌ
π± νλ‘ νΈμλ μλ² (Next.js)
βββββββββββββββββββββββββββββββ
β β’ Server-Side Rendering β
β β’ WebSocket μ€μκ° ν΅μ β
βββββββββββββββ¬ββββββββββββββββ
β REST API
βΌ
π₯οΈ λ°±μλ μλ² (Spring Boot)
ββββββββββββββββββββββββββββββββββββββββ
β β’ JWT + OAuth 2.0 μΈμ¦ β
β β’ PostgreSQL (μ¬μ©μ/μΈμ
) β
β β’ MongoDB (μ±ν
λ©μμ§) β
β β’ Redis (ν ν° μΊμ) β
βββββββββββββββ¬βββββββββββββββββββββββββ
β API νΈμΆ
βΌ
π€ AI μλ² (Django + Gunicorn + Nginx)
βββββββββββββββββββββββββββββββββββββββ
β π§ KoBERT (μλ λΆμ) β
β π¬ GPT-4o-mini (μλ΅ μμ±) β
β π MongoDB Vector Search (RAG) β
β β‘ Django Redis Cache β
βββββββββββββββ¬ββββββββββββββββββββββββ
β
βββββββββββββ΄βββββββββββββββββββββββββββββββββ
βΌ βΌ
π μ€μκ° API μ°λ π MongoDB RAG DB
βββββββββββββββββββ ββββββββββββββββββββ
β ⒠곡곡λ°μ΄ν°ν¬νΈ β β ⒠곡ν μ μ±
λ¬Έμ β
β β’ κΈ°μμ² API β β β’ μμ€ μ 보 β
βββββββββββββββββββ β β’ λ²‘ν° μλ² λ© β
β β’ μ μ¬λ κ²μ β
ββββββββββββββββββββ
βοΈ Azure Cloud Platform
Docker + Azure DevOps CI/CD
- ν곡νΈλͺ μΌλ‘ νλμ μ‘°ν (μ: "KE077 μΈμ μΆλ°ν΄?")
- μ€μκ° μΆλ°/λμ°© νκ³΅νΈ νν©
- κ²μ΄νΈ μ 보 λ° ν°λ―Έλ μλ΄
- T1/T2 ν°λ―Έλλ³ μ£Όμ°¨ κ°λ₯ λμ
- μ£Όμ°¨ μκΈ μ μ± λ° ν μΈ νν μλ΄
- μ£Όμ°¨μ₯ μμΉ
- κΈ°λ΄/μν μνλ¬Ό κ·μ
- μ€μκ° μνλ¬Ό μμ·¨λ μ 보
- μΈμ²κ³΅ν μ€μκ° λ μ¨ μ 보
- 곡ν λ΄ νΈμμμ€ μμΉ μλ΄
- μΌν, μλΉ, λΌμ΄μ§ μ 보
- Next.js 15: Server-Side Rendering
- React 18: μ»΄ν¬λνΈ κΈ°λ° UI
- WebSocket/STOMP: μ€μκ° μ±ν ν΅μ
- Docker: 컨ν μ΄λν λ°°ν¬
- Spring Boot: RESTful API μλ²
- PostgreSQL: μ¬μ©μ λ°μ΄ν° κ΄λ¦¬
- MongoDB: μ±ν λ©μμ§ μ μ₯
- JWT + OAuth 2.0: Google λ‘κ·ΈμΈ μ°λ
- Redis: JWT ν ν° μΊμ κ΄λ¦¬
- Django: AI μλ² νλ μμν¬
- KoBERT: νκ΅μ΄ νΉν μλ λΆμ
- GPT-4o-mini: μμ°μ€λ¬μ΄ μλ΅ μμ±
- MongoDB Vector Search: RAG κΈ°λ° μ§μ κ²μ
- Gunicorn + Nginx: κ³ μ±λ₯ μλ² κ΅¬μ±
- Azure Cloud: ν΄λΌμ°λ κΈ°λ° λ°°ν¬
- Azure DevOps: CI/CD νμ΄νλΌμΈ
- μλ λΆμ μ νλ: 99.7%
- νμ΅ λ°μ΄ν°: 5,396κ° κ³΅ν κ΄λ ¨ μ§μμλ΅
- μ§μ μΈμ΄: νκ΅μ΄
| κ΅¬λΆ | κΈ°μ‘΄ μΈμ²κ³΅ν μ±λ΄ | π μλΌ(Ara) |
|---|---|---|
| μ²λ¦¬ λ°©μ | ν€μλ λ§€μΉ | AI μλ λΆμ |
| λ³΅ν© μ§λ¬Έ | β μ²λ¦¬ λΆκ° | β λ§₯λ½μ μ΄ν΄ |
| μ€μκ° μ 보 | β 504 μλ¬ | β μ€μκ° API μ°λ |
| λν κΈ°μ΅ | β μμ | β λν λ§₯λ½ μ μ§ |
| μλ΅ λ°©μ | μΉμ¬μ΄νΈ λ§ν¬, ν μ€νΈ | β μ§μ λ΅λ³ μ 곡 |
