Skip to content

Commit 47ee205

Browse files
add mini_rag
1 parent 34a9d65 commit 47ee205

30 files changed

+2145
-116
lines changed

mini_rag/IMAGE_ANALYSIS_GUIDE.md

Lines changed: 210 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,210 @@
1+
# 🖼️ AWS 다이어그램 이미지 해석 가이드
2+
3+
이 가이드는 mini_rag 시스템의 이미지 해석 기능을 사용하는 방법을 설명합니다.
4+
5+
## 📋 기능 개요
6+
7+
이미지 해석 기능은 AWS 아키텍처 다이어그램을 분석하여 구조화된 정보를 추출하고 상세한 해설을 제공합니다.
8+
9+
### 주요 기능
10+
- **OCR 텍스트 추출**: 이미지에서 텍스트 자동 인식
11+
- **아이콘 인식**: AWS 서비스 아이콘 자동 탐지
12+
- **구조화 분석**: JSON 형태로 정리된 아키텍처 정보
13+
- **상세 해설**: LLM 기반 자연어 해설
14+
15+
## 🚀 사용 방법
16+
17+
### 1. 이미지 업로드
18+
- AWS 아키텍처 다이어그램 이미지를 업로드합니다
19+
- 지원 형식: PNG, JPG, JPEG, GIF
20+
- 권장 해상도: 800x600 이상
21+
22+
### 2. OCR 보강 설정
23+
- **체크**: 이미지에서 텍스트를 자동으로 추출합니다
24+
- **해제**: 텍스트 추출 없이 아이콘만 분석합니다
25+
26+
### 3. 아이콘 탐지 JSON (선택사항)
27+
AWS 서비스 아이콘과 연결 관계를 JSON 형태로 입력할 수 있습니다.
28+
29+
#### 기본 형식
30+
```json
31+
{
32+
"icons": [
33+
{
34+
"type": "aws_service",
35+
"name": "Amazon S3",
36+
"confidence": 0.95,
37+
"bbox": [100, 150, 200, 250],
38+
"description": "Simple Storage Service - 객체 저장소"
39+
}
40+
],
41+
"connections": [
42+
{
43+
"from": "Amazon S3",
44+
"to": "AWS Lambda",
45+
"type": "trigger",
46+
"description": "S3 이벤트가 Lambda 함수를 트리거"
47+
}
48+
],
49+
"metadata": {
50+
"diagram_type": "architecture",
51+
"region": "us-east-1",
52+
"description": "이미지 처리 파이프라인 아키텍처"
53+
}
54+
}
55+
```
56+
57+
#### JSON 필드 설명
58+
59+
**icons 배열:**
60+
- `type`: "aws_service" (고정값)
61+
- `name`: AWS 서비스 이름 (예: "Amazon S3", "AWS Lambda")
62+
- `confidence`: 신뢰도 (0.0~1.0)
63+
- `bbox`: [x1, y1, x2, y2] 좌표 (선택사항)
64+
- `description`: 서비스 설명
65+
66+
**connections 배열:**
67+
- `from`: 출발 서비스명
68+
- `to`: 도착 서비스명
69+
- `type`: 연결 유형
70+
- `trigger`: 이벤트 트리거
71+
- `origin`: 오리진 서버
72+
- `target`: 대상 서비스
73+
- `data`: 데이터 전송
74+
- `description`: 연결 설명
75+
76+
**metadata 객체:**
77+
- `diagram_type`: 다이어그램 유형
78+
- `region`: AWS 리전
79+
- `description`: 전체 다이어그램 설명
80+
81+
### 4. 추가 컨텍스트 (선택사항)
82+
다이어그램에 대한 추가 설명이나 컨텍스트를 입력합니다.
83+
84+
#### 작성 팁
85+
- **시스템 목적**: 이 아키텍처가 해결하는 문제나 목표
86+
- **주요 구성 요소**: 핵심 서비스와 역할
87+
- **데이터 흐름**: 정보가 어떻게 흘러가는지
88+
- **기술적 특징**: 성능, 확장성, 보안 등
89+
- **비즈니스 컨텍스트**: 사용 사례나 요구사항
90+
91+
#### 예시
92+
```
93+
이 다이어그램은 AWS 서비스를 사용한 이미지 처리 파이프라인을 보여줍니다.
94+
95+
주요 구성 요소:
96+
- 사용자가 이미지를 업로드하면 S3에 저장됩니다
97+
- S3 이벤트가 Lambda 함수를 트리거합니다
98+
- Lambda는 이미지 처리를 수행하고 결과를 다른 S3 버킷에 저장합니다
99+
100+
이 시스템의 목적은 자동화된 이미지 처리 워크플로우를 구현하는 것입니다.
101+
102+
추가 정보:
103+
- 처리 대상: 사용자 업로드 이미지
104+
- 처리 방식: 서버리스 아키텍처
105+
- 확장성: 자동 스케일링 지원
106+
```
107+
108+
### 5. 이미지 해석 실행
109+
"이미지 해석" 버튼을 클릭하여 분석을 시작합니다.
110+
111+
## 📊 결과 해석
112+
113+
### 구조화 JSON
114+
분석 결과가 JSON 형태로 출력됩니다:
115+
116+
```json
117+
{
118+
"architecture": {
119+
"services": [
120+
{
121+
"name": "Amazon S3",
122+
"role": "storage",
123+
"description": "이미지 저장소"
124+
}
125+
],
126+
"data_flow": [
127+
{
128+
"from": "User",
129+
"to": "S3",
130+
"description": "이미지 업로드"
131+
}
132+
],
133+
"patterns": ["serverless", "event-driven"]
134+
},
135+
"analysis": {
136+
"complexity": "medium",
137+
"scalability": "high",
138+
"cost_efficiency": "good"
139+
}
140+
}
141+
```
142+
143+
### 상세 해설
144+
LLM이 생성한 자연어 해설이 제공됩니다:
145+
- 아키텍처 개요
146+
- 각 서비스의 역할
147+
- 데이터 흐름 설명
148+
- 장단점 분석
149+
- 개선 제안
150+
151+
## 🎯 사용 사례
152+
153+
### 1. 아키텍처 리뷰
154+
- 기존 다이어그램 분석
155+
- 설계 패턴 식별
156+
- 개선점 도출
157+
158+
### 2. 문서화
159+
- 기술 문서 작성 지원
160+
- 아키텍처 설명 생성
161+
- 팀 내 공유 자료 제작
162+
163+
### 3. 학습 도구
164+
- AWS 서비스 이해
165+
- 아키텍처 패턴 학습
166+
- 모범 사례 연구
167+
168+
## 💡 최적화 팁
169+
170+
### 이미지 품질
171+
- **고해상도**: 800x600 이상 권장
172+
- **명확한 텍스트**: 작은 글씨는 OCR 인식률 저하
173+
- **대비**: 배경과 텍스트의 명확한 구분
174+
175+
### JSON 입력
176+
- **정확한 서비스명**: AWS 공식 서비스명 사용
177+
- **상세한 설명**: 각 서비스의 역할 명시
178+
- **연결 관계**: 데이터 흐름을 명확히 표현
179+
180+
### 컨텍스트 제공
181+
- **구체적 설명**: 추상적 표현보다 구체적 설명
182+
- **비즈니스 목적**: 기술적 특징과 함께 비즈니스 맥락 포함
183+
- **제약사항**: 성능, 비용, 보안 등 고려사항 언급
184+
185+
## 🐛 문제 해결
186+
187+
### OCR 인식률 저하
188+
- 이미지 해상도 확인
189+
- 텍스트와 배경 대비 개선
190+
- 이미지 회전 보정
191+
192+
### 아이콘 인식 오류
193+
- JSON에서 서비스명 수동 수정
194+
- 신뢰도(confidence) 값 조정
195+
- 추가 컨텍스트로 보완
196+
197+
### 분석 결과 부정확
198+
- 더 상세한 컨텍스트 제공
199+
- JSON 정보 보강
200+
- 이미지 품질 개선
201+
202+
## 📞 지원
203+
204+
문제가 발생하면 다음을 확인하세요:
205+
1. 이미지 형식과 품질
206+
2. JSON 형식의 정확성
207+
3. 컨텍스트 정보의 충분성
208+
4. 시스템 로그 확인
209+
210+
자세한 도움이 필요하면 이슈를 등록해주세요.

