soyailabs / HUGGINGFACE_DEPLOY.md
SOY NV AI
Add PostgreSQL support and update database configuration for data persistence in Hugging Face Spaces
9f9640b
# Hugging Face Spaces ๋ฐฐํฌ ๊ฐ€์ด๋“œ
์ด ๊ฐ€์ด๋“œ๋Š” SOY NV AI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ Hugging Face Spaces์— ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
## ์‚ฌ์ „ ์ค€๋น„
1. Hugging Face ๊ณ„์ • ์ƒ์„ฑ ๋ฐ ๋กœ๊ทธ์ธ
2. Hugging Face Spaces ์ƒ์„ฑ
## ๋ฐฐํฌ ๋‹จ๊ณ„
### 1. Hugging Face Spaces ์ƒ์„ฑ
1. [Hugging Face Spaces](https://huggingface.co/spaces)์— ์ ‘์†
2. "Create new Space" ํด๋ฆญ
3. ๋‹ค์Œ ์ •๋ณด ์ž…๋ ฅ:
- **Space name**: ์›ํ•˜๋Š” ์ด๋ฆ„ (์˜ˆ: `soy-nv-ai`)
- **SDK**: `Docker` ์„ ํƒ
- **Docker template**: **Blank** ์„ ํƒ (๋˜๋Š” ๋น„์›Œ๋‘๊ธฐ) โœ…
- ์ด๋ฏธ `Dockerfile`์„ ์ƒ์„ฑํ–ˆ์œผ๋ฏ€๋กœ blank ํ…œํ”Œ๋ฆฟ์„ ์„ ํƒํ•˜์„ธ์š”
- **Hardware**: ํ•„์š”์— ๋”ฐ๋ผ ์„ ํƒ (CPU ๊ธฐ๋ณธ, GPU ํ•„์š” ์‹œ ์„ ํƒ)
- **Visibility**: Public ๋˜๋Š” Private ์„ ํƒ
### 2. ํŒŒ์ผ ์—…๋กœ๋“œ
๋‹ค์Œ ํŒŒ์ผ๋“ค์„ Hugging Face Spaces์— ์—…๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
#### ํ•„์ˆ˜ ํŒŒ์ผ
- `app.py` - Hugging Face Spaces ์ง„์ž…์ 
- `requirements.txt` - Python ํŒจํ‚ค์ง€ ์˜์กด์„ฑ
- `README.md` - ํ”„๋กœ์ ํŠธ ์„ค๋ช…
- `app/` - ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ ๋””๋ ‰ํ† ๋ฆฌ
- `templates/` - HTML ํ…œํ”Œ๋ฆฟ ๋””๋ ‰ํ† ๋ฆฌ
- `static/` - ์ •์  ํŒŒ์ผ ๋””๋ ‰ํ† ๋ฆฌ
#### ์„ ํƒ์  ํŒŒ์ผ
- `.gitignore` - Git ๋ฌด์‹œ ํŒŒ์ผ
- `.env.example` - ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์˜ˆ์ œ (์‹ค์ œ `.env`๋Š” ์—…๋กœ๋“œํ•˜์ง€ ์•Š์Œ)
### 3. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •
Hugging Face Spaces์˜ Settings > Repository secrets์—์„œ ๋‹ค์Œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜์„ธ์š”:
#### ํ•„์ˆ˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜
- `SECRET_KEY`: Flask ์‹œํฌ๋ฆฟ ํ‚ค (๋žœ๋ค ๋ฌธ์ž์—ด ์ƒ์„ฑ)
#### ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™˜๊ฒฝ ๋ณ€์ˆ˜ (๊ถŒ์žฅ: ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)
- `DATABASE_URL`: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ URL
- **PostgreSQL (๊ถŒ์žฅ)**: `postgresql://user:password@host:port/database`
- ๋ฌด๋ฃŒ PostgreSQL ์ œ๊ณต ์„œ๋น„์Šค: [Supabase](https://supabase.com/), [Neon](https://neon.tech/), [Railway](https://railway.app/)
- **SQLite (๊ธฐ๋ณธ๊ฐ’)**: ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ SQLite ์‚ฌ์šฉ
- โš ๏ธ **์ฃผ์˜**: Hugging Face Spaces๋Š” ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ SQLite ์‚ฌ์šฉ ์‹œ ์žฌ์‹œ์ž‘ ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
- ์˜๊ตฌ ์ €์žฅ์ด ํ•„์š”ํ•˜๋ฉด ๋ฐ˜๋“œ์‹œ ์™ธ๋ถ€ PostgreSQL์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
#### ์„ ํƒ์  ํ™˜๊ฒฝ ๋ณ€์ˆ˜
- `GEMINI_API_KEY`: Google Gemini API ํ‚ค (Gemini ์‚ฌ์šฉ ์‹œ)
- `OLLAMA_BASE_URL`: Ollama ์„œ๋ฒ„ URL (๊ธฐ๋ณธ๊ฐ’: http://localhost:11434)
- `EMBEDDING_MODEL_NAME`: ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ ์ด๋ฆ„
- `RERANKER_MODEL_NAME`: ๋ฆฌ๋žญ์ปค ๋ชจ๋ธ ์ด๋ฆ„
### 4. Dockerfile ํ™•์ธ
โœ… **์ด๋ฏธ ์ƒ์„ฑ๋จ**: ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— `Dockerfile`์ด ์ด๋ฏธ ์ƒ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•„์š”ํ•œ ๊ฒฝ์šฐ `Dockerfile`์„ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
### 5. README.md ์ž‘์„ฑ
Hugging Face Spaces์šฉ README.md๋ฅผ ์ž‘์„ฑํ•˜์„ธ์š”:
```markdown
---
title: SOY NV AI
emoji: ๐Ÿ“š
colorFrom: blue
colorTo: purple
sdk: docker
pinned: false
---
# SOY NV AI - ์›น์†Œ์„ค ์ž‘ํ’ˆ ๊ฐœ๋ฐœ ์–ด์‹œ์Šคํ„ดํŠธ
AI๋ฅผ ํ™œ์šฉํ•œ ์›น์†Œ์„ค ์ž‘ํ’ˆ ๊ฐœ๋ฐœ์„ ์ง€์›ํ•˜๋Š” ์–ด์‹œ์Šคํ„ดํŠธ์ž…๋‹ˆ๋‹ค.
## ๊ธฐ๋Šฅ
- ์›น์†Œ์„ค ํŒŒ์ผ ์—…๋กœ๋“œ ๋ฐ ๋ถ„์„
- AI ๊ธฐ๋ฐ˜ ์ž‘ํ’ˆ ๋ถ„์„ ๋ฐ ์š”์•ฝ
- ์บ๋ฆญํ„ฐ ๊ด€๊ณ„ ๊ทธ๋ž˜ํ”„ ์ถ”์ถœ
- ํšŒ์ฐจ๋ณ„ ๋ถ„์„
## ์‚ฌ์šฉ ๋ฐฉ๋ฒ•
1. ๋กœ๊ทธ์ธ ๋˜๋Š” ํšŒ์›๊ฐ€์ž…
2. ์›น์†Œ์„ค ํŒŒ์ผ ์—…๋กœ๋“œ
3. AI ๋ถ„์„ ์‹คํ–‰
4. ๊ฒฐ๊ณผ ํ™•์ธ
## ํ™˜๊ฒฝ ๋ณ€์ˆ˜
๋‹ค์Œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:
- `SECRET_KEY`: Flask ์‹œํฌ๋ฆฟ ํ‚ค
- `GEMINI_API_KEY`: Google Gemini API ํ‚ค (์„ ํƒ์‚ฌํ•ญ)
```
## ์ฃผ์˜์‚ฌํ•ญ
### 1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
- Hugging Face Spaces๋Š” ์ž„์‹œ ์ €์žฅ์†Œ์ด๋ฏ€๋กœ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์˜๊ตฌ ์ €์žฅ์†Œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
- ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋Š” ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(PostgreSQL, MySQL ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ •๊ธฐ์ ์œผ๋กœ ๋ฐฑ์—…ํ•˜์„ธ์š”.
### 2. ํŒŒ์ผ ์—…๋กœ๋“œ
- ์—…๋กœ๋“œ๋œ ํŒŒ์ผ์€ Spaces ์žฌ์‹œ์ž‘ ์‹œ ์‚ญ์ œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
- ์˜๊ตฌ ์ €์žฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์™ธ๋ถ€ ์Šคํ† ๋ฆฌ์ง€(S3, Google Cloud Storage ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
### 3. ๋ฆฌ์†Œ์Šค ์ œํ•œ
- Hugging Face Spaces๋Š” ๋ฌด๋ฃŒ ํ‹ฐ์–ด์—์„œ ๋ฆฌ์†Œ์Šค ์ œํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
- ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ ์ฒ˜๋ฆฌ๋‚˜ ๊ธด ์ž‘์—…์€ ํƒ€์ž„์•„์›ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
### 4. Ollama ์‚ฌ์šฉ
- Ollama๋Š” ๋กœ์ปฌ ์„œ๋ฒ„์ด๋ฏ€๋กœ Hugging Face Spaces์—์„œ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
- ์™ธ๋ถ€ Ollama ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, Hugging Face์˜ ๋ชจ๋ธ API๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
## ๋ฐฐํฌ ํ›„ ํ™•์ธ
1. Spaces ํŽ˜์ด์ง€์—์„œ "Logs" ํƒญ์„ ํ™•์ธํ•˜์—ฌ ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธ
2. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ •์ƒ์ ์œผ๋กœ ๋กœ๋“œ๋˜๋Š”์ง€ ํ™•์ธ
3. ๋กœ๊ทธ์ธ ๋ฐ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ
## ๋ฌธ์ œ ํ•ด๊ฒฐ
### ๋นŒ๋“œ ์‹คํŒจ
- `requirements.txt`์˜ ํŒจํ‚ค์ง€ ๋ฒ„์ „ ํ™•์ธ
- ๋กœ๊ทธ์—์„œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ ํ™•์ธ
### ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜
- ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฒฝ๋กœ ๋ฐ ๊ถŒํ•œ ํ™•์ธ
### ์„ฑ๋Šฅ ๋ฌธ์ œ
- ๋” ๋†’์€ ํ•˜๋“œ์›จ์–ด ํ‹ฐ์–ด๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ๊ณ ๋ ค
- ๋ถˆํ•„์š”ํ•œ ์˜์กด์„ฑ ์ œ๊ฑฐ
## ์ถ”๊ฐ€ ๋ฆฌ์†Œ์Šค
- [Hugging Face Spaces ๋ฌธ์„œ](https://huggingface.co/docs/hub/spaces)
- [Docker ๋ฐฐํฌ ๊ฐ€์ด๋“œ](https://huggingface.co/docs/hub/spaces-sdks-docker)