Claude commited on
Commit
c9c9127
Β·
unverified Β·
1 Parent(s): ddd34a5

Add Render.com deployment configuration for online hosting

Browse files

- Add render.yaml for automatic deployment
- Add download_vector_db.sh script to fetch DB from Release
- Add comprehensive DEPLOY_GUIDE.md with step-by-step instructions
- Enable public access for anyone to use the RAG system
- Free tier deployment with automatic HTTPS

Files changed (3) hide show
  1. DEPLOY_GUIDE.md +177 -0
  2. render.yaml +27 -0
  3. scripts/download_vector_db.sh +34 -0
DEPLOY_GUIDE.md ADDED
@@ -0,0 +1,177 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # πŸš€ Render.com 무료 배포 κ°€μ΄λ“œ
2
+
3
+ ## πŸ“‹ 배포 κ°œμš”
4
+
5
+ 이 κ°€μ΄λ“œλŠ” λ°±μ—”λ“œ APIλ₯Ό **Render.com 무료 ν”Œλžœ**에 λ°°ν¬ν•˜μ—¬ λˆ„κ΅¬λ‚˜ μ˜¨λΌμΈμ—μ„œ μ ‘κ·Ό κ°€λŠ₯ν•˜κ²Œ λ§Œλ“œλŠ” λ°©λ²•μž…λ‹ˆλ‹€.
6
+
7
+ ### ✨ Render.com 무료 ν”Œλžœ νŠΉμ§•
8
+ - βœ… **μ™„μ „ 무료** (μ‹ μš©μΉ΄λ“œ λΆˆν•„μš”)
9
+ - βœ… **μžλ™ HTTPS** 제곡
10
+ - βœ… **GitHub 연동** μžλ™ 배포
11
+ - βœ… **μ›” 750μ‹œκ°„** 무료 (좩뢄함!)
12
+ - ⚠️ 15λΆ„ idle ν›„ sleep (첫 μš”μ²­ μ‹œ 10-30초 μ†Œμš”)
13
+
14
+ ---
15
+
16
+ ## πŸ”§ 배포 단계
17
+
18
+ ### 1️⃣ GitHub에 ν‘Έμ‹œ
19
+
20
+ ```bash
21
+ git add .
22
+ git commit -m "Add Render.com deployment configuration"
23
+ git push origin main # λ˜λŠ” ν˜„μž¬ 브랜치
24
+ ```
25
+
26
+ ### 2️⃣ Render.com 계정 생성
27
+
28
+ 1. https://render.com 접속
29
+ 2. **"Get Started for Free"** 클릭
30
+ 3. **GitHub κ³„μ •μœΌλ‘œ 둜그인**
31
+
32
+ ### 3️⃣ μƒˆ Web Service 생성
33
+
34
+ 1. Dashboardμ—μ„œ **"New +"** 클릭
35
+ 2. **"Web Service"** 선택
36
+ 3. **GitHub 리포지토리 μ—°κ²°**:
37
+ - `csjjin2025/Hallucination_and_Deception_for_financial_RAG` 선택
38
+ 4. λ‹€μŒ μ„€μ • μž…λ ₯:
39
+
40
+ ```
41
+ Name: financial-rag-api (λ˜λŠ” μ›ν•˜λŠ” 이름)
42
+ Region: Singapore (κ°€μž₯ κ°€κΉŒμš΄ μ§€μ—­)
43
+ Branch: main (λ˜λŠ” ν˜„μž¬ 브랜치)
44
+ Runtime: Python 3
45
+ Build Command: (μžλ™ 감지됨 - render.yaml μ‚¬μš©)
46
+ Start Command: (μžλ™ 감지됨 - render.yaml μ‚¬μš©)
47
+ Instance Type: Free
48
+ ```
49
+
50
+ ### 4️⃣ ν™˜κ²½λ³€μˆ˜ μ„€μ •
51
+
52
+ **Environment** νƒ­μ—μ„œ λ‹€μŒ λ³€μˆ˜ μΆ”κ°€:
53
+
54
+ ```
55
+ ANTHROPIC_API_KEY=sk-ant-api03-your-key-here
56
+ ```
57
+
58
+ ⚠️ **μ€‘μš”**: Anthropic API ν‚€λ₯Ό κΌ­ μž…λ ₯ν•˜μ„Έμš”!
59
+
60
+ ### 5️⃣ 배포 μ‹œμž‘
61
+
62
+ **"Create Web Service"** ν΄λ¦­ν•˜λ©΄ μžλ™μœΌλ‘œ 배포가 μ‹œμž‘λ©λ‹ˆλ‹€.
63
+
64
+ 배포 둜그λ₯Ό ν™•μΈν•˜λ©° λŒ€κΈ° (μ•½ 5-10λΆ„ μ†Œμš”):
65
+ - νŒ¨ν‚€μ§€ μ„€μΉ˜
66
+ - 벑터 DB λ‹€μš΄λ‘œλ“œ
67
+ - μ„œλ²„ μ‹œμž‘
68
+
69
+ ### 6️⃣ 배포 μ™„λ£Œ 확인
70
+
71
+ 배포가 μ™„λ£Œλ˜λ©΄ λ‹€μŒκ³Ό 같은 URL이 μƒμ„±λ©λ‹ˆλ‹€:
72
+
73
+ ```
74
+ https://financial-rag-api-xxxx.onrender.com
75
+ ```
76
+
77
+ ν—¬μŠ€ 체크 ν…ŒμŠ€νŠΈ:
78
+ ```bash
79
+ curl https://your-app-name.onrender.com/health
80
+ ```
81
+
82
+ 성곡 μ‹œ:
83
+ ```json
84
+ {
85
+ "status": "healthy",
86
+ "vector_store": {
87
+ "total_documents": 15,
88
+ ...
89
+ }
90
+ }
91
+ ```
92
+
93
+ ---
94
+
95
+ ## 🌐 GitHub Pages와 μ—°κ²°
96
+
97
+ ### 방법 1: ν”„λ‘ νŠΈμ—”λ“œμ— API URL ν•˜λ“œμ½”λ”© (ꢌμž₯)
98
+
99
+ GitHub Pages의 `index.html` λ˜λŠ” JavaScript νŒŒμΌμ—μ„œ:
100
+
101
+ ```javascript
102
+ // κΈ°λ³Έ API URL μ„€μ •
103
+ const DEFAULT_API_URL = "https://your-app-name.onrender.com";
104
+ ```
105
+
106
+ ### 방법 2: μ‚¬μš©μžκ°€ 직접 μž…λ ₯
107
+
108
+ ν˜„μž¬μ²˜λŸΌ μ‚¬μš©μžκ°€ API URL을 μž…λ ₯ν•˜λ„λ‘ μœ μ§€ν•˜λ˜,
109
+ placeholder에 κΈ°λ³Έ URL ν‘œμ‹œ:
110
+
111
+ ```html
112
+ <input
113
+ type="text"
114
+ placeholder="https://your-app-name.onrender.com"
115
+ id="api-url-input"
116
+ >
117
+ ```
118
+
119
+ ---
120
+
121
+ ## πŸ”„ μžλ™ μ—…λ°μ΄νŠΈ μ„€μ •
122
+
123
+ GitHub에 μ½”λ“œλ₯Ό ν‘Έμ‹œν•˜λ©΄ **μžλ™μœΌλ‘œ 재배포**λ©λ‹ˆλ‹€:
124
+
125
+ ```bash
126
+ git add .
127
+ git commit -m "Update backend"
128
+ git push origin main
129
+ ```
130
+
131
+ Render.com이 μžλ™μœΌλ‘œ κ°μ§€ν•˜κ³  μž¬λ°°ν¬ν•©λ‹ˆλ‹€! πŸŽ‰
132
+
133
+ ---
134
+
135
+ ## ⚠️ μ£Όμ˜μ‚¬ν•­
136
+
137
+ ### 1. Cold Start (첫 μš”μ²­ μ§€μ—°)
138
+ 무료 ν”Œλžœμ€ 15λΆ„ idle ν›„ sleep μƒνƒœκ°€ λ©λ‹ˆλ‹€.
139
+ 첫 μš”μ²­ μ‹œ 10-30초 μ†Œμš”λ  수 μžˆμŠ΅λ‹ˆλ‹€.
140
+
141
+ **ν•΄κ²°μ±…**:
142
+ - Render.com의 **Cron Job** κΈ°λŠ₯으둜 5λΆ„λ§ˆλ‹€ health check
143
+ - λ˜λŠ” μ—…κ·Έλ ˆμ΄λ“œ ($7/μ›”)
144
+
145
+ ### 2. 벑터 DB 크기 μ œν•œ
146
+ 무료 ν”Œλžœμ€ μŠ€ν† λ¦¬μ§€ μ œν•œμ΄ μžˆμŠ΅λ‹ˆλ‹€.
147
+ - ν˜„μž¬: 15개 ν…ŒμŠ€νŠΈ λ¬Έμ„œ (맀우 μž‘μŒ)
148
+ - 전체 DB: μ••μΆ• μ‹œ ~500MB (무료 ν”Œλžœ κ°€λŠ₯)
149
+
150
+ ### 3. API ν‚€ λ³΄μ•ˆ
151
+ - βœ… ν™˜κ²½λ³€μˆ˜λ‘œ μ„€μ • (μ•ˆμ „)
152
+ - ❌ μ½”λ“œμ— ν•˜λ“œμ½”λ”© κΈˆμ§€
153
+
154
+ ---
155
+
156
+ ## πŸ“Š 배포 ν›„ λͺ¨λ‹ˆν„°λ§
157
+
158
+ ### Render.com Dashboardμ—μ„œ 확인:
159
+ - **Logs**: μ‹€μ‹œκ°„ 둜그 확인
160
+ - **Metrics**: CPU, λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰
161
+ - **Events**: 배포 이λ ₯
162
+
163
+ ### API μ—”λ“œν¬μΈνŠΈ:
164
+ - Health Check: `GET /health`
165
+ - API Docs: `GET /docs`
166
+ - Query: `POST /query`
167
+
168
+ ---
169
+
170
+ ## πŸŽ‰ μ™„λ£Œ!
171
+
172
+ 이제 GitHub Pagesμ—μ„œ:
173
+ 1. https://csjjin2025.github.io/Hallucination_and_Deception_for_financial_RAG/ 접속
174
+ 2. API URL μž…λ ₯: `https://your-app-name.onrender.com`
175
+ 3. 질문 μž…λ ₯ν•˜κ³  ν…ŒμŠ€νŠΈ!
176
+
177
+ **μ „ 세계 λˆ„κ΅¬λ‚˜ μ ‘κ·Ό κ°€λŠ₯ν•©λ‹ˆλ‹€!** 🌍
render.yaml ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ services:
2
+ - type: web
3
+ name: financial-rag-api
4
+ runtime: python
5
+ buildCommand: |
6
+ pip install -r requirements.txt
7
+ chmod +x scripts/download_vector_db.sh
8
+ ./scripts/download_vector_db.sh
9
+ startCommand: uvicorn app.main:app --host 0.0.0.0 --port $PORT
10
+ envVars:
11
+ - key: ANTHROPIC_API_KEY
12
+ sync: false # μˆ˜λ™μœΌλ‘œ μ„€μ • ν•„μš”
13
+ - key: EMBEDDING_MODEL
14
+ value: sentence-transformers
15
+ - key: EMBEDDING_MODEL_NAME
16
+ value: all-MiniLM-L6-v2
17
+ - key: CHROMA_PERSIST_DIRECTORY
18
+ value: ./data/chroma_db
19
+ - key: COLLECTION_NAME
20
+ value: financial_papers
21
+ - key: PDF_SOURCE_PATH
22
+ value: ./data/pdfs
23
+ - key: API_HOST
24
+ value: 0.0.0.0
25
+ - key: API_PORT
26
+ value: $PORT
27
+ healthCheckPath: /health
scripts/download_vector_db.sh ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ # 벑터 DB μžλ™ λ‹€μš΄λ‘œλ“œ 슀크립트 (Render.com 배포용)
3
+
4
+ set -e
5
+
6
+ echo "πŸ” Checking if vector DB exists..."
7
+
8
+ if [ -d "./data/chroma_db" ] && [ "$(ls -A ./data/chroma_db)" ]; then
9
+ echo "βœ… Vector DB already exists. Skipping download."
10
+ exit 0
11
+ fi
12
+
13
+ echo "πŸ“₯ Downloading vector DB from GitHub Release..."
14
+
15
+ # 디렉토리 생성
16
+ mkdir -p ./data
17
+
18
+ # GitHub Releaseμ—μ„œ λ‹€μš΄λ‘œλ“œ (μ‹€νŒ¨ν•΄λ„ 계속 μ§„ν–‰)
19
+ curl -L -o ./data/chroma_db.tar.gz \
20
+ "https://github.com/csjjin2025/Hallucination_and_Deception_for_financial_RAG/releases/download/v1.0/chroma_db.tar.gz" \
21
+ || echo "⚠️ Failed to download from Release. Using test DB instead."
22
+
23
+ # λ‹€μš΄λ‘œλ“œ 성곡 μ‹œ μ••μΆ• ν•΄μ œ
24
+ if [ -f "./data/chroma_db.tar.gz" ] && [ -s "./data/chroma_db.tar.gz" ]; then
25
+ echo "πŸ“¦ Extracting vector DB..."
26
+ tar -xzf ./data/chroma_db.tar.gz -C ./data/
27
+ rm ./data/chroma_db.tar.gz
28
+ echo "βœ… Vector DB extracted successfully!"
29
+ else
30
+ echo "⚠️ Download failed or file is empty. Creating test DB..."
31
+ python scripts/quick_setup_test_db.py
32
+ fi
33
+
34
+ echo "✨ Vector DB setup complete!"