mini_rag/README_VISION.md

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
# AWS 다이어그램 Vision 분석 기능
2+
3+
## 개요
4+
이 모듈은 AWS 아키텍처 다이어그램을 OpenAI Vision API를 통해 분석하는 기능을 제공합니다.
5+
6+
## 주요 기능
7+
8+
### 1. 이미지 분석 타입
9+
- **AWS 아키텍처**: AWS 서비스 전문 분석 (기본값)
10+
- **Standard**: 일반적인 이미지 분석
11+
12+
### 2. OCR 기능
13+
- 텍스트가 포함된 다이어그램에서 텍스트 추출
14+
- 선택적 기능 (체크박스로 활성화/비활성화)
15+
16+
### 3. 추가 컨텍스트
17+
- 분석에 추가 정보 제공
18+
- 선택적 입력 필드
19+
20+
### 4. 아이콘 탐지 JSON
21+
- 외부 아이콘 탐지 결과 입력
22+
- 선택적 입력 필드
23+
24+
## 사용법
25+
26+
### Vision 전용 앱 실행 (권장)
27+
```bash
28+
python run_vision_app.py
29+
```
30+
31+
### 전체 RAG + Vision 앱 실행
32+
```bash
33+
python gradio_app.py
34+
```
35+
36+
1. **이미지 업로드**: AWS 다이어그램 이미지 업로드
37+
2. **분석 타입 선택**: AWS 아키텍처 또는 Standard
38+
3. **OCR 사용 여부**: 텍스트 추출이 필요한 경우 체크
39+
4. **추가 컨텍스트**: 필요한 경우 추가 정보 입력
40+
5. **아이콘 탐지 JSON**: 외부 탐지 결과가 있는 경우 입력
41+
6. **분석 실행**: "이미지 분석" 버튼 클릭
42+
43+
### 프로그래밍 방식 사용
44+
```python
45+
from core.vision import analyze_image, analyze_image_or_ocr, analyze_aws_architecture
46+
import PIL.Image as Image
47+
48+
# 이미지 로드
49+
image = Image.open("aws_diagram.png")
50+
51+
# 1. 기본 분석
52+
result = analyze_image(image, extra_context="추가 정보")
53+
54+
# 2. OCR 포함 분석
55+
result = analyze_image_or_ocr(image, ocr=True, extra_context="OCR 테스트")
56+
57+
# 3. AWS 아키텍처 전용 분석
58+
result = analyze_aws_architecture(image)
59+
```
60+
61+
## 설치 요구사항
62+
63+
### 필수 패키지
64+
```bash
65+
pip install -r requirements.txt
66+
```
67+
68+
### OCR 기능 사용 시
69+
```bash
70+
# Ubuntu/Debian
71+
sudo apt-get install tesseract-ocr
72+
73+
# macOS
74+
brew install tesseract
75+
76+
# Windows
77+
# https://github.com/UB-Mannheim/tesseract/wiki 에서 설치
78+
```
79+
80+
## 환경 변수 설정
81+
82+
`.env` 파일에 다음을 설정:
83+
```
84+
OPENAI_API_KEY=your_openai_api_key
85+
OPENAI_MODEL=gpt-4o-mini # 또는 gpt-4o
86+
```
87+
88+
## 분석 결과 예시
89+
90+
### 구조화 JSON의 역할
91+
분석 결과에서 **구조화 JSON**은 다음과 같은 역할을 합니다:
92+
93+
1. **정확한 서비스 식별**: AWS 서비스와 리소스를 정확히 분류
94+
2. **구성 요소 정리**: 다이어그램의 모든 구성 요소를 체계적으로 정리
95+
3. **데이터 흐름 파악**: 서비스 간 연결 관계를 명확히 표시
96+
4. **네트워킹 정보**: VPC, 서브넷, 보안 그룹 등 네트워크 구성 정리
97+
5. **저장소 정보**: 데이터베이스, 스토리지 등 데이터 저장소 정보
98+
99+
### AWS 아키텍처 분석 예시
100+
```
101+
{
102+
"services": [
103+
{"name": "Amazon EC2", "count": 2, "labels": ["Web Server", "Application Server"]},
104+
{"name": "Amazon RDS", "count": 1, "labels": ["Database"]}
105+
],
106+
"connections": [
107+
{"from": "EC2", "to": "RDS", "protocol": "MySQL", "notes": "데이터베이스 연결"}
108+
],
109+
"networking": {
110+
"vpcs": ["VPC-12345"],
111+
"subnets": ["Public Subnet", "Private Subnet"],
112+
"security_groups": ["Web SG", "DB SG"]
113+
},
114+
"data_stores": [
115+
{"name": "RDS MySQL", "notes": "관계형 데이터베이스"}
116+
]
117+
}
118+
119+
## 상세 분석
120+
121+
### 구성 요소
122+
- **EC2 인스턴스**: 웹 서버와 애플리케이션 서버 역할
123+
- **RDS**: MySQL 데이터베이스 서비스
124+
125+
### 데이터 흐름
126+
1. 사용자 요청 → EC2 웹 서버
127+
2. EC2 웹 서버 → EC2 애플리케이션 서버
128+
3. EC2 애플리케이션 서버 → RDS 데이터베이스
129+
130+
### 보안 고려사항
131+
- VPC 내부에서 프라이빗 서브넷 사용
132+
- 보안 그룹으로 접근 제어
133+
```
134+
135+
## 문제 해결
136+
137+
### OCR 기능이 작동하지 않는 경우
138+
1. Tesseract가 설치되어 있는지 확인
139+
2. `pytesseract` 패키지가 설치되어 있는지 확인
140+
3. 시스템 PATH에 Tesseract가 포함되어 있는지 확인
141+
142+
### 이미지 분석이 실패하는 경우
143+
1. OpenAI API 키가 올바르게 설정되어 있는지 확인
144+
2. 이미지 형식이 지원되는지 확인 (JPEG, PNG, GIF 등)
145+
3. 이미지 크기가 너무 크지 않은지 확인 (자동으로 리사이즈됨)
146+
147+
### 텍스트박스가 초기화되지 않는 경우
148+
- 이미지를 다시 업로드하면 자동으로 초기화됩니다
149+
- 수동으로 텍스트를 지우고 입력할 수 있습니다
150+
151+
### Gradio 앱 상호작용 문제
152+
- `run_vision_app.py`를 사용하여 Vision 전용 앱을 실행하세요
153+
- 브라우저에서 http://localhost:7860 으로 접속하세요
154+
155+
## 성능 최적화
156+
157+
### 이미지 크기
158+
- 최대 너비 1600px로 자동 리사이즈
159+
- JPEG 품질 90%로 최적화
160+
161+
### 분석 속도
162+
- `gpt-4o-mini` 모델 사용 권장 (빠른 응답)
163+
- `gpt-4o` 모델은 더 정확하지만 느림
164+
165+
## 라이선스
166+
이 프로젝트는 MIT 라이선스 하에 배포됩니다.

mini_rag/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# mini_rag package

0 commit comments

Comments
 (0)